Revision: 201031
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 09:40:26 +0300
changeset 14 896e9dbc5f19
parent 12 608f67c22514
child 15 065198191975
Revision: 201031 Kit: 201033
internetradio2.0/actionhandlerinc/iractionhandler.h
internetradio2.0/actionhandlerinc/iractionhandlerdefs.h
internetradio2.0/actionhandlersrc/iractionhandler.cpp
internetradio2.0/activeidleenginc/iractiveidleeng.h
internetradio2.0/activeidleenginc/iractiveidleengnotifyhandler.h
internetradio2.0/activeidleenginc/iractiveidleengpubsub.h
internetradio2.0/activeidleenginc/iractiveidleengpubsubnotifyhandler.h
internetradio2.0/activeidleengsrc/iractiveidleeng.cpp
internetradio2.0/activeidleengsrc/iractiveidleengpubsub.cpp
internetradio2.0/activeidleinc/iractiveidle.h
internetradio2.0/activeidleinc/iractiveidlestatedetector.h
internetradio2.0/activeidleinc/irplugincontentmodel.h
internetradio2.0/activeidlesrc/iractiveidle.cpp
internetradio2.0/activeidlesrc/iractiveidlemain.cpp
internetradio2.0/activeidlesrc/iractiveidlestatedetector.cpp
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.css
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.dtd
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.xml
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_dat.dat
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_dat_reversed.dat
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_loc.dat
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_reversed.css
internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_reversed.xml
internetradio2.0/activeidlethemes/themes/ActiveIdle/iractiveidle.mif
internetradio2.0/activeidlethemes/themes/ActiveIdle/qsn_fr_popup_sub_mask_icon.svg
internetradio2.0/activeidlethemes/themes/ActiveIdle/vractiveidle.mif
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.css
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.dtd
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.xml
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_dat.dat
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_loc.dat
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_reversed.css
internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_reversed.xml
internetradio2.0/activeidlethemes/themes/ClassicIdle/irclassicidle.mif
internetradio2.0/activeidlethemes/themes/ClassicIdle/vrclassicidle.mif
internetradio2.0/activeidlethemes/themes/iractiveidlemif.bat
internetradio2.0/aif/qgn_menu_irradio.svg
internetradio2.0/bmarm/iractiveidleengineu.def
internetradio2.0/bmarm/ircachemgmtu.def
internetradio2.0/bmarm/ircommandchannelu.def
internetradio2.0/bmarm/irdataprovideru.def
internetradio2.0/bmarm/irdatastructuresu.def
internetradio2.0/bmarm/irfavoritesdbu.def
internetradio2.0/bmarm/irgeneralsettings200u.def
internetradio2.0/bmarm/irlogutility.def
internetradio2.0/bmarm/irmcpplugin100u.def
internetradio2.0/bmarm/irnetworkcontrolleru.def
internetradio2.0/bmarm/irsessionlogu.def
internetradio2.0/bmarm/irsettingsu.def
internetradio2.0/bmarm/irsettingsviewu.def
internetradio2.0/bmarm/irsonghistoryu.def
internetradio2.0/bmarm/irstreamsourceu.def
internetradio2.0/bmarm/iruicontrolsu.def
internetradio2.0/bmarm/irxmlparseru.def
internetradio2.0/bmarm/isdsclientinterfaceu.def
internetradio2.0/bwinscw/iractiveidleengineu.def
internetradio2.0/bwinscw/ircachemgmtu.def
internetradio2.0/bwinscw/ircommandchannelu.def
internetradio2.0/bwinscw/irdataprovideru.def
internetradio2.0/bwinscw/irdatastructuresu.def
internetradio2.0/bwinscw/irfavoritesdbu.def
internetradio2.0/bwinscw/irgeneralsettings200u.def
internetradio2.0/bwinscw/irlogutility.def
internetradio2.0/bwinscw/irmcpplugin100u.def
internetradio2.0/bwinscw/irnetworkcontrolleru.def
internetradio2.0/bwinscw/irsessionlogu.def
internetradio2.0/bwinscw/irsettingsu.def
internetradio2.0/bwinscw/irsettingsviewu.def
internetradio2.0/bwinscw/irsonghistoryu.def
internetradio2.0/bwinscw/irstreamsourceu.def
internetradio2.0/bwinscw/iruicontrolsu.def
internetradio2.0/bwinscw/irxmlparseru.def
internetradio2.0/bwinscw/isdsclientinterfaceu.def
internetradio2.0/cachemgmtinc/ircachecleanup.h
internetradio2.0/cachemgmtinc/ircachemgmt.h
internetradio2.0/cachemgmtinc/ircacheobserver.h
internetradio2.0/cachemgmtsrc/ircachecleanup.cpp
internetradio2.0/cachemgmtsrc/ircachemgmt.cpp
internetradio2.0/cenrep/2000b499.txt
internetradio2.0/cenrep/cenrep_keys.pm
internetradio2.0/cenrep/cenrep_keys_syntax_checker.pl
internetradio2.0/cenrep/cenrep_start.ini
internetradio2.0/cenrep/excel_support.pm
internetradio2.0/cenrep/gather_cenrep_to_storable.pl
internetradio2.0/cenrep/generate_cenrep_inifile.pl
internetradio2.0/cenrep/keys_internetradio.xls
internetradio2.0/cenrep/readme.txt
internetradio2.0/commandchannelinc/ircontrolparams.h
internetradio2.0/commandchannelinc/irctrlcmdobserver.h
internetradio2.0/commandchannelinc/irctrlcommand.h
internetradio2.0/commandchannelsrc/irctrlcmdobserver.cpp
internetradio2.0/conf/internetradio.confml
internetradio2.0/conf/internetradio_2000B499.crml
internetradio2.0/dataproviderinc/irdataprovider.h
internetradio2.0/dataproviderinc/irdataproviderconstants.h
internetradio2.0/dataproviderinc/irdataproviderobserver.h
internetradio2.0/dataproviderinc/irdataprovidertimer.h
internetradio2.0/dataproviderinc/irhttpdataprovider.h
internetradio2.0/dataproviderinc/irhttpdataproviderobserver.h
internetradio2.0/dataproviderinc/irhttppost.h
internetradio2.0/dataproviderinc/irhttprequestdata.h
internetradio2.0/dataproviderinc/irlogodownloadengine.h
internetradio2.0/dataproviderinc/mlogodownloadobserver.h
internetradio2.0/dataprovidersrc/irdataprovider.cpp
internetradio2.0/dataprovidersrc/irdataprovidertimer.cpp
internetradio2.0/dataprovidersrc/irhttpdataprovider.cpp
internetradio2.0/dataprovidersrc/irhttppost.cpp
internetradio2.0/dataprovidersrc/irlogodownloadengine.cpp
internetradio2.0/datastructuresinc/iradvertisement.h
internetradio2.0/datastructuresinc/irbrowsecatagoryitems.h
internetradio2.0/datastructuresinc/irbrowsechannelitems.h
internetradio2.0/datastructuresinc/irchannelserverurl.h
internetradio2.0/datastructuresinc/irisdspreset.h
internetradio2.0/datastructuresinc/irlastplayedsongs.h
internetradio2.0/datastructuresinc/irotaupdate.h
internetradio2.0/datastructuressrc/iradvertisement.cpp
internetradio2.0/datastructuressrc/irbrowsecatagoryitems.cpp
internetradio2.0/datastructuressrc/irbrowsechannelitems.cpp
internetradio2.0/datastructuressrc/irchannelserverurl.cpp
internetradio2.0/datastructuressrc/irisdspreset.cpp
internetradio2.0/datastructuressrc/irlastplayedsongs.cpp
internetradio2.0/datastructuressrc/irotaupdate.cpp
internetradio2.0/favoritesdbinc/irfavoritesdb.h
internetradio2.0/favoritesdbsrc/irfavoritesdb.cpp
internetradio2.0/filerecognizerinc/irrecognizer.h
internetradio2.0/filerecognizersrc/irrecognizer.cpp
internetradio2.0/generalsettingsinc/irgeneralsettingsview.h
internetradio2.0/generalsettingssrc/irgeneralsettingsimplementationtable.cpp
internetradio2.0/generalsettingssrc/irgeneralsettingsview.cpp
internetradio2.0/group/bld.inf
internetradio2.0/group/bld_loc.bat
internetradio2.0/group/common.mmp
internetradio2.0/group/copyradiothemes.bat
internetradio2.0/group/iconlist.txt
internetradio2.0/group/installradiothemes.bat
internetradio2.0/group/internetradio.mmp
internetradio2.0/group/internetradio_aif.mk
internetradio2.0/group/internetradioconfigurationflags.hrh
internetradio2.0/group/internetradioedwinskin.mk
internetradio2.0/group/internetradioiconsskin.mk
internetradio2.0/group/iractionhandler.mmp
internetradio2.0/group/iractiveidle.mmp
internetradio2.0/group/iractiveidleengine.mmp
internetradio2.0/group/ircachemgmt.mmp
internetradio2.0/group/ircommandchannel.mmp
internetradio2.0/group/irdataprovider.mmp
internetradio2.0/group/irdatastructures.mmp
internetradio2.0/group/irfavoritesdb.mmp
internetradio2.0/group/irgeneralsettings.mmp
internetradio2.0/group/irmcpplugin.mmp
internetradio2.0/group/irmediaengine.mmp
internetradio2.0/group/irnetworkcontroller.mmp
internetradio2.0/group/irrecognizer.mmp
internetradio2.0/group/irrfsplugin.mmp
internetradio2.0/group/irsessionlog.mmp
internetradio2.0/group/irsettings.mmp
internetradio2.0/group/irsettingsview.mmp
internetradio2.0/group/irsonghistory.mmp
internetradio2.0/group/irstreamsource.mmp
internetradio2.0/group/irxmlparser.mmp
internetradio2.0/group/isdsclient.mmp
internetradio2.0/group/presetplugin.mmp
internetradio2.0/help/iraap.hlp
internetradio2.0/help/iraap.hlp.hrh
internetradio2.0/help/iraap_hlp.pdf
internetradio2.0/help/irapp_hlp.helpsource.htm
internetradio2.0/inc/ircmdlineparams.h
internetradio2.0/inc/irconnectionroamingobserver.h
internetradio2.0/inc/irdebug.h
internetradio2.0/inc/irinternalcrkeys.h
internetradio2.0/inc/irpubsubkeys.h
internetradio2.0/include/ircmdlineparams.h
internetradio2.0/include/irconnectionroamingobserver.h
internetradio2.0/include/irdebug.h
internetradio2.0/include/irinternalcrkeys.h
internetradio2.0/include/irpubsubkeys.h
internetradio2.0/install/internetradiostub.pkg
internetradio2.0/install/ir_package.pkg
internetradio2.0/install/ir_package_deb.pkg
internetradio2.0/ircachemgmt/bmarm/ircachemgmtu.def
internetradio2.0/ircachemgmt/bwinscw/ircachemgmtu.def
internetradio2.0/ircachemgmt/group/bld.inf
internetradio2.0/ircachemgmt/group/ircachemgmt.mmp
internetradio2.0/ircachemgmt/inc/ircachecleanup.h
internetradio2.0/ircachemgmt/inc/ircachemgmt.h
internetradio2.0/ircachemgmt/inc/ircacheobserver.h
internetradio2.0/ircachemgmt/src/ircachecleanup.cpp
internetradio2.0/ircachemgmt/src/ircachemgmt.cpp
internetradio2.0/ircommon/bmarm/irdatastructuresu.def
internetradio2.0/ircommon/bwinscw/irdatastructuresu.def
internetradio2.0/ircommon/group/bld.inf
internetradio2.0/ircommon/group/ircommon.mmp
internetradio2.0/ircommon/inc/iradvertisement.h
internetradio2.0/ircommon/inc/irbrowsecatagoryitems.h
internetradio2.0/ircommon/inc/irbrowsechannelitems.h
internetradio2.0/ircommon/inc/irchannelserverurl.h
internetradio2.0/ircommon/inc/irisdspreset.h
internetradio2.0/ircommon/inc/irlastplayedsongs.h
internetradio2.0/ircommon/inc/irotaupdate.h
internetradio2.0/ircommon/src/iradvertisement.cpp
internetradio2.0/ircommon/src/irbrowsecatagoryitems.cpp
internetradio2.0/ircommon/src/irbrowsechannelitems.cpp
internetradio2.0/ircommon/src/irchannelserverurl.cpp
internetradio2.0/ircommon/src/irisdspreset.cpp
internetradio2.0/ircommon/src/irlastplayedsongs.cpp
internetradio2.0/ircommon/src/irotaupdate.cpp
internetradio2.0/irdataprovider/bmarm/irdataprovideru.def
internetradio2.0/irdataprovider/bwinscw/irdataprovideru.def
internetradio2.0/irdataprovider/group/bld.inf
internetradio2.0/irdataprovider/group/irdataprovider.mmp
internetradio2.0/irdataprovider/inc/irdataprovider.h
internetradio2.0/irdataprovider/inc/irdataproviderconstants.h
internetradio2.0/irdataprovider/inc/irdataproviderobserver.h
internetradio2.0/irdataprovider/inc/irdataprovidertimer.h
internetradio2.0/irdataprovider/inc/irhttpdataprovider.h
internetradio2.0/irdataprovider/inc/irhttpdataproviderobserver.h
internetradio2.0/irdataprovider/inc/irhttppost.h
internetradio2.0/irdataprovider/inc/irhttprequestdata.h
internetradio2.0/irdataprovider/inc/irlogodownloadengine.h
internetradio2.0/irdataprovider/inc/mlogodownloadobserver.h
internetradio2.0/irdataprovider/src/irdataprovider.cpp
internetradio2.0/irdataprovider/src/irdataprovidertimer.cpp
internetradio2.0/irdataprovider/src/irhttpdataprovider.cpp
internetradio2.0/irdataprovider/src/irhttppost.cpp
internetradio2.0/irdataprovider/src/irlogodownloadengine.cpp
internetradio2.0/irfavoritesdb/bmarm/irfavoritesdbu.def
internetradio2.0/irfavoritesdb/bwinscw/irfavoritesdbu.def
internetradio2.0/irfavoritesdb/group/bld.inf
internetradio2.0/irfavoritesdb/group/irfavoritesdb.mmp
internetradio2.0/irfavoritesdb/inc/irfavoritesdb.h
internetradio2.0/irfavoritesdb/src/irfavoritesdb.cpp
internetradio2.0/irfilerecognizer/group/bld.inf
internetradio2.0/irfilerecognizer/group/irrecognizer.mmp
internetradio2.0/irfilerecognizer/inc/irrecognizer.h
internetradio2.0/irfilerecognizer/resources/2000b4a9.rss
internetradio2.0/irfilerecognizer/src/irrecognizer.cpp
internetradio2.0/irisdsclient/bmarm/isdsclientinterfaceu.def
internetradio2.0/irisdsclient/bwinscw/isdsclientinterfaceu.def
internetradio2.0/irisdsclient/group/bld.inf
internetradio2.0/irisdsclient/group/isdsclient.mmp
internetradio2.0/irisdsclient/inc/irlanguagemapper.h
internetradio2.0/irisdsclient/inc/isdsclientdll.h
internetradio2.0/irisdsclient/inc/misdsresponseobserver.h
internetradio2.0/irisdsclient/src/irisdsclient.cpp
internetradio2.0/irisdsclient/src/irlanguagemapper.cpp
internetradio2.0/irnetworkcontroller/bmarm/irnetworkcontrolleru.def
internetradio2.0/irnetworkcontroller/bwinscw/irnetworkcontrolleru.def
internetradio2.0/irnetworkcontroller/group/bld.inf
internetradio2.0/irnetworkcontroller/group/irnetworkcontroller.mmp
internetradio2.0/irnetworkcontroller/inc/iractivenetworkobserver.h
internetradio2.0/irnetworkcontroller/inc/irdatatransferobserver.h
internetradio2.0/irnetworkcontroller/inc/irdatatransfertracker.h
internetradio2.0/irnetworkcontroller/inc/irfilteredapreader.h
internetradio2.0/irnetworkcontroller/inc/irnetworkcontroller.h
internetradio2.0/irnetworkcontroller/inc/irnetworkcontrollerobserver.h
internetradio2.0/irnetworkcontroller/inc/irnetworkobserver.h
internetradio2.0/irnetworkcontroller/src/irdatatransfertracker.cpp
internetradio2.0/irnetworkcontroller/src/irfilteredapreader.cpp
internetradio2.0/irnetworkcontroller/src/irnetworkcontroller.cpp
internetradio2.0/irnetworkcontroller/src/irnetworkobserver.cpp
internetradio2.0/irpresetplugin/bmarm/irpresetpluginu.def
internetradio2.0/irpresetplugin/bwinscw/irpresetpluginu.def
internetradio2.0/irpresetplugin/data/irpresetplugin.rss
internetradio2.0/irpresetplugin/group/bld.inf
internetradio2.0/irpresetplugin/group/irpresetplugin.mmp
internetradio2.0/irpresetplugin/inc/irpreset.h
internetradio2.0/irpresetplugin/inc/irpresetimpl.h
internetradio2.0/irpresetplugin/src/irpresetimpl.cpp
internetradio2.0/irpresetplugin/src/irpresetpluginproxy.cpp
internetradio2.0/irrfsplugin/group/bld.inf
internetradio2.0/irrfsplugin/group/irrfsplugin.mmp
internetradio2.0/irrfsplugin/inc/irrfsplugin.h
internetradio2.0/irrfsplugin/src/irrfsplugin.cpp
internetradio2.0/irrfsplugin/src/irrfspluginproxy.cpp
internetradio2.0/irsessionlog/bmarm/irsessionlogu.def
internetradio2.0/irsessionlog/bwinscw/irsessionlogu.def
internetradio2.0/irsessionlog/group/bld.inf
internetradio2.0/irsessionlog/group/irsessionlog.mmp
internetradio2.0/irsessionlog/inc/irdbstatusobserver.h
internetradio2.0/irsessionlog/inc/irnmslogdb.h
internetradio2.0/irsessionlog/inc/irnmslogger.h
internetradio2.0/irsessionlog/inc/irphoneinfo.h
internetradio2.0/irsessionlog/inc/irreportsettings.h
internetradio2.0/irsessionlog/inc/irsessiondb.h
internetradio2.0/irsessionlog/inc/irsessionlogger.h
internetradio2.0/irsessionlog/inc/irsessionloggerutility.h
internetradio2.0/irsessionlog/inc/irsessionparams.h
internetradio2.0/irsessionlog/inc/mirphoneinfoobserver.h
internetradio2.0/irsessionlog/inc/mirsessionobserver.h
internetradio2.0/irsessionlog/src/irnmslogdb.cpp
internetradio2.0/irsessionlog/src/irnmslogger.cpp
internetradio2.0/irsessionlog/src/irphoneinfo.cpp
internetradio2.0/irsessionlog/src/irsessiondb.cpp
internetradio2.0/irsessionlog/src/irsessionlogger.cpp
internetradio2.0/irsessionlog/src/irsessionloggerutility.cpp
internetradio2.0/irsettings/bmarm/irsettingsu.def
internetradio2.0/irsettings/bwinscw/irsettingsu.def
internetradio2.0/irsettings/group/bld.inf
internetradio2.0/irsettings/group/irsettings.mmp
internetradio2.0/irsettings/inc/irsettings.h
internetradio2.0/irsettings/inc/irsettingsutility.h
internetradio2.0/irsettings/src/irsettings.cpp
internetradio2.0/irsonghistory/inc/irsonghistorydb.h
internetradio2.0/irsonghistory/inc/irsonghistoryinfo.h
internetradio2.0/irsonghistory/src/irsonghistorydb.cpp
internetradio2.0/irsonghistory/src/irsonghistoryinfo.cpp
internetradio2.0/irxmlparser/bmarm/irxmlparseru.def
internetradio2.0/irxmlparser/bwinscw/irxmlparseru.def
internetradio2.0/irxmlparser/group/bld.inf
internetradio2.0/irxmlparser/group/irxmlparser.mmp
internetradio2.0/irxmlparser/inc/irparserobserver.h
internetradio2.0/irxmlparser/inc/irxmlcontenthandler.h
internetradio2.0/irxmlparser/inc/irxmlelements.h
internetradio2.0/irxmlparser/src/irxmlcontenthandler.cpp
internetradio2.0/irxmlparser/src/irxmlelements.cpp
internetradio2.0/isdsclientinc/irlanguagemapper.h
internetradio2.0/isdsclientinc/isdsclientdll.h
internetradio2.0/isdsclientinc/misdsresponseobserver.h
internetradio2.0/isdsclientsrc/irisdsclient.cpp
internetradio2.0/isdsclientsrc/irlanguagemapper.cpp
internetradio2.0/mbm/qgn_indi_ai_music_play.svg
internetradio2.0/mbm/qgn_indi_ai_music_stop.svg
internetradio2.0/mbm/qgn_indi_fmradio_tb_listen.svg
internetradio2.0/mbm/qgn_indi_fmradio_tb_listen_white.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_addstation.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_addstation_white.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_addtofav.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_addtofav_white.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_findnshop.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_findnshop_white.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_history.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_history_white.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_saveall.svg
internetradio2.0/mbm/qgn_indi_irradio_tb_saveall_white.svg
internetradio2.0/mbm/qgn_indi_tb_copy.svg
internetradio2.0/mbm/qgn_indi_tb_copy_white.svg
internetradio2.0/mbm/qgn_indi_tb_details.svg
internetradio2.0/mbm/qgn_indi_tb_details_white.svg
internetradio2.0/mbm/qgn_indi_tb_find.svg
internetradio2.0/mbm/qgn_indi_tb_find_white.svg
internetradio2.0/mbm/qgn_indi_tb_next.svg
internetradio2.0/mbm/qgn_indi_tb_next_white.svg
internetradio2.0/mbm/qgn_indi_tb_paste.svg
internetradio2.0/mbm/qgn_indi_tb_paste_white.svg
internetradio2.0/mbm/qgn_indi_tb_play.svg
internetradio2.0/mbm/qgn_indi_tb_play_white.svg
internetradio2.0/mbm/qgn_indi_tb_previous.svg
internetradio2.0/mbm/qgn_indi_tb_previous_white.svg
internetradio2.0/mbm/qgn_indi_tb_stop.svg
internetradio2.0/mbm/qgn_indi_tb_stop_white.svg
internetradio2.0/mbm/qgn_ir_transparent.svg
internetradio2.0/mbm/qgn_menu_irradio.svg
internetradio2.0/mbm/qgn_prop_ir_list_play.svg
internetradio2.0/mbm/qgn_prop_ir_list_stopped.svg
internetradio2.0/mbm/qgn_prop_set_apps_ir.svg
internetradio2.0/mcpplugininc/irmcpplugin.h
internetradio2.0/mcpplugininc/mcpplugin.h
internetradio2.0/mcpplugininc/mcppluginobserver.h
internetradio2.0/mcpplugininc/mcppluginuids.hrh
internetradio2.0/mcppluginsrc/irmcpplugin.cpp
internetradio2.0/mediaengineinc/iraacplayer.h
internetradio2.0/mediaengineinc/iraacplayerlocal.h
internetradio2.0/mediaengineinc/irbuffercontainer.h
internetradio2.0/mediaengineinc/irbuffercontainer.inl
internetradio2.0/mediaengineinc/irmediaenginebuffer.h
internetradio2.0/mediaengineinc/irmediaenginedef.h
internetradio2.0/mediaengineinc/irmediaengineinterface.h
internetradio2.0/mediaengineinc/irmediaengineinterface.inl
internetradio2.0/mediaengineinc/irmp3player.h
internetradio2.0/mediaengineinc/irmp3playerlocal.h
internetradio2.0/mediaengineinc/irtestingaudioplayer.h
internetradio2.0/mediaenginesrc/iraacplayer.cpp
internetradio2.0/mediaenginesrc/irbuffercontainer.cpp
internetradio2.0/mediaenginesrc/irmediaengineproxy.cpp
internetradio2.0/mediaenginesrc/irmp3player.cpp
internetradio2.0/mediaenginesrc/irtestingaudioplayer.cpp
internetradio2.0/networkcontrollerinc/iractivenetworkobserver.h
internetradio2.0/networkcontrollerinc/irdatatransferobserver.h
internetradio2.0/networkcontrollerinc/irdatatransfertracker.h
internetradio2.0/networkcontrollerinc/irfilteredapreader.h
internetradio2.0/networkcontrollerinc/irnetworkcontroller.h
internetradio2.0/networkcontrollerinc/irnetworkcontrollerobserver.h
internetradio2.0/networkcontrollerinc/irnetworkobserver.h
internetradio2.0/networkcontrollersrc/irdatatransfertracker.cpp
internetradio2.0/networkcontrollersrc/irfilteredapreader.cpp
internetradio2.0/networkcontrollersrc/irnetworkcontroller.cpp
internetradio2.0/networkcontrollersrc/irnetworkobserver.cpp
internetradio2.0/presetplugininc/irpreset.h
internetradio2.0/presetplugininc/irpresetimpl.h
internetradio2.0/presetpluginsrc/irpresetimpl.cpp
internetradio2.0/presetpluginsrc/irpresetpluginproxy.cpp
internetradio2.0/resources/2000b4aa.rss
internetradio2.0/rfsplugininc/irrfsplugin.h
internetradio2.0/rfspluginsrc/irrfsplugin.cpp
internetradio2.0/rfspluginsrc/irrfspluginproxy.cpp
internetradio2.0/rom/internetradio.iby
internetradio2.0/rom/internetradio_backup.iby
internetradio2.0/rom/internetradioresources_backup.iby
internetradio2.0/sessionloginc/irdbstatusobserver.h
internetradio2.0/sessionloginc/irnmslogdb.h
internetradio2.0/sessionloginc/irnmslogger.h
internetradio2.0/sessionloginc/irphoneinfo.h
internetradio2.0/sessionloginc/irreportsettings.h
internetradio2.0/sessionloginc/irsessiondb.h
internetradio2.0/sessionloginc/irsessionlogger.h
internetradio2.0/sessionloginc/irsessionloggerutility.h
internetradio2.0/sessionloginc/irsessionparams.h
internetradio2.0/sessionloginc/mirphoneinfoobserver.h
internetradio2.0/sessionloginc/mirsessionobserver.h
internetradio2.0/sessionlogsrc/irnmslogdb.cpp
internetradio2.0/sessionlogsrc/irnmslogger.cpp
internetradio2.0/sessionlogsrc/irphoneinfo.cpp
internetradio2.0/sessionlogsrc/irsessiondb.cpp
internetradio2.0/sessionlogsrc/irsessionlogger.cpp
internetradio2.0/sessionlogsrc/irsessionloggerutility.cpp
internetradio2.0/settingsinc/ircodecmanager.h
internetradio2.0/settingsinc/irsettings.h
internetradio2.0/settingsinc/irsettingsutility.h
internetradio2.0/settingssrc/ircodecmanager.cpp
internetradio2.0/settingssrc/irsettings.cpp
internetradio2.0/settingsviewinc/ircommonsettingscontainer.h
internetradio2.0/settingsviewinc/irsettingsviewbase.h
internetradio2.0/settingsviewsrc/ircommonsettingscontainer.cpp
internetradio2.0/settingsviewsrc/irsettingsviewbase.cpp
internetradio2.0/songhistoryinc/irsonghistorydb.h
internetradio2.0/songhistoryinc/irsonghistoryengine.h
internetradio2.0/songhistoryinc/irsonghistoryengpubsub.h
internetradio2.0/songhistoryinc/irsonghistoryengpubsubnotifyhandler.h
internetradio2.0/songhistoryinc/irsonghistoryinfo.h
internetradio2.0/songhistoryinc/uinotifyhandler.h
internetradio2.0/songhistorysrc/irsonghistorydb.cpp
internetradio2.0/songhistorysrc/irsonghistoryengine.cpp
internetradio2.0/songhistorysrc/irsonghistoryengpubsub.cpp
internetradio2.0/songhistorysrc/irsonghistoryinfo.cpp
internetradio2.0/streamsourceinc/irasfplayer.h
internetradio2.0/streamsourceinc/iricyflowinitiator.h
internetradio2.0/streamsourceinc/iricyflowreader.h
internetradio2.0/streamsourceinc/irmetadata.h
internetradio2.0/streamsourceinc/irmetadata.inl
internetradio2.0/streamsourceinc/irnetworkbuffer.h
internetradio2.0/streamsourceinc/irnetworkbuffer.inl
internetradio2.0/streamsourceinc/irsocketopener.h
internetradio2.0/streamsourceinc/irsockettimeouttimer.h
internetradio2.0/streamsourceinc/irstationconnection.h
internetradio2.0/streamsourceinc/irstationdataobserver.h
internetradio2.0/streamsourceinc/irstreamsource.h
internetradio2.0/streamsourceinc/irstreamsourceerrors.h
internetradio2.0/streamsourceinc/irstreamsourceliterals.h
internetradio2.0/streamsourceinc/irstreamsourceobserver.h
internetradio2.0/streamsourcesrc/irasfplayer.cpp
internetradio2.0/streamsourcesrc/iricyflowinitiator.cpp
internetradio2.0/streamsourcesrc/iricyflowreader.cpp
internetradio2.0/streamsourcesrc/irnetworkbuffer.cpp
internetradio2.0/streamsourcesrc/irsocketopener.cpp
internetradio2.0/streamsourcesrc/irsockettimeouttimer.cpp
internetradio2.0/streamsourcesrc/irstationconnection.cpp
internetradio2.0/streamsourcesrc/irstreamsource.cpp
internetradio2.0/uicontrolsinc/iradvertisinglistbox.h
internetradio2.0/uicontrolsinc/iriconloader.h
internetradio2.0/uicontrolsinc/irimageconverter.h
internetradio2.0/uicontrolsinc/irimageconverterimpl.h
internetradio2.0/uicontrolsinc/irimageconverterobserver.h
internetradio2.0/uicontrolsinc/irlayoututils.h
internetradio2.0/uicontrolsinc/irmarqueeclet.h
internetradio2.0/uicontrolsinc/irstationinformationdata.h
internetradio2.0/uicontrolsinc/irstationinformationdisplay.h
internetradio2.0/uicontrolsinc/irstationlogocontrol.h
internetradio2.0/uicontrolsinc/irstationlogocontrolobserver.h
internetradio2.0/uicontrolsinc/irstationlogodata.h
internetradio2.0/uicontrolssrc/iradvertisinglistbox.cpp
internetradio2.0/uicontrolssrc/iriconloader.cpp
internetradio2.0/uicontrolssrc/irimageconverter.cpp
internetradio2.0/uicontrolssrc/irimageconverterimpl.cpp
internetradio2.0/uicontrolssrc/irlayoututils.cpp
internetradio2.0/uicontrolssrc/irmarqueeclet.cpp
internetradio2.0/uicontrolssrc/irstationinformationdata.cpp
internetradio2.0/uicontrolssrc/irstationinformationdisplay.cpp
internetradio2.0/uicontrolssrc/irstationlogocontrol.cpp
internetradio2.0/uicontrolssrc/irstationlogodata.cpp
internetradio2.0/xmlparserinc/irparserobserver.h
internetradio2.0/xmlparserinc/irxmlcontenthandler.h
internetradio2.0/xmlparserinc/irxmlelements.h
internetradio2.0/xmlparsersrc/irxmlcontenthandler.cpp
internetradio2.0/xmlparsersrc/irxmlelements.cpp
presetserver/group/psclient.mmp
presetserver/group/psrfsplugin.mmp
presetserver/group/psserver.mmp
presetserver/include/psutils.inl
presetserver/rfspluginsrc/Psrfsplugin.cpp
qtinternetradio/bwins/irqisdsclientu.def
qtinternetradio/bwins/irqmediaplayeru.def
qtinternetradio/bwins/irqnetworkcontrolleru.def
qtinternetradio/bwins/irqnwkinfoobserveru.def
qtinternetradio/bwins/irqsettingsu.def
qtinternetradio/bwins/irqsonghistoryu.def
qtinternetradio/bwins/irqstatisticsreporteru.def
qtinternetradio/bwins/irqutilityu.def
qtinternetradio/common.pri
qtinternetradio/eabi/irqisdsclientu.def
qtinternetradio/eabi/irqmediaplayeru.def
qtinternetradio/eabi/irqnetworkcontrolleru.def
qtinternetradio/eabi/irqnwkinfoobserveru.def
qtinternetradio/eabi/irqsettingsu.def
qtinternetradio/eabi/irqsonghistoryu.def
qtinternetradio/eabi/irqstatisticsreporteru.def
qtinternetradio/eabi/irqutilityu.def
qtinternetradio/install/hb_armv5_urel.pkg
qtinternetradio/install/ir1_qt_libs_armv5_udeb.pkg
qtinternetradio/install/ir2_orbitinput_armv5_udeb.pkg
qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg
qtinternetradio/install/qt_libs_armv5_urel.pkg
qtinternetradio/irhswidgetplugin/inc/irhswidget.h
qtinternetradio/irhswidgetplugin/inc/irhswidgetmetadatarow.h
qtinternetradio/irhswidgetplugin/inc/irhswidgettitlerow.h
qtinternetradio/irhswidgetplugin/irhswidgetplugin.pro
qtinternetradio/irhswidgetplugin/irhswidgetplugin_rom.pri
qtinternetradio/irhswidgetplugin/resource/irhswidget_color.css
qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.manifest
qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.png
qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.xml
qtinternetradio/irhswidgetplugin/resources.qrc
qtinternetradio/irhswidgetplugin/rom/irhswidgetplugin_resources.iby
qtinternetradio/irhswidgetplugin/src/irhswidget.cpp
qtinternetradio/irhswidgetplugin/src/irhswidgetmetadatarow.cpp
qtinternetradio/irhswidgetplugin/src/irhswidgettitlerow.cpp
qtinternetradio/irqcommon/inc/irqcommonexport.h
qtinternetradio/irqcommon/inc/irqisdsdatastructure.h
qtinternetradio/irqcommon/inc/irqutility.h
qtinternetradio/irqcommon/inc/irservicedef.h
qtinternetradio/irqcommon/irqcommon.pro
qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp
qtinternetradio/irqcommon/src/irqutility.cpp
qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro
qtinternetradio/irqisdsclient/inc/irqabstractisdsclientimpl.h
qtinternetradio/irqisdsclient/inc/irqisdsclient.h
qtinternetradio/irqisdsclient/inc/irqisdsclientexporter.h
qtinternetradio/irqisdsclient/inc/irqisdsclientimpl.h
qtinternetradio/irqisdsclient/inc/irqisdsclientimpl_symbian.h
qtinternetradio/irqisdsclient/irqisdsclient.pro
qtinternetradio/irqisdsclient/src/irqisdsclient.cpp
qtinternetradio/irqisdsclient/src/irqisdsclientimpl.cpp
qtinternetradio/irqisdsclient/src/irqisdsclientimpl_symbian.cpp
qtinternetradio/irqlogger/irqlogger.pro
qtinternetradio/irqmediaplayer/inc/irqmediaplayer.h
qtinternetradio/irqmediaplayer/inc/irqmediaplayerexporter.h
qtinternetradio/irqmediaplayer/inc/irqmmfadapter.h
qtinternetradio/irqmediaplayer/inc/irqphononadapter.h
qtinternetradio/irqmediaplayer/inc/irqplayeradapterinterface.h
qtinternetradio/irqmediaplayer/irqmediaplayer.pro
qtinternetradio/irqmediaplayer/src/irqmediaplayer.cpp
qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp
qtinternetradio/irqmediaplayer/src/irqphononadapter.cpp
qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontroller.h
qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontroller_p.h
qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontrollerbody.h
qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontrollerexport.h
qtinternetradio/irqnetworkcontroller/irqnetworkcontroller.pro
qtinternetradio/irqnetworkcontroller/src/irqnetworkcontroller.cpp
qtinternetradio/irqnetworkcontroller/src/irqnetworkcontroller_p.cpp
qtinternetradio/irqnetworkcontroller/src/irqnetworkcontrollerbody.cpp
qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserver.h
qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserver_p.h
qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserverexport.h
qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserverimpl.h
qtinternetradio/irqnwkinfoobserver/inc/irqnwkobserverinterface.h
qtinternetradio/irqnwkinfoobserver/irqnwkinfoobserver.pro
qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver.cpp
qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver_p.cpp
qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserverimpl.cpp
qtinternetradio/irqsettings/inc/irqsettings.h
qtinternetradio/irqsettings/inc/irqsettings_p.h
qtinternetradio/irqsettings/inc/irqsettingsexport.h
qtinternetradio/irqsettings/irqsettings.pro
qtinternetradio/irqsettings/src/irqsettings.cpp
qtinternetradio/irqsettings/src/irqsettings_p.cpp
qtinternetradio/irqsonghistory/irqsonghistory.pro
qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp
qtinternetradio/irqstatisticsreporter/inc/irqstatisticsreporter.h
qtinternetradio/irqstatisticsreporter/irqstatisticsreporter.pro
qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter.cpp
qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter_symbian_p.cpp
qtinternetradio/irqsystemeventhandler/inc/irqsystemeventhandler_p.h
qtinternetradio/irqsystemeventhandler/irqsystemeventhandler.pro
qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp
qtinternetradio/rom/internetradio_binaries.txt
qtinternetradio/rom/qtinternetradio.iby
qtinternetradio/rom/qtinternetradio_binaries.txt
qtinternetradio/rom/qtinternetradio_resources.iby
qtinternetradio/ui/inc/irabstractlistviewbase.h
qtinternetradio/ui/inc/irapplication.h
qtinternetradio/ui/inc/ircategoryview.h
qtinternetradio/ui/inc/irfavoritesview.h
qtinternetradio/ui/inc/irmainview.h
qtinternetradio/ui/inc/irnowplayingview.h
qtinternetradio/ui/inc/iropenwebaddressview.h
qtinternetradio/ui/inc/irplaycontroller.h
qtinternetradio/ui/inc/irplayingbanner.h
qtinternetradio/ui/inc/irplsview.h
qtinternetradio/ui/inc/irsearchchannelsview.h
qtinternetradio/ui/inc/iruidefines.h
qtinternetradio/ui/inc/irviewmanager.h
qtinternetradio/ui/resources/layout/abstractlistviewbase.docml
qtinternetradio/ui/resources/layout/nowplayingview.docml
qtinternetradio/ui/resources/layout/openwebaddressview.docml
qtinternetradio/ui/resources/layout/stationdetailsview.docml
qtinternetradio/ui/resources/splashscreen/internet_radio_default.docml
qtinternetradio/ui/resources/splashscreen/internet_radio_default.splashml
qtinternetradio/ui/resources/splashscreen/internet_radio_normal.docml
qtinternetradio/ui/resources/splashscreen/internet_radio_nowplaying.docml
qtinternetradio/ui/resources/splashscreen/internet_radio_termscons.docml
qtinternetradio/ui/resources/splashscreen/internet_radio_termscons.splashml
qtinternetradio/ui/src/irabstractlistviewbase.cpp
qtinternetradio/ui/src/irapplication.cpp
qtinternetradio/ui/src/irbaseview.cpp
qtinternetradio/ui/src/ircategoryview.cpp
qtinternetradio/ui/src/irdocumentloader.cpp
qtinternetradio/ui/src/irfavoritesview.cpp
qtinternetradio/ui/src/irhistoryview.cpp
qtinternetradio/ui/src/irmainview.cpp
qtinternetradio/ui/src/irmemorycollector.cpp
qtinternetradio/ui/src/irnowplayingview.cpp
qtinternetradio/ui/src/iropenwebaddressview.cpp
qtinternetradio/ui/src/irplaycontroller.cpp
qtinternetradio/ui/src/irplayingbanner.cpp
qtinternetradio/ui/src/irplsview.cpp
qtinternetradio/ui/src/irsearchchannelsview.cpp
qtinternetradio/ui/src/irsonghistoryview.cpp
qtinternetradio/ui/src/irstationdetailsview.cpp
qtinternetradio/ui/src/irstationsview.cpp
qtinternetradio/ui/src/irviewmanager.cpp
qtinternetradio/ui/src/main.cpp
qtinternetradio/ui/ui.pro
--- a/internetradio2.0/actionhandlerinc/iractionhandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Action handler providing LIW based API for external use.
-*
-*/
-
-
-#ifndef IRACTIONHANDLER_H
-#define IRACTIONHANDLER_H
-
-#include <ahplugin.h>
-
-/**
- * Action handler provides LIW -based interface for external use (e.g. Homescreen) 
- * 
- * The action handler communicates with IR via IR's Publish & Subscribe API.
- * 
- */
-NONSHARABLE_CLASS( CIRActionHandler ) : public CAHPlugin
-    {
-public:
-    /**
-     * Two-phased constructor. 
-     */
-    static CIRActionHandler* NewL();
-
-    /**
-     * Destructor
-     */
-    ~CIRActionHandler();
-    
-    // From base class CAHPlugin
-    TInt ExecuteActionL( const CLiwMap* aMap );
-    
-private:
-    /**
-     * C++ constructor.
-     */
-    CIRActionHandler();
-    
-    /**
-     * Second phase constructor.
-     */
-    void ConstructL();
-    
-private:
-     
-    /**
-     * Mutes VRA.
-     */
-    void Stop();
-    
-    /**
-     * Unmutes VRA.
-     */
-    void Play();
-    
-     /**
-     * Invokes VRA to go to now playing view.
-     */
-    void StartToNowPlayingL();
-    
-    /**
-     * Extracts the value of the given mapname to given string.
-     * Reserves memory to argument aString.
-     * 
-     * @param aMap The map containing the mapname-string pairs.
-     * @param aString Descriptor where the value is extracted.
-     * @param aMapName The searched map name. 
-     */
-    TInt ExtractStringL( const CLiwMap* aMap, RBuf& aString, const TDesC8& aMapName );
-    };
-
-#endif /* IRACTIONHANDLER_H */
--- a/internetradio2.0/actionhandlerinc/iractionhandlerdefs.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  This file contains LIW string definitions for IRActionHandler.
-*
-*/
-
-
-#ifndef IRACTIONHANDLERDEFS_H
-#define IRACTIONHANDLERDEFS_H
-
-#include <e32base.h>
-
-// map keys
-_LIT8( KIRCommand, "command" );
-
-// map values
-_LIT( KIRCommandValueStop, "stop" );
-_LIT( KIRCommandValuePlay, "play" );
-_LIT( KIRCommandValueStartNowPlaying, "startnowplaying" );
-
-#endif /* IRACTIONHANDLERDEFS_H */
--- a/internetradio2.0/actionhandlersrc/iractionhandler.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,273 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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 <e32cmn.h>
-#include <e32property.h>
-#include <e32std.h>
-#include <w32std.h>
-#include <implementationproxy.h>
-#include <liwvariant.h>
-#include "irdebug.h"
-#include <apgtask.h>
-#include <apgcli.h>
-#include <apacmdln.h>
-
-
-#include "iractionhandler.h"
-#include "iractionhandler.hrh"
-#include "iractionhandlerdefs.h"
-#include "irpubsubkeys.h"
-
-_LIT8( KIRSpace, " " );
-_LIT8( KIRCommandLineActionHandler, "-a" );
-_LIT8( KIRCommandLineActionHandlerCommandStartNowPlayingView, "startnowplaying" );
-
-// ---------------------------------------------------------
-// CIRActionHandler::NewL
-// ---------------------------------------------------------
-//
-CIRActionHandler* CIRActionHandler::NewL()
-    {
-    CIRActionHandler* self = new ( ELeave ) CIRActionHandler(); 
-    CleanupStack::PushL( self );
-    
-    self->ConstructL();
-    
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CIRActionHandler::~CIRActionHandler
-// ---------------------------------------------------------
-//
-CIRActionHandler::~CIRActionHandler()
-    {
-    }
-
-// ---------------------------------------------------------
-// CIRActionHandler::CIRActionHandler
-// ---------------------------------------------------------
-//
-CIRActionHandler:: CIRActionHandler()
-    {
-    
-    }
-    
-// ---------------------------------------------------------
-// CIRActionHandler::ConstructL
-// ---------------------------------------------------------
-//
-void CIRActionHandler::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------
-// CIRActionHandler::ExecuteActionL
-// ---------------------------------------------------------
-//
-TInt CIRActionHandler::ExecuteActionL( const CLiwMap* aMap )
-    {
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::ExecuteActionL Entering", KNullDesC);
-
-    TInt retValue( KErrNone );
-    RBuf command;
-    CleanupClosePushL( command );
-    
-	retValue  = ExtractStringL( aMap, command, KIRCommand);    
-    
-    if  (retValue== KErrNone )
-        {
-        if ( !command.CompareF( KIRCommandValueStop) )
-            {
-            Stop();
-            }
-        else if ( !command.CompareF( KIRCommandValuePlay ) )
-            {
-            Play();
-            }
-
-        else if ( !command.CompareF( KIRCommandValueStartNowPlaying ) )
-            {
-            StartToNowPlayingL();
-            }
-        else
-            {
-            retValue = KErrNotSupported;
-            }
-        }
-    CleanupStack::PopAndDestroy( &command );
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::ExecuteActionL exiting", KNullDesC);
-    return retValue;
-    }
-
-
-
-// ---------------------------------------------------------
-// CIRActionHandler::Mute
-// ---------------------------------------------------------
-//
-void CIRActionHandler::Stop()
-    {
-    IRRDEBUG2("CIRActionHandler::Stop entering", KNullDesC);
-      
-   	TInt err = RProperty::Set(KUidActiveInternetRadioApp, KIRPSControlSetPlayState, EIRStateStop );
-   	
-    IRRDEBUG2("CIRActionHandler::Stop exiting err =%d", err);
-	
-    }
-
-// ---------------------------------------------------------
-// CIRActionHandler::Unmute
-// ---------------------------------------------------------
-//
-void CIRActionHandler::Play()
-    {
-    IRRDEBUG2("CIRActionHandler::Play entering", KNullDesC);
-
-    TInt err = RProperty::Set(KUidActiveInternetRadioApp, KIRPSControlSetPlayState, EIRStatePlay);	
-  	
-    IRRDEBUG2("CIRActionHandler::Play exiting err=%d", err);
-
-    }
-
-
-
-// ---------------------------------------------------------
-// CIRActionHandler::StartToNowPlayingL
-// ---------------------------------------------------------
-//
-void CIRActionHandler::StartToNowPlayingL()
-    {
-    
-    IRRDEBUG2("CIRActionHandler::StartToNowPlayingL entering", KNullDesC);
-
-    RWsSession wsSession;
-                
-    User::LeaveIfError(wsSession.Connect() );
-    TApaTaskList taskList( wsSession );
-
-    TApaTask irTask = taskList.FindApp(KUidActiveInternetRadioApp);
-   
-   
-    IRRDEBUG2("CIRActionHandler::StartToNowPlayingL irTask.Exists()=%d", irTask.Exists());
-
-    TPtrC8 actionHandlerCmdId( KIRCommandLineActionHandler );
-    TPtrC8 spacePtr( KIRSpace );
-    
-    TPtrC8 startNowPlayingCmdvalue(
-    KIRCommandLineActionHandlerCommandStartNowPlayingView );
-
-    HBufC8* buf = HBufC8::NewLC(actionHandlerCmdId.Length()
-    			 + spacePtr.Length() + startNowPlayingCmdvalue.Length());
-    TPtr8 tail( buf->Des() );
-       
-    tail.Append( actionHandlerCmdId );
-    tail.Append( spacePtr );
-    tail.Append( startNowPlayingCmdvalue );
-
-    if ( !irTask.Exists() )
-        {
-        IRRDEBUG2("CIRActionHandler::StartToNowPlayingL !irTask.Exists", KNullDesC);
-
-        RApaLsSession apaSession;
-        CleanupClosePushL( apaSession );
-           
-        User::LeaveIfError( apaSession.Connect() );
-        User::LeaveIfError( apaSession.GetAllApps() );
-       
-        TApaAppInfo appInfo;
-        User::LeaveIfError( apaSession.GetAppInfo( appInfo, KUidActiveInternetRadioApp ) );
-
-      
-           
-        CApaCommandLine* internetRadioApplicationStartParams = CApaCommandLine::NewLC();
-        internetRadioApplicationStartParams->SetExecutableNameL( appInfo.iFullName );
-        // Start the application to the foreground
-        internetRadioApplicationStartParams->SetCommandL( EApaCommandRun );
-        internetRadioApplicationStartParams->SetTailEndL( tail );
-       
-        User::LeaveIfError( apaSession.StartApp( *internetRadioApplicationStartParams ) );
-    
-        IRRDEBUG2("CIRActionHandler::StartToNowPlayingL StartApp", KNullDesC);
-
-        CleanupStack::PopAndDestroy( internetRadioApplicationStartParams );
-        CleanupStack::PopAndDestroy( &apaSession );
-        }
-    else
-        {
-        IRRDEBUG2("CIRActionHandler::StartToNowPlayingL SendMessage", KNullDesC);
-
-        User::LeaveIfError( irTask.SendMessage( KUidActiveInternetRadioApp , tail ) );
-
-        }
-    CleanupStack::PopAndDestroy( buf );
-    wsSession.Close();
-
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::StartToNowPlayingL exiting", KNullDesC);
-
-    }
-
-// ---------------------------------------------------------
-// CIRActionHandler::ExtractStringLC
-// ---------------------------------------------------------
-//
-TInt CIRActionHandler::ExtractStringL( const CLiwMap* aMap, RBuf& aString,
-										 const TDesC8& aMapName)
-    {
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::ExtractStringL entering", KNullDesC);
-
-    TInt err( KErrNotFound );
-    TLiwVariant variant;
-    variant.PushL();
-    TPtrC tempString( KNullDesC );    
-    if ( aMap->FindL( aMapName, variant ) )
-        {
-        variant.Get( tempString );
-        aString.Close();
-        aString.CreateL( tempString );
-        err = KErrNone;
-        }
-    CleanupStack::PopAndDestroy( &variant );    
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::ExtractStringL exiting", KNullDesC);
-   
-    return err;
-
-    }
-
-/** Provides a key-value pair table, that is used to identify the correct construction function for the requested interface. */
-const TImplementationProxy KIRActionHandlerImplementationTable[] =
-    {
-    /*lint -save -e611 (Warning -- Suspicious cast)*/
-    IMPLEMENTATION_PROXY_ENTRY( KIRActionHandlerImplementationUid, CIRActionHandler::NewL )
-    /*lint -restore*/
-    };
-
-const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount );
-
-// ---------------------------------------------------------------------------
-// Returns the implementations provided by this ECOM plugin DLL.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-    {
-    IRRDEBUG2("InternetRadio -- CIRActionHandler::ImplementationGroupProxy", KNullDesC);
-
-    aTableCount = sizeof( KIRActionHandlerImplementationTable ) / sizeof( TImplementationProxy );
-    return KIRActionHandlerImplementationTable;
-    }
--- a/internetradio2.0/activeidleenginc/iractiveidleeng.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +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 IRACTIVEIDLEENG_H
-#define IRACTIVEIDLEENG_H
-
-#include "iractiveidleengpubsubnotifyhandler.h"
-
-class CIRActiveIdleEngPubSub;
-class MIRActiveIdleEngNotifyHandler;
-
-/**
-* Engine component for Internet Radio Active Idle plugin.
-*
-* This class is responsible for listening to relevant P&S keys and notifying the UI code whenever the listened keys change.
-* The actual listening is done by multiple CIRActiveIdleStatusObserver objects.
-*/
-NONSHARABLE_CLASS(CIRActiveIdleEng) : public CBase, 
-	public MIRActiveIdleEngPubSubNotifyHandler
-    {
-    public:
-        
-        /**
-        * Static constructor.
-        * @param    aObserver   The observer to be notified of the changes in the keys.
-        * @return   The newly created CIRActiveIdleEng object.
-        */
-    IMPORT_C static CIRActiveIdleEng* NewL( 
-    	MIRActiveIdleEngNotifyHandler& aObserver );
-        
-        /**
-        * Destructor.
-        */
-        IMPORT_C ~CIRActiveIdleEng();
-        
-        /**
-        * Construction finalizer.
-        * Must be called after CIRActiveIdleEng::NewL. 
-        */
-        IMPORT_C void SecondConstructL();
-        
-    protected: // From MIRActiveIdleStatusObserver
-        /**
-    * Invoked when an error occurred while retrieving the new 
-    * value of the key.
-    * @param    aCategory   The category of the key that changed.
-    * @param    aKey        The key that changed.
-    * @param    aError      The error code.
-        */
-    void HandlePropertyChangeErrorL( const TUid& aCategory, TUint aKey, 
-    	TInt aError );
-        
-        /**
-    * Invoked when the listened key is changed.
-    * @param    aCategory   The category of the key that changed.
-    * @param    aKey        The key that changed.
-    * @param    aText       The new value of the key.
-        */
-    void HandlePropertyChangeL( const TUid& aCategory, TUint aKey,
-    	const TDesC8& aText );
-        
-        /**
-    * Invoked when the listened key is changed.
-    * @param    aCategory   The category of the key that changed.
-    * @param    aKey        The key that changed.
-    * @param    aValue      The new value of the key.
-        */
-    void HandlePropertyChangeL( const TUid& aCategory, TUint aKey, 
-    	TInt aValue );
-
-	private:
-    
-        /**
-        * Constructor.
-    * @param    aObserver   The observer to be notified of the changes 
-    * in the keys.
-        */
-        CIRActiveIdleEng( MIRActiveIdleEngNotifyHandler& aObserver );
-    
-        /**
-        * Second-phase constructor.
-        */
-        void ConstructL();        
-        
-    protected:
-    
-        /** The observer to be notified of the changes in the listened keys. */
-        MIRActiveIdleEngNotifyHandler& iObserver;
-        /** Array of status observers. */
-        RPointerArray<CIRActiveIdleEngPubSub> iPropertyObserverArray;
-        
-        TInt		iVolume;
-
-    };
-
-#endif//IRACTIVEIDLEENG_H
--- a/internetradio2.0/activeidleenginc/iractiveidleengnotifyhandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +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 IRACTIVEIDLEENGNOTIFYHANDLER_H
-#define IRACTIVEIDLEENGNOTIFYHANDLER_H
-
-#include "irpubsubkeys.h"
-
-class CIRMetaData;
-
-/**
-* Observer interface for CIRActiveIdleEng.
-* The observer is notified about the changes in relevant keys through this interface.
-*/
-NONSHARABLE_CLASS(MIRActiveIdleEngNotifyHandler)
-    {
-
-public:
-        
-    /**
-    * Invoked when a new channel has been tuned into.
-    */
-    virtual void HandleChannelChangeL() = 0;
-    
-    /**
-    * Invoked when a new channel has been tuned into.
-    * @param    aVolume       The index of the volume level.
-    */
-    virtual void HandleVolumeChangeL( TInt aVolume ) = 0;
-    
-    /**
-    * Invoked when a new channel has been tuned into.
-    */
-    virtual void HandlePlayStopL( TIRStopPlayState aState ) = 0;
-    
-   /**
-    * Invoked when the application's running state has changed.
-    * @param    aRunningState   The new running state.
-    */
-    virtual void HandleApplicationRunningStateChangeL( 
-    			TIRPSApplicationRunningState aRunningState ) = 0;
-
-    /**
-     * Invoked when meta data is received.
-     *
-     * @param   aMetaData       The meta data that was received.
-     */
-    virtual void HandleMetaDataReceivedL( const CIRMetaData& aMetaData ) = 0;
-
-     /**
-     * Invoked when buffering starts or stops 
-     *
-     * @param   aValue  The state of buffering
-     */
-    virtual void HandleBufferingStateL(TIRBufferingState aState) = 0;
-
-    };
-
-#endif//IRACTIVEIDLEENGNOTIFYHANDLER_H
-           
--- a/internetradio2.0/activeidleenginc/iractiveidleengpubsub.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +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 IRACTIVEIDLEENGPUBSUB_H
-#define IRACTIVEIDLEENGPUBSUB_H
-
-#include <e32base.h>
-#include <e32property.h>
-
-class MIRActiveIdleEngPubSubNotifyHandler;
-
-#define KMAXLENGTH 256
-
-/**
-* Listens to one specified Publish & Subscribe key, notifying the observer whenever that key is changed.
-*/
-NONSHARABLE_CLASS(CIRActiveIdleEngPubSub) : public CActive
-    {
-    public:
-        
-        /**
-        * Static constructor.
-        * @param    aObserver   The observer to be notified of the changes in the listened key.
-        * @param    aCategory   The category of the key.
-        * @param    aKey        The key to listen to.
-        */
-    static CIRActiveIdleEngPubSub* NewL( MIRActiveIdleEngPubSubNotifyHandler& 
-    		aObserver, const TUid& aCategory, TUint aKey , 
-    		const RProperty::TType aPropertyType  );
-        
-        /**
-        * Destructor.
-        */
-        ~CIRActiveIdleEngPubSub();
-        
-        /**
-        * Construction finalizer.
-        * Subscribes the object to listen to the specified key.
-        */
-       	void SecondConstructL();
-        
-    protected: // From CActive
-
-        /**
-    *void RunL()
-    *The function is called by the active scheduler
-    *when a request completion event occurs,
-        */
-        void RunL();
-        
-        /**
-    *void DoCancel()
-    *Invoked when the active object is cancelled.
-        */
-        void DoCancel();
-        
-    private:
-
-        /**
-        * Constructor.    
-        * @param    aObserver   The observer to be notified of the changes in the listened key.
-        * @param    aCategory   The category of the key.
-        * @param    aKey        The key to listen to.
-        */
-    CIRActiveIdleEngPubSub( MIRActiveIdleEngPubSubNotifyHandler& aObserver, 
-    	const TUid& aCategory, TUint aKey, const RProperty::TType aPropertyType );
-        
-        /**
-        * Second-phase constructor.
-        */
-        void ConstructL();
-		
-    protected:
-
-        /** Handle to the property. */
-        RProperty iProperty;
-        RProperty::TType iPropertyType;
-        /** The observer to be notified of the changes in the listened key. */
-        MIRActiveIdleEngPubSubNotifyHandler& iObserver;
-        /** The category of the key to listen to. */
-        TUid iCategory;
-        /** The key to listen to. */
-        TUint iKey;
-        /** The cached value of the key. */
-        mutable TBuf8<KMAXLENGTH> iText;
-        TInt iValue;
-    };
-
-#endif//IRACTIVEIDLEENGPUBSUB_H
--- a/internetradio2.0/activeidleenginc/iractiveidleengpubsubnotifyhandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +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 IRACTIVEIDLEENGPUBSUBNOTIFYHANDLER_H
-#define IRACTIVEIDLEENGPUBSUBNOTIFYHANDLER_H
-
-#include <e32cmn.h>
-
-/**
-* Observer interface for CIRActiveIdleEngPubSub.
-* The observer is notified whenever the listened key is changed. If there was an error in getting the new value of the key,
-* the observer will be notified of it as well.
-*/
-NONSHARABLE_CLASS(MIRActiveIdleEngPubSubNotifyHandler)
-    {
-    public:
-
-        /**
-        * Invoked when the listened key is changed.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aValue      The new value of the key.
-        */
-    virtual void HandlePropertyChangeL( const TUid& aCategory, TUint aKey,
-    	 TInt aValue ) = 0;
-        
-        /**
-        * Invoked when the listened key is changed.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aText       The new value of the key.
-        */
-    virtual void HandlePropertyChangeL( const TUid& aCategory, TUint aKey,
-    	 const TDesC8& aText ) = 0;
-        
-        /**
-        * Invoked when an error occurred while retrieving the new value of the key.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aError      The error code.
-        */
-    virtual void HandlePropertyChangeErrorL( const TUid& aCategory,
-     TUint aKey, TInt aError ) = 0;
-    };
-
-#endif//IR_ACTIVEIDLEENGPUBSUBNOTIFYHANDLER
--- a/internetradio2.0/activeidleengsrc/iractiveidleeng.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +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 "irmetadata.h"
-#include "irpubsubkeys.h"
-
-#include "iractiveidleeng.h"
-#include "iractiveidleengnotifyhandler.h"
-#include "iractiveidleengpubsub.h"
-#include "irdebug.h"
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::CIRActiveIdleEng
-// Default Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleEng::CIRActiveIdleEng( MIRActiveIdleEngNotifyHandler& aObserver )
-    : iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::ConstructL
-// Second-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEng::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEng::ConstructL" );	
-    //Subscriber for application running state 
-    User::LeaveIfError(iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSDataApplicationRunning , 
-    	RProperty::EInt) ) );
-    //Subsciber for meta data
-    User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSMetaData, 
-    	RProperty::ELargeText)));
-    //Subsciber for the volume level 
-    User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSVolume , 
-    	RProperty::EInt) ) );
-    //Subsciber for the key KIRPSPlayStop at stop state
-    User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSPlayStop ,
-    	RProperty::EInt) ) );
-    //Subsciber for the channel name
-     User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSDataChannel, 
-    	RProperty::ELargeText) ) );
-    //Subscriber for favourite channel preset index 
-    User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSPresetIndex ,
-    	RProperty::EInt) ) );
-    
-    //Subscriber for favourite channel preset index 
-    User::LeaveIfError( iPropertyObserverArray.Append( CIRActiveIdleEngPubSub::
-    	NewL( *this, KUidActiveInternetRadioApp, KIRPSBufferingState ,
-    	RProperty::EInt) ) );
-    IRLOG_DEBUG( "CIRActiveIdleEng::ConstructL - Exiting." );	
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::SecondConstructL()
-// Finalizes the construction of the object
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRActiveIdleEng::SecondConstructL()
-	{
-	
-	IRLOG_DEBUG( "CIRActiveIdleEng::SecondConstructL" );
-	for ( TInt i = 0; i < iPropertyObserverArray.Count(); i++ )
-		{
-		iPropertyObserverArray[i]->SecondConstructL();	
-		}
-	IRLOG_DEBUG( "CIRActiveIdleEng::SecondConstructL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::NewL
-// Static constructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRActiveIdleEng* CIRActiveIdleEng::NewL( 
-	MIRActiveIdleEngNotifyHandler& aObserver )
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEng::NewL" );
-    CIRActiveIdleEng* self = new ( ELeave ) CIRActiveIdleEng( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRActiveIdleEng::NewL - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::~CIRActiveIdleEng()
-// standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRActiveIdleEng::~CIRActiveIdleEng()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEng::~CIRActiveIdleEng" );
-    iPropertyObserverArray.ResetAndDestroy();
-    iPropertyObserverArray.Close();
-    IRLOG_DEBUG( "CIRActiveIdleEng::~CIRActiveIdleEng - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::HandlePropertyChangeL
-// Invoked when any listened P&S key is changed.
-// ---------------------------------------------------------------------------
-void CIRActiveIdleEng::HandlePropertyChangeL( const TUid& aCategory,
-											TUint aKey,const TDesC8& aText ) 
-	{
-	IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeL" );
-	if ( aCategory == KUidActiveInternetRadioApp )
-		{
-		if( aKey == KIRPSDataChannel )
-			{
-			iObserver.HandleChannelChangeL();
-			}
-		else if( aKey == KIRPSMetaData )
-			{
-			CIRMetaData* metaData = CIRMetaData::NewL( aText );
-			CleanupStack::PushL( metaData );
-			iObserver.HandleMetaDataReceivedL( *metaData );
-			CleanupStack::PopAndDestroy( metaData );
-			}
-		else
-			{
-			// To avoid PC lint error
-			}
-		}
-	IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::HandlePropertyChangeL
-// Invoked when any listened P&S key is changed.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEng::HandlePropertyChangeL( 
-	const TUid& aCategory, TUint aKey, TInt aValue )
-	{
-	IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeL" );
-	if ( aCategory == KUidActiveInternetRadioApp )
-		{
-		if( aKey == KIRPSDataApplicationRunning)
-			{
-			iObserver.HandleApplicationRunningStateChangeL( 
-				static_cast<TIRPSApplicationRunningState>( aValue ) );				
-			}
-		else if( aKey == KIRPSVolume)
-			{
-			iObserver.HandleVolumeChangeL( aValue );
-			}
-		else if( aKey == KIRPSPlayStop)
-			{
-			iObserver.HandlePlayStopL( static_cast<TIRStopPlayState>( aValue ) );
-			}	   
-		else if( aKey == KIRPSBufferingState)
-			{
-			IRRDEBUG2("CIRActiveIdleEng::HandlePropertyChangeL KIRPSBufferingState=%d ",aValue);
-			iObserver.HandleBufferingStateL(static_cast<TIRBufferingState>(aValue));
-			}	   
-		else
-			{
-			// To avoid PC lint error
-			}
-		}
-	IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEng::HandlePropertyChangeErrorL
-// Invoked when an error has occured while fetching the new value of any listened P&S key.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEng::HandlePropertyChangeErrorL( const TUid& /*aCategory*/,
-	TUint /*aKey*/, TInt aError )
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeErrorL" );
-    if (aError < 0)
-    	{
-    	HandlePropertyChangeL(KUidActiveInternetRadioApp, 
-    		KIRPSDataApplicationRunning, EIRPSApplicationClosing);
-    	}
-    IRLOG_DEBUG( "CIRActiveIdleEng::HandlePropertyChangeErrorL" );
-    }
-
-
-
-
--- a/internetradio2.0/activeidleengsrc/iractiveidleengpubsub.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +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 "iractiveidleengpubsub.h"
-#include "iractiveidleengpubsubnotifyhandler.h"
-#include "irdebug.h"
-
-// ==================== MEMBER FUNCTIONS ===================
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::CIRActiveIdleEngPubSub
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleEngPubSub::CIRActiveIdleEngPubSub(
-	MIRActiveIdleEngPubSubNotifyHandler& aObserver, const TUid& aCategory, 
-	TUint aKey , const RProperty::TType aPropertyType): CActive( CActive::
-	EPriorityStandard ),  iPropertyType(aPropertyType),iObserver( aObserver ), 
-	iCategory( aCategory ), iKey( aKey )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::ConstructL
-// Second-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEngPubSub::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::ConstructL" );	
-    User::LeaveIfError( iProperty.Attach( iCategory, iKey ) );
-    CActiveScheduler::Add( this );
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::ConstructL - Exiting." );	
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::SecondConstructL()
-// Finalizes the construction of this object.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEngPubSub::SecondConstructL()
-	{
-	IRLOG_DEBUG( "CIRActiveIdleEngPubSub::SecondConstructL" );	
-	if(!IsActive())	
-		{
-	    iProperty.Subscribe( iStatus );
-	    SetActive();	
-		}
-
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::SecondConstructL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::NewL
-// Static constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleEngPubSub* CIRActiveIdleEngPubSub::NewL( 
-	MIRActiveIdleEngPubSubNotifyHandler& aObserver, const TUid& aCategory, 
-	TUint aKey, const RProperty::TType aPropertyType  )
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::NewL" );	
-    CIRActiveIdleEngPubSub* self = new ( ELeave ) CIRActiveIdleEngPubSub( 
-    							aObserver, aCategory, aKey, aPropertyType );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::NewL - Exiting." );	
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::~CIRActiveIdleEngPubSub()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleEngPubSub::~CIRActiveIdleEngPubSub()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::~CIRActiveIdleEngPubSub" );	
-    Cancel();
-    iProperty.Close();
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::~CIRActiveIdleEngPubSub - Exiting." );	
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::DoCancel()
-// Invoked when the active object is cancelled.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEngPubSub::DoCancel()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::DoCancel" );	
-    iProperty.Cancel();
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::DoCancel - Exiting." );	
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdleEngPubSub::RunL()
-// The function is called by the active scheduler when a request completion event occurs,
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleEngPubSub::RunL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::RunL" );	
-
-    iProperty.Subscribe( iStatus );
-    SetActive();
-    TInt err(KErrNone);
-    switch (iPropertyType)
-        {
-        // Subscribes the property of interger type 
-        case RProperty::EInt:
-	        {
-	        err = iProperty.Get( iValue );
-	        if (!err)
-            	{
-                iObserver.HandlePropertyChangeL( iCategory, iKey, iValue );
-             	}
-	        break;
-	        }
-	    // Subscribes the property of text type 
-	    case RProperty::ELargeText:
-	        {
-	        err = iProperty.Get( iText );
-	        if (!err)
-            	{
-                iObserver.HandlePropertyChangeL( iCategory, iKey, iText );
-             	}
-	        break;
-	        }
-	    default:
-	        {
-	        break;
-	        }
-        }
-    
-    if (err)
-    	{
-        iObserver.HandlePropertyChangeErrorL(iCategory, iKey, err);
-    	}
-	
-    IRLOG_DEBUG( "CIRActiveIdleEngPubSub::RunL - Exiting." );	
-    }
--- a/internetradio2.0/activeidleinc/iractiveidle.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +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:  The content publisher for Internet Radio Active Idle plugin
-*
-*/
-
-
-#ifndef IRACTIVEIDLE_H
-#define IRACTIVEIDLE_H
-
-#include <aicontentpublisher.h>
-#include <aieventhandlerextension.h>
-#include <aipropertyextension.h>
-
-#include "iractiveidleengnotifyhandler.h"
-
-class CIRActiveIdleEng;
-class CIRActiveIdleStateDetector;
-class CIRMetaData;
-class MAiContentItemIterator;
-class MAiContentObserver;
-
-#define KMAXLENGTH 256
-
-/**
- *  Internet Radio Active Idle plugin
- *
- *  @lib iractiveidle.lib
- */
-class CIRActiveIdle : public CAiContentPublisher, 
-                      public MAiPropertyExtension,
-                      public MAiEventHandlerExtension,
-                      public MIRActiveIdleEngNotifyHandler
-    {
-public:
-
-    /**
-     * Two-phased constructor.
-     */
-    static CIRActiveIdle* NewL();
-
-    /**
-     * Destructor.
-     */
-    /*lint -save -e1509 (Warning -- base class destructor for class 'MAiPropertyExtension' is not virtual -- Effective C++ #14)
-                        (Warning -- base class destructor for class 'MAiEventHandlerExtension' is not virtual -- Effective C++ #14)*/
-    virtual ~CIRActiveIdle();
-    /*lint -restore*/
-
-	// from base class CAiContentPublisher
-	/**
-     *void Resume( TAiTransitionReason aReason )
-     *To actively publish data to observers. 
-     *@param aReason Defines set of reasons for plug-in state change.
-     */
-    void Resume( TAiTransitionReason aReason );
-    
-    /**
-     *void Suspend( TAiTransitionReason aReason )
-     *Cancels outstanding asynchronous operations
-     *@param aReason Defines set of reasons for plug-in state change.
-     */
-    void Suspend( TAiTransitionReason aReason );
-    
-    /**
-     *void Stop( TAiTransitionReason aReason )
-     *Frees all memory and CPU resources and close all open files.
-     *@param aReason Defines set of reasons for plug-in state change.
-     */
-    void Stop( TAiTransitionReason aReason );
-    
-    /**
-     *void SubscribeL( MAiContentObserver& aObserver )
-     *Adds the content observer / subscriber to plug-in.
-     *@param aObserver The observer to be notified of the changes in the keys.
-     */
-    void SubscribeL( MAiContentObserver& aObserver );
-    
-    /**
-     *void ConfigureL( RAiSettingsItemArray& aSettings )
-     *Configures the plug-in.
-     *@param aSettings setting items defined in the UI definition.
-     *This plugin takes ownership of the MAiPluginSettings objects 
-     *in the array.
-     */
-    void ConfigureL( RAiSettingsItemArray& aSettings );
-    
-    /**
-     *TAny* Extension( TUid aUid )
-     *Returns interface extension.
-     *@param aUid 
-     *@return Returns pointer to extension type
-     */
-    TAny* Extension( TUid aUid );
-
-	// from base class MAiPropertyExtension
-	/**
-     *TAny* GetPropertyL( TInt aProperty )
-     *Reads a plugin property.
-     *@param aProperty identification of property.
-     *@return Pointer to property value
-     */
-    TAny* GetPropertyL( TInt aProperty );
-    
-    /**
-     *void SetPropertyL( TInt aProperty, TAny* aValue )
-     *Sets a plugin property
-     *@param aProperty  identification of property.
-     *@param aValue contains pointer to property value.
-     */
-    void SetPropertyL( TInt aProperty, TAny* aValue );
-
-	// from base class MAiEventHandlerExtension
-	/**
-     *void HandleEvent( TInt aEvent, const TDesC& aParam )
-     *Sets a plugin property
-     *@param aEvent unique identifier of event from plug-in content model.
-     *@param aParam Parameters associated with event
-     */
-    void HandleEvent( TInt aEvent, const TDesC& aParam );
-
-// from base class MIRActiveIdleEngNotifyHandler
-
-    void HandleChannelChangeL();
-    void HandleMetaDataReceivedL( const CIRMetaData& aMetaData );
-    void HandleVolumeChangeL( const TInt aVolume );
-    void HandlePlayStopL( TIRStopPlayState aState );
-    void HandleApplicationRunningStateChangeL(  const TIRPSApplicationRunningState aRunningState );
-    void HandleBufferingStateL(TIRBufferingState aState );
-    
-   private:
-
-    /**
-     * Constructor.
-     */
-    CIRActiveIdle();
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     * Initialize resource file for loading resources.
-     */
-    void InitializeResourceLoadingL();
-
-    /**
-     * Loads the required resources.
-     */
-    void LoadResourcesL();
-
-    /**
-     * Cleans all data fields from plugin.
-     */
-    void Clean();
-
-    /**
-     * Starts an application.
-     * @param aUid The uid value of the application
-     * @param aCommandLine The command line (if any) to be passed to the process
-     */
-    void StartApplicationL( const TUid& aUid, const TDesC8& aCommandLine );
-
-private: // data
-
-    /** IR's Active Idle engine. */
-    CIRActiveIdleEng*                   iEngine;
-
-    /** 
-     * Detects Internet Radio process termination
-     * Owned.
-     */
-    CIRActiveIdleStateDetector*         iIRTerminationDetector;
-    
-    /**
-     * Current meta data information.
-     * Owned.
-     */
-    CIRMetaData*                        iMetaData;
-     
-    /** Observers that are informed about changes state or new content available. */
-    RPointerArray<MAiContentObserver>   iObservers;
-    /** */
-    TAiPublisherInfo                    iInfo;
-    /** */
-    MAiContentItemIterator*             iContent;
-    /** */
-    MAiContentItemIterator*             iResources;
-    /** */
-    MAiContentItemIterator*             iEvents;
-    
-    /** Active Idle's resource offset. */
-    TInt                                iActiveIdleResourceOffset;
-    /** Internet Radio application running state */
-    TIRPSApplicationRunningState        iRunningState;
-    
- 	// Meta data info
-    TBuf 	<KMAXLENGTH> iChannelName;
-    TInt 	iPresetIndex;
-    
-    //Application volume level
-    enum TIRPSVolumeLevel
-    	{
-    	EVolumeLevel0 = 0,
-	    EVolumeLevel1,      
-	    EVolumeLevel2,   
-	    EVolumeLevel3,   
-	    EVolumeLevel4,   
-	    EVolumeLevel5,   
-	    EVolumeLevel6,   
-	    EVolumeLevel7,   
-	    EVolumeLevel8,   
-	    EVolumeLevel9,   
-	    EVolumeLevel10                    
-	    };
-    
-    TInt                                iLastSetVolume;
-    };
-
-#endif // IRACTIVEIDLE_H
--- a/internetradio2.0/activeidleinc/iractiveidlestatedetector.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Header file of CIRActiveIdleStateDetector.
-*
-*/
-
-
-#ifndef CIRACTIVEIDLESTATEDETECTOR_H
-#define CIRACTIVEIDLESTATEDETECTOR_H
-
-#include <e32base.h>
-
-class MIRActiveIdleEngNotifyHandler;
-
-/**
- *  Class for detecting application running state.
- */
-NONSHARABLE_CLASS(CIRActiveIdleStateDetector) : public CActive
-    {
-
-public:
-    
-    /**
-     * C++ default constructor.
-	 * @param sStateObserver    Observer for running state change
-     */
-    CIRActiveIdleStateDetector( MIRActiveIdleEngNotifyHandler& aStateObserver );
-
-    /**
-     * Destructor.
-     */
-    ~CIRActiveIdleStateDetector();
-
-    /**
-     * Requests notification for termination of Internet Radio
-     */
-    void StartListeningL();
-
-protected: 
-
-// from base class CActive
-    void RunL();
-    void DoCancel();
-
-private: // data
-
-	/** Observer for running state change */
-	MIRActiveIdleEngNotifyHandler&  iStateObserver;
-	/** The process to be observed */
-	RProcess                        iProcess;
-    
-    };
-
-#endif // CIRACTIVEIDLESTATEDETECTOR_H
--- a/internetradio2.0/activeidleinc/irplugincontentmodel.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +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 IRPLUGINCONTENTMODEL_H
-#define IRPLUGINCONTENTMODEL_H
-
-#include <aicontentmodel.h>
-
-// Plug-in Implementation UID.
-const TInt KImplUidIRPlugin = 0x2000B4A7; 
-const TUid KUidIRPlugin = { KImplUidIRPlugin };
-
-// ================================= CONTENT ===================================
-
-/**
- * Content Ids
- */
-enum TAiIRContentIds
-    {
-    EAiIRContentVolume,
-    EAiIRContentOneLineInfoCaption, // Full page idle
-    EAiIRContentAppIcon,
-    EAiIRContentPresetCaption,
-    EAiIRContentArtistCaption,
-    EAiIRContentTrackCaption
-    };
-
-/**
- * Content that the plugin will publish
- */
-const TAiContentItem KAiIRContent[] =
-    {
-    { EAiIRContentVolume,             	L"Volume",       KAiContentTypeText },
-    { EAiIRContentOneLineInfoCaption,   L"OneLineInfo",  KAiContentTypeText },
-    { EAiIRContentAppIcon,              L"AppIcon",       KAiContentTypeBitmap },
-    { EAiIRContentPresetCaption,        L"Preset",       KAiContentTypeText },
-    { EAiIRContentArtistCaption,        L"Artist",       KAiContentTypeText },
-    { EAiIRContentTrackCaption,   		L"Track",        KAiContentTypeText }
-    };
-
-
-// ================================ RESOURCES ==================================
-
-/**
- * Resource Ids
- */
-enum TAiIRPluginResourceIds
-    {
-    EAiIRResourceVol0,
-    EAiIRResourceVol1,
-    EAiIRResourceVol2,
-    EAiIRResourceVol3,
-    EAiIRResourceVol4,
-    EAiIRResourceVol5,
-    EAiIRResourceVol6,
-    EAiIRResourceVol7,
-    EAiIRResourceVol8,
-    EAiIRResourceVol9,
-    EAiIRResourceVol10,
-    EAiIRResourceIRPlayingIcon,
-    EAiIRResourceIRStoppedIcon
-    };
-
-/**
- * Resources that the plugin will publish
- */
-const TAiContentItem KAiIRResources[] =
-    {
-    //UI resources that represents volume levels
-    { EAiIRResourceVol0,            L"Vol0",            KAiContentTypeText },
-    { EAiIRResourceVol1,            L"Vol1",            KAiContentTypeText },
-    { EAiIRResourceVol2,            L"Vol2",            KAiContentTypeText },
-    { EAiIRResourceVol3,            L"Vol3",            KAiContentTypeText },
-    { EAiIRResourceVol4,            L"Vol4",            KAiContentTypeText },
-    { EAiIRResourceVol5,            L"Vol5",            KAiContentTypeText },
-    { EAiIRResourceVol6,            L"Vol6",            KAiContentTypeText },
-    { EAiIRResourceVol7,            L"Vol7",            KAiContentTypeText },
-    { EAiIRResourceVol8,            L"Vol8",            KAiContentTypeText },
-    { EAiIRResourceVol9,            L"Vol9",            KAiContentTypeText },
-    { EAiIRResourceVol10,           L"Vol10",           KAiContentTypeText },
-    { EAiIRResourceIRPlayingIcon,   L"IRPlaying",       KAiContentTypeBitmap },
-    { EAiIRResourceIRStoppedIcon,   L"IRStopped",       KAiContentTypeBitmap }
-    };
-
-
-// ============================ SERVICES (Events) ==============================
-
-/**
- * Event Ids.
- */
-enum TAiIREventIds
-    {
-    EAiIREventVolInc,
-    EAiIREventVolDec,
-    EAiIREventLaunchRadio
-    };
-
-/**
- * Services that the plugin can perform
- */
-const TAiContentItem KAiIREvents[] =
-    {
-    { EAiIREventVolInc,      L"VolInc", "" },
-    { EAiIREventVolDec,      L"VolDec", "" },
-    { EAiIREventLaunchRadio, L"LaunchRadio", "" }
-    };
-
-
-#endif // IRPLUGINCONTENTMODEL_H
--- a/internetradio2.0/activeidlesrc/iractiveidle.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,873 +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 <aicontentobserver.h>
-#include <aiutility.h>
-#include <aknutils.h>
-#include <apgcli.h>
-#include <bautils.h>
-#include <data_caging_path_literals.hrh>
-#include <e32property.h>
-#include <stringloader.h>
-#include <iractiveidle.rsg>
-#include <features.hrh>
-#include <eikenv.h> 
-#include <apgtask.h>
-#include "irmetadata.h"
-#include "irpubsubkeys.h"
-#include "ir.hrh"
-#include "iractiveidle.h"
-#include "iractiveidleeng.h"
-#include "iractiveidlestatedetector.h"
-#include "irdebug.h"
-#include "irplugincontentmodel.h"
-
-
-
-#include <eikenv.h>
-
-const TInt KIRMinVolumeLevel = 0;
-const TInt KIRMaxVolumeLevel  = 10;
-const TInt KIRPublishIndex = 1; // Always 1 in this plugin
-const TInt KIRActiveIdleGranularity = 3;
-
-_LIT( KIRActiveIdleResourceFileName, "iractiveidle.rsc" ); /** Filename of the Internet Radio Active Idle resource file. */
-_LIT( KIRPluginName, "iRAPP Plugin");
-_LIT(KSeparatorDot,". ");
-//_LIT(KSeparatorHyphen," - ")
-//_LIT(KSeparatorColon," : ")
-_LIT8( KIRSpace, " " );
-_LIT8( KIRCommandLineActiveIdle, "-a" );
-_LIT8( KIRCommandLineActiveIdleCommandStartNowPlayingView, "startnowplaying" );
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::CIRActiveIdle()
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle::CIRActiveIdle()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::ConstructL()
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::ConstructL" );
-    InitializeResourceLoadingL();
-    iInfo.iUid = KUidIRPlugin;
-    iInfo.iName.Copy( KIRPluginName );
-    iContent = AiUtility::CreateContentItemArrayIteratorL( KAiIRContent );
-    iResources = AiUtility::CreateContentItemArrayIteratorL( KAiIRResources );
-    iEvents  = AiUtility::CreateContentItemArrayIteratorL( KAiIREvents );
-    iMetaData = CIRMetaData::NewL();
-    iRunningState = EIRPSApplicationUninitialized;
-    IRLOG_DEBUG( "CIRActiveIdle::ConstructL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::NewL()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle* CIRActiveIdle::NewL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::NewL" );
-    CIRActiveIdle* self = new( ELeave ) CIRActiveIdle;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( "CIRActiveIdle::NewL - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::~CIRActiveIdle()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle::~CIRActiveIdle()
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::~CIRActiveIdle" );
-    if ( iActiveIdleResourceOffset > 0 )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iActiveIdleResourceOffset );
-        }
-    iObservers.Close();
-    Release( iContent );
-    Release( iResources );
-    Release( iEvents );
-
-    delete iMetaData;
-    delete iIRTerminationDetector;
-    delete iEngine;
-    IRLOG_DEBUG( "CIRActiveIdle::~CIRActiveIdle - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::InitializeResourceLoadingL()
-// Initialize resource file for loading resources.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::InitializeResourceLoadingL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::InitializeResourceLoadingL" );
-
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    RFs fs( coeEnv->FsSession() );
-    TFileName fileName; 
-    TFileName baseResource;
-    TFindFile finder( fs );
-    TLanguage language( ELangNone );
-    
-    TParsePtrC parse( KIRActiveIdleResourceFileName );
-    _LIT( resourceFileWildExt, ".r*" );
-
-    // Make sure to find all resource files, not only .rsc files as it may be so
-    // that there is only .r01, .r02, etc. files available
-    fileName.Copy( parse.Name() );
-    fileName.Append( resourceFileWildExt );
-
-    // TFindFile applies search order that is from 
-    // drive Y to A, then Z
-    CDir* entries = NULL;
-    TInt err = finder.FindWildByDir( fileName , KDC_RESOURCE_FILES_DIR, entries );
-    delete entries;
-    entries = NULL;
-    TBool found = EFalse;
-    while ( !found && err == KErrNone )
-        {
-        // Found file
-        fileName.Zero();
-        TParsePtrC foundPath( finder.File() );
-        fileName.Copy( foundPath.DriveAndPath() );
-        fileName.Append( KIRActiveIdleResourceFileName );
-        BaflUtils::NearestLanguageFile( fs, fileName, language );
-        if ( language != ELangNone && BaflUtils::FileExists( fs, fileName ) )
-            {
-            found = ETrue;
-            iActiveIdleResourceOffset = coeEnv->AddResourceFileL( fileName );
-            }
-        else
-            {
-            if ( language == ELangNone &&
-                 !baseResource.Compare( KNullDesC ) &&
-                 BaflUtils::FileExists( fs, fileName ) )
-                {
-                baseResource.Copy( fileName );
-                }
-            err = finder.FindWild( entries );
-            delete entries;
-            entries = NULL;
-            }
-        }
-
-    if ( !found && baseResource.Compare( KNullDesC ) )
-        {
-        // If we found *.rsc then better to use that than nothing
-        if ( BaflUtils::FileExists( fs, baseResource ) )
-            {
-            iActiveIdleResourceOffset = coeEnv->AddResourceFileL( baseResource );
-            }
-        }
-
-
-
-    IRLOG_DEBUG( "CIRActiveIdle::InitializeResourceLoadingL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::LoadResourcesL()
-// Loads the required resources
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::LoadResourcesL()
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::LoadResourcesL" );
-
-    if ( !iIRTerminationDetector )
-        {
-        iIRTerminationDetector = new (ELeave) CIRActiveIdleStateDetector( *this );
-        }
-
-    if ( !iEngine )
-        {
-        iEngine = CIRActiveIdleEng::NewL( *this );
-        iEngine->SecondConstructL();
-        }
-    IRLOG_DEBUG( "CIRActiveIdle::LoadResourcesL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Resume()
-// Now it is allowed to actively publish data to observers.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Resume( TAiTransitionReason /*aReason*/ )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::Resume" );
-    TRAP_IGNORE( LoadResourcesL() )
-    IRLOG_DEBUG( "CIRActiveIdle::Resume - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Suspend()
-// Not allowed to consume CPU resources, e.g MUST stop each timer,
-// cancel outstanding asynchronous operations, etc.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Suspend( TAiTransitionReason /*aReason*/ )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::Suspend" );
-
-    if ( iIRTerminationDetector )
-        {
-        iIRTerminationDetector->Cancel();
-        }
-
-    delete iEngine;
-    iEngine = NULL;
-    IRLOG_DEBUG( "CIRActiveIdle::Suspend - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Stop
-// Must free all memory and CPU resources and close all open files.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Stop( TAiTransitionReason /*aReason*/ )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::Stop" );
-    delete iIRTerminationDetector;
-    iIRTerminationDetector = NULL;
-    delete iEngine;
-    iEngine = NULL;
-    IRLOG_DEBUG( "CIRActiveIdle::Stop - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::SubscribeL
-// Adds the content observer / subscriber to plug-in.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::SubscribeL( MAiContentObserver& aObserver )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::SubscribeL" );
-    iObservers.AppendL( &aObserver );
-    IRLOG_DEBUG( "CIRActiveIdle::SubscribeL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::ConfigureL
-// Configures the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::ConfigureL( RAiSettingsItemArray& /*aSettings*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Extension
-// Returns interface extension. In S60 3.2 only event & property extensions
-// are supported.
-// ---------------------------------------------------------------------------
-//
-TAny* CIRActiveIdle::Extension( TUid aUid )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::Extension" );
-    TAny* ret = NULL;
-    if ( aUid == KExtensionUidProperty )
-    	{
-        ret = static_cast<MAiPropertyExtension*>( this );
-    	}
-    else if ( aUid == KExtensionUidEventHandler )
-    	{
-        ret = static_cast<MAiEventHandlerExtension*>( this );
-    	}
-    else
-        {
-        ret = NULL;
-        }
-    IRLOG_DEBUG( "CIRActiveIdle::Extension - Exiting." );
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::GetPropertyL
-// Reads a plugin property.
-// ----------------------------------------------------------------------------
-//
-TAny* CIRActiveIdle::GetPropertyL( TInt aProperty )
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::GetPropertyL" );
-    switch ( aProperty )
-    	{
-    	case EAiPublisherInfo:
-            return &iInfo;
-
-    	case EAiPublisherContent:
-            return static_cast<MAiContentItemIterator*>( iContent );
-
-    	case EAiPublisherResources:
-            return static_cast<MAiContentItemIterator*>( iResources );
-
-    	case EAiPublisherEvents:
-            return static_cast<MAiContentItemIterator*>( iEvents );
-
-    	default:
-    	    break;
-    	}
-    User::Leave( KErrNotSupported );
-    IRLOG_DEBUG( "CIRActiveIdle::GetPropertyL - Exiting." );
-    return NULL;
-	}
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::SetPropertyL
-// Sets a plugin property
-// ----------------------------------------------------------------------------
-//
-void CIRActiveIdle::SetPropertyL( TInt aProperty, TAny* aValue )
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::SetPropertyL" );
-    if ( aValue )
-    	{
-        switch ( aProperty )
-        	{
-        	case EAiPublisherInfo:
-            	{
-            	const TAiPublisherInfo* info =
-                    static_cast<const TAiPublisherInfo*>( aValue );
-            	iInfo.iUid.iUid = info->iUid.iUid;
-            	iInfo.iName.Copy( info->iName );
-                break;
-            	}
-        	default:
-                break;
-        	}
-    	}
-    else
-    	{
-    	User::Leave(KErrGeneral);
-    	}
-    IRLOG_DEBUG( "CIRActiveIdle::SetPropertyL - Exiting." );
-	}
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::HandleEvent
-// Invoked by the framework when plug-in must handle an event
-// ----------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleEvent( TInt aEvent, const TDesC& /*aParam*/ )
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::HandleEvent" );
-	switch ( aEvent )
-    	{
-       	case EAiIREventVolInc:
-       	    break;
-       	case EAiIREventVolDec:
-       	    break;
-       	case EAiIREventLaunchRadio:
-    	    {
-    	    TRAP_IGNORE( StartApplicationL( KUidActiveInternetRadioApp,
-    	    								 KNullDesC8 ) )
-    	    break;
-    	    }
-    	default:
-            break;
-    	}
-    IRLOG_DEBUG( "CIRActiveIdle::HandleEvent - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Clean
-// Cleans all data fields from the plugin
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Clean()
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::Clean" );
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-    	{
-        MAiContentObserver* observer = iObservers[i];
-        observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-        observer->Clean( *this, EAiIRContentVolume, KIRPublishIndex );
-        observer->Clean( *this, EAiIRContentOneLineInfoCaption, KIRPublishIndex );
-        observer->Clean( *this, EAiIRContentAppIcon, KIRPublishIndex );
-        observer->Clean( *this, EAiIRContentPresetCaption, KIRPublishIndex );
-        observer->Clean( *this, EAiIRContentArtistCaption, KIRPublishIndex );
-        observer->Clean( *this, EAiIRContentTrackCaption, KIRPublishIndex );
-        observer->Commit( reinterpret_cast<TInt32>( this ) );
-    	}
-    IRLOG_DEBUG( "CIRActiveIdle::Clean - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::StartApplicationL
-// Launches an application.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::StartApplicationL( const TUid& aUid, const TDesC8& aCommandLine )
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::StartApplicationL" );
-	
-	TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
-	TApaTask task = taskList.FindApp( KUidActiveInternetRadioApp );
-	
-//   _LIT8(KNull,"")	
-	if ( task.Exists() )
-		{
-		
-		TPtrC8 activeIdleCmdId( KIRCommandLineActiveIdle );
-    	TPtrC8 spacePtr( KIRSpace );
-    
-		TPtrC8 startNowPlayingCmdvalue(
-	    KIRCommandLineActiveIdleCommandStartNowPlayingView );
-
-	    HBufC8* buf = HBufC8::NewLC(activeIdleCmdId.Length()
-	    			 + spacePtr.Length() + startNowPlayingCmdvalue.Length());
-	    TPtr8 tail( buf->Des() );
-	    
-	       
-	    tail.Append( activeIdleCmdId );
-	    tail.Append( spacePtr );
-	    tail.Append( startNowPlayingCmdvalue );
-	    task.SendMessage(KUidActiveInternetRadioApp,tail);
-        task.BringToForeground();
-        
-        CleanupStack::PopAndDestroy( buf );
-		
-		}
-	else
-		{
-		RApaLsSession apaSession;
-	    CleanupClosePushL( apaSession );
-
-	    User::LeaveIfError( apaSession.Connect() );
-	    User::LeaveIfError( apaSession.GetAllApps() );
-
-	    TApaAppInfo appInfo;
-	    User::LeaveIfError( apaSession.GetAppInfo( appInfo, aUid ) );
-
-		CApaCommandLine* startParams = CApaCommandLine::NewLC();
-		startParams->SetExecutableNameL( appInfo.iFullName );
-		startParams->SetCommandL( EApaCommandRun );
-		startParams->SetTailEndL( aCommandLine );
-		User::LeaveIfError( apaSession.StartApp( *startParams ) );
-		CleanupStack::PopAndDestroy( 2, &apaSession );
-		}	
-	IRLOG_DEBUG( "CIRActiveIdle::StartApplicationL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleChannelChangeL
-// Handles channel change
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleChannelChangeL()
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL" );
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
-					 iChannelName );
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSPresetIndex,
-					 iPresetIndex);
-
-	IRLOG_DEBUG3( "CIRActiveIdle::HandleChannelChangeL - iChannelName=%S, iPresetIndex=%d", &iChannelName, iPresetIndex );
-
-	HBufC* stringholder = NULL;
-	
-
-	CDesCArray* array = new (ELeave) CDesCArrayFlat(KIRActiveIdleGranularity);
-	CleanupStack::PushL( array );
-	
-	MDesCArray* list = STATIC_CAST(MDesCArray*,array);
-
-	CArrayFix<TInt>* presetCounts = new (ELeave) CArrayFixFlat<TInt>( 2 );
-	CleanupStack::PushL( presetCounts );
-	CEikonEnv* env = CEikonEnv::Static();      
-	if(iPresetIndex != 0)
-		{
-		 if(iMetaData->Artist() == KNullDesC && iMetaData->Song() == KNullDesC)
-			 {
-             array->AppendL( iChannelName );
-             presetCounts->AppendL( iPresetIndex );
-			 stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_NOSTATIONDATA,*list,
-													 *presetCounts ,env );
-			 }
-		 else
-			 {
-			array->AppendL( iMetaData->Artist() ); //First string
-		    array->AppendL( iMetaData->Song() );
-		    array->AppendL( iChannelName );
-			presetCounts->AppendL( iPresetIndex );
-			stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_STATIONDATA,*list,
-													 *presetCounts ,env );
-			 }
-			
-		}
-	else
-		{
-			array->AppendL( iMetaData->Artist() ); //First string
-		    array->AppendL( iMetaData->Song() );
-		    array->AppendL( iChannelName );
-	        stringholder = StringLoader::LoadLC( R_IRAPP_AI_NOINDEX_STATIONDATA,*list);
-		}
-	
-
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-		{
-	    MAiContentObserver* observer = iObservers[i];
-
-	    observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
-	    observer->Publish( *this, EAiIRContentOneLineInfoCaption, *stringholder,
-	    					 KIRPublishIndex );
-	    observer->Commit( reinterpret_cast<TInt32>( this ) );
-		}
-
-	CleanupStack::PopAndDestroy(stringholder);
-	CleanupStack::PopAndDestroy( presetCounts );
-
-	// Pop and delete strings array
-	CleanupStack::PopAndDestroy();
-	IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL - Exiting." );	IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleMetaDataReceivedL
-// Handles meta data changes
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleMetaDataReceivedL( const CIRMetaData& aMetaData )
-    {
-	IRLOG_DEBUG( "CIRActiveIdle::HandleMetaDataReceivedL" );
-	iMetaData->SetL( aMetaData );
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
-					 iChannelName );
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSPresetIndex,
-					 iPresetIndex);
-
-	IRLOG_DEBUG3( "CIRActiveIdle::HandleChannelChangeL - iChannelName=%S, iPresetIndex=%d", &iChannelName, iPresetIndex );
-
-	HBufC* stringholder = NULL;
-
-	CDesCArray* array = new (ELeave) CDesCArrayFlat(KIRActiveIdleGranularity);
-	CleanupStack::PushL( array );
-	
-	MDesCArray* list = STATIC_CAST(MDesCArray*,array);
-
-	CArrayFix<TInt>* presetCounts = new (ELeave) CArrayFixFlat<TInt>( 2 );
-	CleanupStack::PushL( presetCounts );
-	CEikonEnv* env = CEikonEnv::Static();      
-	if(iPresetIndex != 0)
-		{
-		 if(iMetaData->Artist() == KNullDesC && iMetaData->Song() == KNullDesC)
-			 {
-             array->AppendL( iChannelName );
-             presetCounts->AppendL( iPresetIndex );
-			 stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_NOSTATIONDATA,*list,
-													 *presetCounts ,env );
-			 }
-		 else
-			 {
-			array->AppendL( iMetaData->Artist() ); //First string
-		    array->AppendL( iMetaData->Song() );
-		    array->AppendL( iChannelName );
-			presetCounts->AppendL( iPresetIndex );
-			stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_STATIONDATA,*list,
-													 *presetCounts ,env );
-			 }
-			
-		}
-	else
-		{
-			array->AppendL( iMetaData->Artist() ); //First string
-		    array->AppendL( iMetaData->Song() );
-		    array->AppendL( iChannelName );
-	        stringholder = StringLoader::LoadLC( R_IRAPP_AI_NOINDEX_STATIONDATA,*list);
-		}
-	
-
-    for ( TInt i = 0; i < iObservers.Count(); i++ )
-		{
-	    MAiContentObserver* observer = iObservers[i];
-
-	    observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
-	    observer->Publish( *this, EAiIRContentOneLineInfoCaption, *stringholder,
-	    					 KIRPublishIndex );
-
-	    observer->Commit( reinterpret_cast<TInt32>( this ) );
-		}
-
-	CleanupStack::PopAndDestroy(stringholder);
-	CleanupStack::PopAndDestroy( presetCounts );
-
-	// Pop and delete strings array
-	CleanupStack::PopAndDestroy();
-		
-    IRLOG_DEBUG( "CIRActiveIdle::HandleMetaDataReceivedL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandlePlayStopL
-// Handles data change in Stop State
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandlePlayStopL( TIRStopPlayState aState )
-	{
-	IRLOG_DEBUG( "CIRActiveIdle::HandlePlayStopL" );
-	RProperty::Get( KUidActiveInternetRadioApp, KIRPSDataChannel, iChannelName );
-	RProperty::Get(KUidActiveInternetRadioApp, KIRPSPresetIndex, iPresetIndex);
-    HBufC* oneLineInfoCaption = NULL;
-	HBufC* presetCaption = NULL;
-
-	// Checks if the channel is in favourites and if it is displays
-	// the channel name with the preset index.
-	if ( iPresetIndex == 0 )
-        {
-        oneLineInfoCaption = iChannelName.AllocLC();
-        presetCaption = iChannelName.AllocLC();
-        }
-	else
-        {
-        TBuf<KMAXLENGTH> oneLineInfoBuffer;
-        oneLineInfoBuffer.AppendNum(iPresetIndex);
-        oneLineInfoBuffer.Append(KSeparatorDot);
-	    oneLineInfoBuffer.Append(iChannelName);
-	    oneLineInfoBuffer.Trim();
-	    oneLineInfoCaption = oneLineInfoBuffer.AllocLC();
-        TBuf<KMAXLENGTH> presetBuffer;
-	    presetBuffer.AppendNum(iPresetIndex);
-	    presetBuffer.Append(KSeparatorDot);
-	    presetBuffer.Append(iChannelName);
-	    presetBuffer.Trim();
-   	    presetCaption = presetBuffer.AllocLC();
-        }
-
-	
-	
-    if ( aState != EIRStateUninitialized )
-        {
-    	for ( TInt i = 0; i < iObservers.Count(); i++ )
-    		{
-            MAiContentObserver* observer = iObservers[i];
-
-            observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
-            observer->Publish( *this, EAiIRContentPresetCaption, *presetCaption,
-            					KIRPublishIndex );
-
-            if ( aState == EIRStatePlay )
-                {
-    	        observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRPlayingIcon,
-    	        					KIRPublishIndex );
-                }
-            else
-                {
-    	        observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRStoppedIcon,
-    	        					KIRPublishIndex );
-     	        observer->Publish( *this, EAiIRContentOneLineInfoCaption, *oneLineInfoCaption,
-     	        					KIRPublishIndex );
-                }
-
-            observer->Commit( reinterpret_cast<TInt32>( this ) );
-    		}
-        }
-
-	CleanupStack::PopAndDestroy( presetCaption );
-	CleanupStack::PopAndDestroy( oneLineInfoCaption );
-	IRLOG_DEBUG( "CIRActiveIdle::HandlePlayStopL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleVolumeChangeL
-// Handles volume change
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleVolumeChangeL( const TInt aVolume )
-	  {
-	IRLOG_DEBUG( "CIRActiveIdle::HandleVolumeChangeL" );
-	if ( aVolume >= KIRMinVolumeLevel && aVolume <= KIRMaxVolumeLevel )
-	    {
-        TInt resourceId( EAiIRResourceVol1 );
-    	switch ( aVolume )
-    	    {
-    	    case EVolumeLevel0:
-    	        {
-    	        resourceId = EAiIRResourceVol0;
-    	        break;
-    	        }
-    	    case EVolumeLevel1:
-    	        {
-    	        resourceId = EAiIRResourceVol1;
-    	        break;
-    	        }
-    	    case EVolumeLevel2:
-    	        {
-    	        resourceId = EAiIRResourceVol2;
-    	        break;
-    	        }
-    	    case EVolumeLevel3:
-    	        {
-    	        resourceId = EAiIRResourceVol3;
-    	        break;
-    	        }
-    	    case EVolumeLevel4:
-    	        {
-    	        resourceId = EAiIRResourceVol4;
-    	        break;
-    	        }
-    	    case EVolumeLevel5:
-    	        {
-    	        resourceId = EAiIRResourceVol5;
-    	        break;
-    	        }
-    	    case EVolumeLevel6:
-    	        {
-    	        resourceId = EAiIRResourceVol6;
-    	        break;
-    	        }
-    	    case EVolumeLevel7:
-    	        {
-    	        resourceId = EAiIRResourceVol7;
-    	        break;
-    	        }
-    	    case EVolumeLevel8:
-    	        {
-    	        resourceId = EAiIRResourceVol8;
-    	        break;
-    	        }
-    	    case EVolumeLevel9:
-    	        {
-    	        resourceId = EAiIRResourceVol9;
-    	        break;
-    	        }
-    	    case EVolumeLevel10:
-    	        {
-    	        resourceId = EAiIRResourceVol10;
-    	        break;
-    	        }
-    	    default:
-    	        break;
-    	    }
-        for ( TInt i = 0; i < iObservers.Count(); i++ )
-        	{
-            MAiContentObserver* observer = iObservers[i];
-            //Initiates content publishing transaction.
-            observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-            //Informs that content identified by reference resourceId must be
-            //published to UI control identified by selector
-     	    //EAiIRContentVolume
-    		observer->Publish( *this, EAiIRContentVolume, resourceId, KIRPublishIndex );
-    	    //Requests framework that content publishing transaction must be
-    	    //finalized and content should be rendered to the screen.
-    	    //Displays the volume level onto the Active Idle content area.
-        	observer->Commit( reinterpret_cast<TInt32>( this ) );
-        	}
-	    }
-	else
-		{
-		User::Leave(KErrGeneral);
-		}
-    IRLOG_DEBUG( "CIRActiveIdle::HandleVolumeChangeL - Exiting." );
-
-	}
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleApplicationRunningStateChangeL
-// Handles changes in Internet Radio application running state.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleApplicationRunningStateChangeL(
-        const TIRPSApplicationRunningState aRunningState )
-    {
-    IRLOG_DEBUG( "CIRActiveIdle::HandleApplicationRunningStateChangeL" );
-    if ( iRunningState != aRunningState )
-        {
-        switch ( aRunningState )
-            {
-            case EIRPSApplicationUninitialized:
-                {
-                break;
-                }
-            //called when application starts
-            case EIRPSApplicationRunning:
-                {
-                for ( TInt i = 0; i < iObservers.Count(); i++ )
-                    {
-                    MAiContentObserver* observer = iObservers[i];
-                    //Initiates content publishing transaction.
-                    observer->StartTransaction(reinterpret_cast<TInt32>(
-                                                 this ) );
-                    //Invoked by the plug-in to inform that content identified
-                    //by reference EAiIRResourceIRStoppedIcon must be published
-                    //to UI crtl identified by selector EAiIRContentAppIcon.
-                    // Full Page Idle: shows IR icon.
-                    // Navigation Bar Idle: updates title text and switches correct layout.
-                    // App has just started, publish initially to stopped state.
-                    observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRStoppedIcon,
-                    					 KIRPublishIndex );
-                    observer->Publish( *this, EAiIRContentOneLineInfoCaption,KNullDesC,
-                    					KIRPublishIndex );
-
-                    observer->Commit( reinterpret_cast<TInt32>( this ) );
-                    }
-
-                if ( iIRTerminationDetector )
-                    {
-                    iIRTerminationDetector->StartListeningL();
-                    }
-                break;
-                }
-            // called when the application exits
-            case EIRPSApplicationClosing:
-                {
-                Clean();
-                break;
-                }
-            default:
-                break;
-            }
-        iRunningState = aRunningState;
-        }
-    IRLOG_DEBUG( "CIRActiveIdle::HandleApplicationRunningStateChangeL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleBufferingStateL
-// Handles changes in Internet Radio buffering state
-// ---------------------------------------------------------------------------
-//
-
-void CIRActiveIdle::HandleBufferingStateL(TIRBufferingState aState )
-	{
-		if (EIRStateBufferingStart == aState)
-		{
-		    // do nothing, just remove build warning
-		}
-	}
--- a/internetradio2.0/activeidlesrc/iractiveidlemain.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +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 <implementationproxy.h>
-
-#include "iractiveidle.h"
-
-/** Provides a key-value pair table, that is used to identify the correct construction function for the requested interface. */
-const TImplementationProxy KIRActiveIdleImplementationTable[] =
-	{
-    /*lint -save -e611 (Warning -- Suspicious cast)*/
-    IMPLEMENTATION_PROXY_ENTRY( 0x2000B4A7, CIRActiveIdle::NewL )
-    /*lint -restore*/
-	};
-
-const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount );
-
-// ==================== LOCAL FUNCTIONS ====================
-
-// ---------------------------------------------------------------------------
-// Returns the implementations provided by this ECOM plugin DLL.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-	{
-	aTableCount = sizeof( KIRActiveIdleImplementationTable ) / 
-							sizeof( TImplementationProxy );
-	return KIRActiveIdleImplementationTable;
-	}
-
-// ================= MEMBER FUNCTIONS =======================
--- a/internetradio2.0/activeidlesrc/iractiveidlestatedetector.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Source file of CIRActiveIdleStateDetector
-*
-*/
-
-
-#include "irdebug.h"
-#include <apgtask.h>
-#include <eikenv.h>
-
-#include "iractiveidlestatedetector.h"
-#include "iractiveidleengnotifyhandler.h"
-#include "ircommon.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleStateDetector::CIRActiveIdleStateDetector(MIRActiveIdleEngNotifyHandler& 
-	aStateObserver):CActive(CActive::EPriorityStandard),iStateObserver(aStateObserver)
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdleStateDetector::~CIRActiveIdleStateDetector()
-    {
-	Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// Starts listening
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleStateDetector::StartListeningL()
-    {
-    IRLOG_DEBUG("CIRActiveIdleStateDetector::StartListeningL.");
-	if ( !IsActive() )
-	    {
-    	TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
-    	TApaTask task = taskList.FindApp( KUidInternetRadioApp );
-    		
-    	if ( task.Exists() )
-    		{
-    		TThreadId threadId = task.ThreadId();
-    		RThread thread;
-    		User::LeaveIfError( thread.Open( threadId ) );
-    		CleanupClosePushL( thread );
-    		User::LeaveIfError( thread.Process( iProcess ) );
-    		CleanupStack::PopAndDestroy();
-            IRLOG_INFO("CIRActiveIdleStateDetector::StartListeningL - Logon.");
-        	iProcess.Logon( iStatus );
-        	SetActive();	
-    		}
-		else
-		    {
-            IRLOG_INFO("CIRActiveIdleStateDetector::StartListeningL  - sending EIRPSApplicationClosing.");
-	        iStateObserver.HandleApplicationRunningStateChangeL( EIRPSApplicationClosing );
-		    }
-	    }
-    IRLOG_DEBUG("CVRActiveIdleStateDetector::StartListeningL - Exiting.");	    
-    }
-
-// ---------------------------------------------------------------------------
-// Implements cancellation of an outstanding request
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleStateDetector::DoCancel()
-    {
-    IRLOG_DEBUG("CIRActiveIdleStateDetector::DoCancel");
-	iProcess.LogonCancel( iStatus );
-	iProcess.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Handles request completion event
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdleStateDetector::RunL()
-    {
-    IRLOG_INFO2("CIRActiveIdleStateDetector::RunL (%d) sending EIRPSApplicationClosing", iStatus.Int());
-	iProcess.Close();
-	// Internet Radio has been closed
-	iStateObserver.HandleApplicationRunningStateChangeL( EIRPSApplicationClosing );
-    }
-
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.css	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1041 +0,0 @@
-* {
-	nav-index: none;
-}
-
-/* Hide arabic triggers. Only class="western" are shown */
-trigger.arabic {
-   display: none;
-}
-view { /* main_idle_act2_pane */
-	display: block; 
-	position: static; 	
-	width: 100%;
-	height: 100%;
-	direction: ltr;
-	block-progression: lr;
-	background-image: wallpaper;
-}
-
-menuitem#SK2{
-	_s60-longtap: true;
-}
-/**************************************
-	NAVI BAR
-***************************************/
-
-box#pluginIconArea { /* popup_ai2_link_window */
-	display: block; 
-	visibility: visible;
-	position: absolute; 	
-	width: 7.25u;	
-	height: 28.75u;	
-	left: 1.0u;	
-	top: 1.5u;		
-	padding-left: 0.85u;	
-	padding-right: 0.65u;	
-	padding-top: 1.00u;	
-	padding-bottom: 1.00u;
-	
-	block-progression: tb;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-
-
-image.pluginAreaIcon { /* grid_ai2_link_window_g1 */
-	display: block; 
-	visibility: visible;
-	position: static; 
-	width: 5.75u;
-	/*height: 20%;*/	/* with NewsTicker */
-	height: 5.75u;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	block-progression: tb;
-	z-index: 1;
-}
-
-image.pluginAreaIcon:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5136)";
-}
-
-image#shortcutPluginIcon {
-    nav-index: 1;
-/* Block with flag '__NEWSTICKER' skipped. */
-}
-image#organizerPluginIcon {
-    nav-index: 2;
-}
-image#musicPlayerPluginIcon {
-    nav-index: 3;
-}
-image#radioPluginIcon {
-    nav-index: 4;
-}
-image#personalizationPluginIcon {
-    nav-index: 5;
-/* Block with flag '__NEWSTICKER' skipped. */
-}
-
-
-/**************************************
-	SAT AREA
-***************************************/
-
-box#SATPluginContainer {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 9.75u;
-	top: 1.0u;
-	width: auto;
-	height: 4.0u;
-	background-image: auto;
-}
-
-text.satText	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 4.0u;
-	left: auto;
-	margin-right: 1.0u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;         /* TODO: check */
-	text-align: right;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-image.satIcon	{
-	display: block;
-	visibility: visible;
-	position: static;
-	top: 0.25u;
-	left: auto;
-	margin-right: 1.0u;
-	width: 3.5u;
-	height: 3.5u;
-}
-
-
-/**************************************
-	PLUGIN AREA
-***************************************/
-
-box#pluginContainerArea { /* popup_ai2_data_window */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	height: auto;
-	left: 10.0u;		
-	top: 1.5u;	
-	margin-right: 1.0u;
-	margin-bottom: 1.5u;
-	/*padding-left: 
-	padding-right:*/
-	block-progression: tb;
-	z-index: 0;
-}
-
-
-/*********
-	GENERAL
-**********/
-
-box.pluginContainer { /*  popup_ai2_data_window  */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: 100%;
-	height: 100%;
-	block-progression: tb;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-
-/* There seems to be a bug in the animation system that doesn't start
-the animation correctly. This is to go around it. */
-
-box#shortcutPluginAnimationFixButton { 
-	display: none;
-	visibility: hidden;
-	width: 0%;
-	height: 0%;
-}
-
-button.fakeButton { 
-	display: none;
-	visibility: hidden;
-	width: 0%;
-	height: 0%;
-}
-
-text.titleText{ /* heading_ai2_ gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	block-progression: lr;
-	width: auto;
-	height: 14.4%;	
-	padding-left: 1.2u;
-	padding-right: 1.1u;
-	margin-left: 0.7u;
-	margin-right: 0.9u;
-	padding-bottom: 0.5u;
-	border-bottom-width: thin;
-	border-bottom-style: dotted;
-	border-bottom-color: auto;
-	nav-index: auto;
-	font-family: EAknLogicalFontPrimaryFont; 
-	font-size: 4.0u; 
-	color: "SKIN(268458534 13056 19)";
-}
-
-text.titleText:focus{
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-	color: "SKIN(268458534 13056 9)";
-}
-
-text.genericButtonText { /* ai2_gene_pane_t1 */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	padding-left: 1.0u;
-	padding-right: 1.0u;
-	margin-left: 0.7u;
-	margin-right: 0.9u;
-	padding-bottom: 0.6u;
-	padding-top: -0.3u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;        
-	color: "SKIN(268458534 13056 19)";
-	nav-index: auto;  
- 	border-top-width: thin;
-	border-top-style: dotted;
-	border-top-color: auto;
-}
-
-text.genericButtonText:focus{
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-
-/************************
-	SHORTCUT PLUGIN AREA 
-*************************/
-
-image#shortcutPluginIcon { _s60-initial-focus: 1; }
-
-
-/************************
-	CALENDAR PLUGIN AREA 
-*************************/
-box#organizerPluginContainer { /*  popup_ai2_data_window  */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: 100%;
-	height: 100%;
-	block-progression: tb;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-/* Organiser items are buttons because they contain 1-2 textelements
-   and an image element */
-button.organizerButton { /* ai2_gene_pane */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 13.5%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	nav-index: auto;  
- 	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-}
-
-button.organizerButtonLastPosition { /* ai2_gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 12.5%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	margin-bottom: 0.65u;
-	nav-index: auto;  
- 	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-}
-
-button.organizerButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-	
-}
-
-button.organizerButtonLastPosition:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-button#eventButton4 { 	display: none; 	nav-index: none; }
-button#eventButton5 { 	display: none; 	nav-index: none; }
-button#eventButton6 { 	display: none; 	nav-index: none; }
-
-image.eventIcon { /* ai2_gene_pane_g2 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 0.75u;	
-	left: 1.25u;	
-	width: 4.0u;	
-	height: 4.0u;	
-}
-
-text.eventText1 { /* ai2_gene_pane_t1  */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4.0u;
-	left: 6.25u;
-	right: 1.0u;
-	/*top: 0.75u;*/
-	top: 6%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-text.eventText2 { /* ai2_gene_pane_t1  */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4.0u;
-	/*top: 4.5u;	*/
-	top: auto;
-	bottom: 8%;
-	left: 6.25u;
-	right: 1.0u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-/*********************
-	PLAYER PLUGIN AREA 
-**********************/
-
-box#volumeIndicator { /* ai2_mp_volume_pane */
-	display: none;
-	visibility: visible;
-	position: absolute;
-	block-progression: lr;
-	top: 15.5%;
-	width: auto;
-	height: 14%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;	
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-
-}
-
-
-box#volumeIndicator:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-
-}
-
-
-
-image#musicPlayerVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 1.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#musicPlayerVolumeDownIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 1.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#musicPlayerSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#musicPlayerSpeakerIconHighlight { 
-	display: block;
-	visibility: hidden;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#musicPlayerSpeakerMutedIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#musicPlayerSpeakerMutedIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-/*
-image#musicPlayerVolumeIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 9.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-*/
-
-volumecontrol#musicPlayerVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 9.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-slider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#musicPlayerVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#musicPlayerVolumeUpIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-/*image#musicPlayerInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	z-index: 11;
-}
-
-image#musicPlayerInactiveVolumeUpIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	z-index: 10;
-}*/
-
-
-/* Replaces volume control and playback info when player is inactive */
-box#playerInActive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-text#musicPlayerInActive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	text-align: center;
-	margin-top: auto;
-	margin-bottom: 45.0%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;	*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-box#infoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-/* A box around the artist and track name */
-/* the idea here is to display max 6 rows (max-line-amount). */
-/* The track has higher display-prio so it will be displayed first. */
-/* The track will get all the lines (max 6) it needs in order to display its name */
-/* Whats left of the 6 lines from track name will be used for artist */
-box#trackAndArtist{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	/* For landscape orientation. This way we get the */
-	/* last line out of sight */	
-	height: 100%;
-	margin-bottom: 10.5u;	
-}
-
-box#artistLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: adaptive;
-	_s60-display-priority: 11;
-}
-
-
-box#trackLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: adaptive;
-	_s60-display-priority: 10;
-
-}
-
-
-box#durationLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: 2.0u;
-}
-
-
-image.playerStatusIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: 3.5u;
-	height: 3.5u;
-	left: 1.3u;
-	/*right: auto;*/
-	top: 1.0u;
-}
-
-text#time{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4.0u;
-	left: 7.5u;
-	right: 1.00u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	margin-left: 1.0u;
-	margin-right: 1.0u;
-	margin-top: 0.25u;
-}
-
-text.playerTextLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: adaptive;
-
-	margin-left: 1.0u;
-	margin-right: 2.75u;
-	margin-top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;	*/
-	color: "SKIN(268458534 13056 19)";	
-	text-overflow-mode: wrap;
-	max-line-amount: 6;
-}
-
-
-/*********************
-	VISUAL/INTERNET RADIO PLUGIN AREA 
-**********************/
-
-button.radioTitleButton { /* heading_ai2_ gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	block-progression: lr;
-	width: auto;
-	height: 14.4%;	
-	padding-left: 1.2u;
-	padding-right: 1.1u;
-	margin-left: 0.7u;
-	margin-right: 0.9u;
-	padding-bottom: 0.5u;
-	border-bottom-width: thin;
-	border-bottom-style: dotted;
-	border-bottom-color: auto;
-	nav-index: auto;
-}
-
-button.radioTitleButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-text.radioTitleText { /* heading_ai2_gene_pane_t1 */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	font-family: EAknLogicalFontPrimaryFont; 
-	font-size: 4.0u;      
-	color: "SKIN(268458534 13056 19)";
-}
-
-/* Invisible icon that is used to switch correct layout */
-image.invisibleRadioTitleIcon {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 0.25u;
-	top: 0.25u;
-	width: 4.0u;
-	height: 4.0u;
-}
-
-box#radioVolumeIndicator {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	block-progression: lr;
-	top: 15.5%;
-	width: auto;
-	height: 14%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;	
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-
-}
-
-
-box#radioVolumeIndicator:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-
-}
-
-
-
-image#radioVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 1.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#radioVolumeDownIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 1.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#radioSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#radioSpeakerIconHighlight { 
-	display: block;
-	visibility: hidden;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#radioSpeakerMutedIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-image#radioSpeakerMutedIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 4.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-
-}
-
-
-volumecontrol#radioVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 9.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-slider#radioSlider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#radioVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#radioVolumeUpIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 30.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-
-
-/* Replaces volume control and playback info when radio is inactive */
-box#radioInactive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-text#radioInactiveText	{
-	display: block;
-	visibility: visible;
-	position: static;
-	text-align: center;
-	margin-top: auto;
-	margin-bottom: 45.0%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-box#visualRadioInfoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-
-box#visualRadioNameLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-	block-progression: lr;
-}
-
-
-box#visualRadioLocationLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-}
-
-
-box#visualRadioFrequencyLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-	margin-bottom: auto;
-}
-
-
-text#visualRadioNumberTextLine {
-	width: 4.0u;
-	height:	4.0u;
-	left: 2.75u;
-	top: 0.25u;
-	font-weight: bold;
-	text-align: right;
-}
-
-
-text#visualRadioNameTextLine {
-	font-weight: bold;
-}
-
-
-text.visualRadioTextLine {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height:	4.0u;
-	left: 9.0u;
-	right: 1.75u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";	
-	text-overflow-mode: wrap;
-	max-line-amount: 1;
-}
-
-
-box#inetRadioInfoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-
-box#inetRadioPresetLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 2.0u;
-}
-
-
-box#inetRadioArtistLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-}
-
-
-box#inetRadioTrackLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-}
-
-
-text.inetRadioTextLine {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height:	4.0u;
-	left: 2.75u;
-	right: 1.75u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";	
-	text-overflow-mode: wrap;
-	max-line-amount: 1;
-}
-
-
-text#inetRadioPresetTextLine {
-	font-weight: bold;
-}
-
-
-/****************************
-	PERSONALIZATION PLUGIN AREA 
-*****************************/
-
-/* Defined in "General" definitions */
-
-
-/*********************************
-	WRAPPER BOX FOR SAT & NEWSTICKER
-**********************************/
-
-box#SATAndNewstickerBox {
-	display: block;
-	position: absolute;
-	width: 100%;
-	height: 100%;
-	z-index: 0;
-}
-
-/* Block with flag '__NEWSTICKER' skipped. */
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.dtd	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,375 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-============================================================================
-<FileName: "ActiveIdle.dtd">
-<PartOf  : "ActiveIdle2">
-
-<FileDescription: "Localization strings for ActiveIdle2 Navi Bar XUIKON theme">
-<FileVersion    : >
-
-<Copyright:
-"Copyright © 2005 Nokia Corporation.
-This material, including documentation and any related
-computer programs, is protected by copyright controlled by
-Nokia Corporation. All rights are reserved. Copying,
-including reproducing, storing,  adapting or translating, any
-or all of this material requires the prior written consent of
-Nokia Corporation. This material also contains confidential
-information which may not be disclosed to others without the
-prior written consent of Nokia Corporation.">
-============================================================================
--->
-
-<!-- NOTE: make sure that there is at last one space character (hex 20) after the entity name -->
-
-<!--  LOCALISATION STRINGS  -->
-<!--
-qtn_ai_skin_iconbar.attributes
-qtn_ai_skin_iconbar.layout "list_single_graphic_pane_t1"
-qtn_ai_skin_iconbar.release "3.2"
-qtn_ai_skin_iconbar.description "Title of the theme"
-qtn_ai_skin_iconbar.parents "Theme selection view"
--->
-<!ENTITY qtn_ai_skin_iconbar "Navigation bar">
-
-<!-- Static UI strings -->
-
-<!--
-qtn_ai_shorts_title.attributes
-qtn_ai_shorts_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_shorts_title.release "3.2"
-qtn_ai_shorts_title.description "Title of shortcut plugin"
-qtn_ai_shorts_title.grammar "Use shortcuts to launch applications."
-qtn_ai_shorts_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_shorts_title "Shortcuts">
-
-<!--
-qtn_ai_cal_title.attributes
-qtn_ai_cal_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_cal_title.release "3.2"
-qtn_ai_cal_title.description "Title of calendar plugin"
-qtn_ai_cal_title.grammar "Mark your important notes in calendar."
-qtn_ai_cal_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_cal_title "Calendar">
-
-<!--
-qtn_ai_player_title.attributes
-qtn_ai_player_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_player_title.release "3.2"
-qtn_ai_player_title.description "Title of music player plugin"
-qtn_ai_player_title.parents "heading_ai2_gene_pane"
-qtn_ai_player_title
--->
-<!ENTITY qtn_ai_player_title "Music player">
-
-<!--
-qtn_ai_radio_title.attributes
-qtn_ai_radio_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_radio_title.release "3.2"
-qtn_ai_radio_title.description "Title of FM-radio plugin"
-qtn_ai_radio_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_radio_title "FM Radio">
-
-<!--
-qtn_ai_pers_title.attributes
-qtn_ai_pers_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_pers_title.release "3.2"
-qtn_ai_pers_title.description "Title of personalization plugin"
-qtn_ai_pers_title.grammar "Personalization is a mighty tool for making your phone unique."
-qtn_ai_pers_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_pers_title "Personalization">
-
-<!--
-qtn_ai_nt_title.attributes
-qtn_ai_nt_title.layout "heading_ai2_gene_pane_t1"
-qtn_ai_nt_title.release "3.2"
-qtn_ai_nt_title.description "Title of news ticker plugin"
-qtn_ai_nt_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_nt_title "News ticker">
-
-
-<!-- Text resources for dynamic UI strings -->
-
-<!-- Shortcut plug-in text resources -->
-
-<!--
-shortcut_EmptyCaption.attributes
-shortcut_EmptyCaption.layout "list_ai2_gene_pane_t1"
-shortcut_EmptyCaption.release "3.2"
-shortcut_EmptyCaption.description "Empty shortcut"
-shortcut_EmptyCaption.parents "list_ai2_gene_pane"
--->
-<!ENTITY shortcut_EmptyCaption " ">
-
-<!--
-qtn_set_idle_skey_new_msg.attributes
-qtn_set_idle_skey_new_msg.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skey_new_msg.release "3.2"
-qtn_set_idle_skey_new_msg.description "New message shortcut"
-qtn_set_idle_skey_new_msg.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skey_new_msg "New message">
-
-<!--
-qtn_set_idle_skeys_email_editor.attributes
-qtn_set_idle_skeys_email_editor.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skeys_email_editor.release "3.2"
-qtn_set_idle_skeys_email_editor.description "New e-mail shortcut"
-qtn_set_idle_skeys_email_editor.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skeys_email_editor "New e-mail">
-
-<!--
-qtn_apps_syncml_mail_gs.attributes
-qtn_apps_syncml_mail_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_syncml_mail_gs.release "3.2"
-qtn_apps_syncml_mail_gs.description "New SyncML mail shortcut"
-qtn_apps_syncml_mail_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_syncml_mail_gs "New SyncML mail">
-
-<!--
-qtn_apps_mmspostcard_gs.attributes
-qtn_apps_mmspostcard_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_mmspostcard_gs.release "3.2"
-qtn_apps_mmspostcard_gs.description "New MMS postcard shortcut"
-qtn_apps_mmspostcard_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_mmspostcard_gs "New MMS Postcard">
-
-<!--
-qtn_apps_audio_msg_gs.attributes
-qtn_apps_audio_msg_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_audio_msg_gs.release "3.2"
-qtn_apps_audio_msg_gs.description "New audio message shortcut"
-qtn_apps_audio_msg_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_audio_msg_gs "New Audio msg">
-
-<!--
-qtn_set_idle_skey_select_msg_type.attributes
-qtn_set_idle_skey_select_msg_type.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skey_select_msg_type.release "3.2"
-qtn_set_idle_skey_select_msg_type.description "Select message type shortcut"
-qtn_set_idle_skey_select_msg_type.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skey_select_msg_type "Select msg type">
-
-<!--
-qtn_apps_idle_skin_gs.attributes
-qtn_apps_idle_skin_gs.layout "list_single_large_graphic_pane_t1_cp2"
-qtn_apps_idle_skin_gs.release "3.2"
-qtn_apps_idle_skin_gs.description "Change theme shortcut"
-qtn_apps_idle_skin_gs.parents "list_single_large_graphic_pane"
--->
-<!ENTITY qtn_apps_idle_skin_gs "Change idle theme">
-
-<!--
-qtn_idle_skey_new_msg.attributes
-qtn_idle_skey_new_msg.layout "control_pane_t2"
-qtn_idle_skey_new_msg.release "3.2"
-qtn_idle_skey_new_msg.description "New message shortcut"
-qtn_idle_skey_new_msg.parents "control_pane"
--->
-<!ENTITY qtn_idle_skey_new_msg "New msg.">
-
-<!--
-qtn_apps_email_skey.attributes
-qtn_apps_email_skey.layout "control_pane_t2"
-qtn_apps_email_skey.release "3.2"
-qtn_apps_email_skey.description "New e-mail shortcut"
-qtn_apps_email_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_email_skey "New mail">
-
-<!--
-qtn_apps_syncml_mail_skey.attributes
-qtn_apps_syncml_mail_skey.layout "control_pane_t2"
-qtn_apps_syncml_mail_skey.release "3.2"
-qtn_apps_syncml_mail_skey.description "New SyncML mail shortcut"
-qtn_apps_syncml_mail_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_syncml_mail_skey "New sync.mail">
-
-<!--
-qtn_apps_mmspostcard_skey.attributes
-qtn_apps_mmspostcard_skey.layout "control_pane_t2"
-qtn_apps_mmspostcard_skey.release "3.2"
-qtn_apps_mmspostcard_skey.description "New MMS postcard shortcut"
-qtn_apps_mmspostcard_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_mmspostcard_skey "New postcard">
-
-<!--
-qtn_apps_audio_msg_skey.attributes
-qtn_apps_audio_msg_skey.layout "control_pane_t2"
-qtn_apps_audio_msg_skey.release "3.2"
-qtn_apps_audio_msg_skey.description "New audio message shortcut"
-qtn_apps_audio_msg_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_audio_msg_skey "New audiomsg">
-
-<!--
-qtn_apps_idle_skin_skey.attributes
-qtn_apps_idle_skin_skey.layout "control_pane_t2"
-qtn_apps_idle_skin_skey.release "3.2"
-qtn_apps_idle_skin_skey.description "Change theme shortcut"
-qtn_apps_idle_skin_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_idle_skin_skey "Idle theme">
-
-
-<!-- Personalization plug-in text resources -->
-
-<!--
-qtn_ai_pers_all_profiles.attributes
-qtn_ai_pers_all_profiles.layout "list_ai2_gene_pane_t1"
-qtn_ai_pers_all_profiles.release "3.2"
-qtn_ai_pers_all_profiles.description "Open profiles application shortcut"
-qtn_ai_pers_all_profiles.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_pers_all_profiles "All profiles">
-
-<!--
-qtn_ai_pers_change_theme.attributes
-qtn_ai_pers_change_theme.layout "list_ai2_gene_pane_t1"
-qtn_ai_pers_change_theme.release "3.2"
-qtn_ai_pers_change_theme.description "Open personalization application shortcut"
-qtn_ai_pers_change_theme.grammar "Use themes to personalize your phone."
-qtn_ai_pers_change_theme.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_pers_change_theme "Themes">
-
-<!--
-qtn_ai_pers_change_wallpaper.attributes
-qtn_ai_pers_change_wallpaper.layout "list_ai2_gene_pane_t1"
-qtn_ai_pers_change_wallpaper.release "3.2"
-qtn_ai_pers_change_wallpaper.description "Open wallpaper view in personalization application shortcut"
-qtn_ai_pers_change_wallpaper.grammar "Set cool wallpaper to color up your phone."
-qtn_ai_pers_change_wallpaper.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_pers_change_wallpaper "Wallpaper">
-
-<!--
-qtn_apps_sd_list.attributes
-qtn_apps_sd_list.layout "list_single_large_graphic_pane_t1_cp2"
-qtn_apps_sd_list.release "3.2"
-qtn_apps_sd_list.description "Open speed dial application shortcut"
-qtn_apps_sd_list.parents "list_single_large_graphic_pane"
--->
-<!ENTITY qtn_apps_sd_list "Speed dial">
-
-<!--
-qtn_ai_pers_change_sc.attributes
-qtn_ai_pers_change_sc.layout "list_ai2_gene_pane_t1"
-qtn_ai_pers_change_sc.release "3.2"
-qtn_ai_pers_change_sc.description "Open shortcuts view in general settings shortcut"
-qtn_ai_pers_change_sc.grammar "Use shortcuts to launch applications."
-qtn_ai_pers_change_sc.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_ai_pers_change_sc "Shortcuts">
-
-<!--
-text_softkey_back.attributes
-text_softkey_back.layout "control_pane_t2"
-text_softkey_back.release "3.2"
-text_softkey_back.description "Back text for SK2"
-text_softkey_back.grammar "Click back to return to previous view."
-text_softkey_back.parents "control_pane"
--->
-<!ENTITY text_softkey_back "Back">
-
-<!-- Middle soft key text resources -->
-
-<!--
-qtn_msk_select.attributes
-qtn_msk_select.layout "control_pane_t3/opt3"
-qtn_msk_select.release "3.2"
-qtn_msk_select.description "Select text for MSK"
-qtn_msk_select.grammar "Click select for previewing content."
-qtn_msk_select.parents "control_pane"
--->
-<!ENTITY qtn_msk_select "Select">
-
-<!--
-qtn_msk_open.attributes
-qtn_msk_open.layout "control_pane_t3/opt3"
-qtn_msk_open.release "3.2"
-qtn_msk_open.description "Open text for MSK"
-qtn_msk_open.grammar "Click open for opening content."
-qtn_msk_open.parents "control_pane"
--->
-<!ENTITY qtn_msk_open "Open">
-
-
-<!-- Organizer plug-in text resources -->
-
-<!--
-qtn_ai_cale_no_event_today_short.attributes
-qtn_ai_cale_no_event_today_short.layout "ai2_gene_pane_t1"
-qtn_ai_cale_no_event_today_short.release "3.2"
-qtn_ai_cale_no_event_today_short.description "No events for today"
-qtn_ai_cale_no_event_today_short.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_ai_cale_no_event_today_short "No events for today">
-
-<!--
-qtn_ai_cale_no_more_ev_td_short.attributes
-qtn_ai_cale_no_more_ev_td_short.layout "ai2_gene_pane_t1"
-qtn_ai_cale_no_more_ev_td_short.release "3.2"
-qtn_ai_cale_no_more_ev_td_short.description "No more events for today"
-qtn_ai_cale_no_more_ev_td_short.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_ai_cale_no_more_ev_td_short "No more events for Today">
-
-<!--
-qtn_ai_player_no_tracks.attributes
-qtn_ai_player_no_tracks.layout "ai2_gene_pane"
-qtn_ai_player_no_tracks.release "3.2"
-qtn_ai_player_no_tracks.description "[No tracks playing]"
-qtn_ai_player_no_tracks.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_ai_player_no_tracks "[No tracks playing]">
-
-<!--
-qtn_vr_ai_radiolauncher.attributes
-qtn_vr_ai_radiolauncher.layout "heading_ai2_gene_pane_t1/opt1"
-qtn_vr_ai_radiolauncher.release "3.2"
-qtn_vr_ai_radiolauncher.description "Radio Launcher title in Active Idle 2"
-qtn_vr_ai_radiolauncher.parents "heading_ai2_gene_pane"
-qtn_vr_ai_radiolauncher
--->
-<!ENTITY qtn_vr_ai_radiolauncher "Radio">
-
-<!--
-qtn_vr_ai_vradio_title.attributes
-qtn_vr_ai_vradio_title.layout "heading_ai2_gene_pane_t1/opt1"
-qtn_vr_ai_vradio_title.release "3.2"
-qtn_vr_ai_vradio_title.description "Visual Radio title in Active Idle 2"
-qtn_vr_ai_vradio_title.parents "heading_ai2_gene_pane"
-qtn_vr_ai_vradio_title
--->
-<!ENTITY qtn_vr_ai_vradio_title "Visual Radio">
-
-<!--
-qtn_vr_ai_radio_not_active.attributes
-qtn_vr_ai_radio_not_active.layout "ai2_gene_pane"
-qtn_vr_ai_radio_not_active.release "3.2"
-qtn_vr_ai_radio_not_active.description "Text in content area when radio not active"
-qtn_vr_ai_radio_not_active.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_vr_ai_radio_not_active "Radio not active">
-
-<!--
-qtn_ir_ai_irapp_title.attributes
-qtn_ir_ai_irapp_title.layout "heading_ai2_gene_pane_t1/opt1"
-qtn_ir_ai_irapp_title.release "3.2"
-qtn_ir_ai_irapp_title.description "InternetRadio title in Active Idle"
-qtn_ir_ai_irapp_title.parents "heading_ai2_gene_pane"
--->
-<!ENTITY qtn_ir_ai_irapp_title "Internet Radio">
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle.xml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2902 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xmluiml SYSTEM "ActiveIdle.dtd">
-<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
-
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-  <!--Application events -->
-  <actions>
-    <action>
-      <trigger name="startup"/>
-      <trigger name="uidefinitionmodificationend"/>
-      <event name="READY"/>
-    </action>
-    <action>
-      <trigger name="shutdown"/>
-      <event name="DOWN"/>
-    </action>
-    <action>
-      <trigger name="uidefinitionmodificationstart"/>
-      <event name="NEW_UI"/>
-    </action>
-    <action>
-      <trigger name="screendevicechange"/>
-      <event name="LAYOUT"/>
-    </action>
-  </actions>
-
-
-  <!-- Views -->
-  <views>
-
-    <!--###########################
-        #####   AI plug-ins   #####
-        ###########################-->
-    <property class="ContentSource" name="Shortcut" value="0x102750FA" load_ordinal="1"/>
-    <property class="ContentSource" name="Organizer" value="0x102750FE" load_ordinal="2"/>
-    <property class="ContentSource" name="MusicPlayer" value="0x10207B73" load_ordinal="3"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-    <property class="ContentSource" name="Profile" value="0x10275101" load_ordinal="5"/>
-    <property class="ContentSource" name="SAT" value="0x102078EB" load_ordinal="6"/>
-    <property class="ContentSource" name="VisualRadio" value="0x10208A89" load_ordinal="7"/>
-    <property class="ContentSource" name="InetRadio" value="0x2000B4A7" load_ordinal="8"/>
-
-
-    <!--###################################
-        ###  Plug-in specific settings  ###
-        ###################################-->
-
-    <!--###################################
-        ###  Shortcut plug-in settings   ##
-        ###################################-->
-    <!-- Always visible shortcuts -->
-    <!-- Shortcut #1, Messaging -->
-    <!-- NOTE: these indexes start from 1 -->
-    <property class="Settings/Shortcut" name="0x00000001" value="localapp:0x100058C5"/>
-    <!-- Shortcut #2, Phonebook -->
-    <property class="Settings/Shortcut" name="0x00000002" value="localapp:0x101F4CCE"/>
-    <!-- Shortcut #3, Clock -->
-    <property class="Settings/Shortcut" name="0x00000003" value="localapp:0x10005903"/>
-    <!-- Shortcut #4, Media Gallery 2 -->
-    <property class="Settings/Shortcut" name="0x00000004" value="localapp:0x101F8599"/>
-    <!-- Shortcut #5, Browser -->
-    <property class="Settings/Shortcut" name="0x00000005" value="localapp:0x10008D39"/>
-    <!-- Shortcut #6, Change theme -->
-    <property class="Settings/Shortcut" name="0x00000006" value="localapp:0x10005A32?view=0x102750A7"/>
-
-    <!-- NOTE! Shortcut settings are used also in Personalization UI (see settings below). -->
-
-    <!-- Optionally visible shortcuts -->
-    <!-- Soft key #1, Applications -->
-    <property class="Settings/Shortcut" name="0x01000100" value="localapp:0x101F4CD2"/>
-    <!-- Soft key #2, Contacts -->
-    <property class="Settings/Shortcut" name="0x01000101" value="localapp:0x101F4CCE"/>
-
-
-    <!--###################################
-        ###  Organizer plug-in settings  ##
-        ###################################-->
-    <!--  Item count and size settings -->
-    <!--        Total line count  -->
-    <property class="Settings/Organizer" name="0x01" value="6"/>
-    <!--        Timed item line count -->
-    <property class="Settings/Organizer" name="0x02" value="2"/>
-    <!--        Non Timed item line count -->
-    <property class="Settings/Organizer" name="0x03" value="1"/>
-    <!--        Line count reserved for non timed items -->
-    <property class="Settings/Organizer" name="0x04" value="2"/>
-        <!-- Publish end time for upcoming timed items -->
-    <property class="Settings/Organizer" name="0x05" value="0"/>
-        <!-- Use alternate publishing for upcoming and ongoing items -->
-    <property class="Settings/Organizer" name="0x06" value="0"/>
-        <!-- Open event to viewer 0 / editor 1 -->
-    <property class="Settings/Organizer" name="0x07" value="0"/>
-
-
-    <!-- Main view -->
-
-    <view id="ActiveIdleView">
-      <actions>
-        <action id="KeyEnd">
-          <trigger name="keyevent">
-            <property name="scancode" value="197"/>
-            <property name="eventtype" value="1"/>
-          </trigger>
-          <event name="system/setfocus">
-            <property name="id" value="shortcutPluginIcon"/>
-          </event>
-          <event name="system/set">
-            <property name="id" value="SATAndNewstickerBox"/>
-            <property name="name" value="display"/>
-            <property name="value" value="block"/>
-            <property name="type" value="string"/>
-          </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-          <event name="system/set">
-            <property name="id" value="shortcutPluginContainer"/>
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-          </event>
-          <event name="system/set">
-            <property name="id" value="organizerPluginContainer"/>
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-          </event>
-          <event name="system/set">
-            <property name="id" value="playerPluginContainer"/>
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-          </event>
-          <event name="system/set">
-            <property name="id" value="radioPluginContainer"/>
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-          </event>
-          <event name="system/set">
-            <property name="id" value="personalizationPluginContainer"/>
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-          </event>
-        </action>
-      </actions>
-
-      <!--################################
-        ####    Plug-in icon bar    ####
-        ################################-->
-
-      <box id="pluginIconArea" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-
-        <!-- Shortcut plug-in
-          ##################-->
-
-        <image id="shortcutPluginIcon" path="SKIN(270501603 6186)" class="pluginAreaIcon" focusable="true" stylusstates="2">
-          <actions>
-            <!-- Get focus -> Hide SAT & NT, show plug-in content -->
-            <action>
-              <trigger name="gainfocus"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="1"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <!-- Arrow left -> Hide plug-in content -->
-            <action>
-              <trigger name="down"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="2"/>
-              </trigger>              
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-            </action>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-
-            <!-- Click Select key or tap icon -->
-            <!--action>
-              <trigger name="activate"/>
-              <trigger name="stylus">
-                <property name="doubleclicked" value="up"/>
-              </trigger>
-              <event name="ui/focusgained(shortcutPluginContainer,SATAndNewstickerBox)"/>
-            </action-->
-            <action>
-              <trigger name="activate"/>
-              <trigger class="western" name="up"/>
-              <trigger class="arabic" name="down"/> 
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name="system/setfocus">
-                <property name="id" value="shortcutPluginAnimationFixButton"/>
-              </event>
-              <event name="system/setfocus">
-                <property name="id" value="shortcutButton1"/>         
-              </event>
-
-            </action>
-            <!-- Select text to MSK label -->
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-          </actions>
-        </image>
-
-        <!-- Organizer plug-in
-           #################-->
-
-        <image id="organizerPluginIcon" path="SKIN(270501046 268458241)" class="pluginAreaIcon" focusable="true" stylusstates="2">
-          <actions>
-            <!-- Show plug-in content -->
-            <action>
-              <trigger name="gainfocus"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="1"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <!-- Hide plug-in content -->
-            <action>
-              <trigger class="western" name="down"/>
-              <trigger class="arabic" name="up"/> 
-              <trigger name="stylus">
-                <property name="stylusstate" value="2"/>
-              </trigger>                            
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>    
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-            </action>
-
-            <!-- Move focus to plug-in content -->
-            <!--action>
-              <trigger name="activate"/>
-              <trigger name="stylus">
-                <property name="doubleclicked" value="up"/>
-              </trigger>
-              <event name="ui/focusgained(organizerPluginContainer,SATAndNewstickerBox)"/>
-            </action-->
-            
-            <action>
-              <trigger name="activate"/>
-              <trigger class="western" name="up"/>
-              <trigger class="arabic" name="down"/> 
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name="system/setfocus">
-                <property name="id" value="organizerTitle"/>
-              </event>
-            </action>
-
-            <!-- Select text to MSK label -->
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-          </actions>
-        </image>
-
-        <!-- Music player plug-in
-           ####################-->
-
-        <image id="musicPlayerPluginIcon" path="SKIN(270501046 270561987)" class="pluginAreaIcon" focusable="true" stylusstates="2">
-          <actions>
-
-            <!-- Show plug-in content -->
-            <action>
-              <trigger name="gainfocus"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="1"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <!-- Hide plug-in content -->
-            <action>
-              <trigger class="western" name="down"/>
-              <trigger class="arabic" name="up"/> 
-              <trigger name="stylus">
-                <property name="stylusstate" value="2"/>
-              </trigger>                            
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>      
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-            </action>
-
-            <!-- Move focus to plug-in content -->
-            <!--action>
-              <trigger name="activate"/>
-              <trigger name="stylus">
-                <property name="doubleclicked" value="up"/>
-              </trigger>
-              <event name="ui/focusgained(playerPluginContainer,SATAndNewstickerBox)"/>
-            </action-->
-            
-            <action>
-              <trigger name="activate"/>
-              <trigger class="western" name="up"/>
-              <trigger class="arabic" name="down"/> 
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name="system/setfocus">
-                <property name="id" value="playerTitle"/>
-              </event>
-            </action>
-          
-            <!-- Select text to MSK label -->
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-          </actions>
-        </image>
-
-
-        <!-- Visual/Internet Radio plug-in
-           ####################-->
-
-        <image id="radioPluginIcon" path="iractiveidle.mif#0" class="pluginAreaIcon" focusable="true" stylusstates="2">
-          <actions>
-
-            <!-- Show plug-in content -->
-            <action>
-              <trigger name="gainfocus"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="1"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <!-- Hide plug-in content -->
-            <action>
-              <trigger class="western" name="down"/>
-              <trigger class="arabic" name="up"/> 
-              <trigger name="stylus">
-                <property name="stylusstate" value="2"/>
-              </trigger>                            
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>      
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-            </action>
-
-            <!-- Move focus to plug-in content -->
-            <!--action>
-              <trigger name="activate"/>
-              <trigger name="stylus">
-                <property name="doubleclicked" value="up"/>
-              </trigger>
-              <event name="ui/focusgained(playerPluginContainer,SATAndNewstickerBox)"/>
-            </action-->
-            
-            <action>
-              <trigger name="activate"/>
-              <trigger class="western" name="up"/>
-              <trigger class="arabic" name="down"/> 
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name="system/setfocus">
-                <property name="id" value="radioTitle"/>
-              </event>
-            </action>
-          
-            <!-- Select text to MSK label -->
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-          </actions>
-        </image>
-
-        <!-- Personalization plug-in
-             ####################### -->
-
-        <image id="personalizationPluginIcon" path="SKIN(270501046 268458546)" class="pluginAreaIcon" focusable="true" stylusstates="2">
-          <actions>
-            <!-- Show plug-in content -->
-            <action>
-              <trigger name="gainfocus"/>
-              <trigger name="stylus">
-                <property name="stylusstate" value="1"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="shortcutPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="organizerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="playerPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="radioPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <!-- Hide plug-in content -->
-            <action>
-              <trigger class="western" name="down"/>
-              <trigger class="arabic" name="up"/> 
-              <trigger name="stylus">
-                <property name="stylusstate" value="2"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-            </action>
-
-            <!-- Move focus to plug-in content -->
-            <!--action>
-              <trigger name="activate"/>
-              <trigger name="stylus">
-                <property name="doubleclicked" value="up"/>
-              </trigger>
-              <event name="ui/focusgained(personalizationPluginContainer,SATAndNewstickerBox)"/>
-            </action-->
-          
-            <action>
-              <trigger name="activate"/>
-              <trigger class="western" name="up"/>
-              <trigger class="arabic" name="down"/> 
-              <event name="system/set">
-                <property name="id" value="personalizationPluginContainer"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-              <event name="system/set">
-                <property name="id" value="SATAndNewstickerBox"/>
-                <property name="name" value="display"/>
-                <property name="value" value="none"/>
-                <property name="type" value="string"/>
-              </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <event name="system/setfocus">
-                <property name="id" value="personalizationPluginTitle"/>
-              </event>
-            </action>
-      
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-
-            <!-- Select text to MSK label -->
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-          </actions>
-        </image>
-
-      </box>
-
-      <!-- Container area for the plugin content for the following plugins:
-            Shortcuts, Organizer, Player, Personalization -->
-      <box id="pluginContainerArea" focusable="false">
-
-        <!--#################################
-          #####    Shortcut plugin    #####
-          #################################-->
-        <box id="shortcutPluginContainer" class="pluginContainer" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-          <!-- fake button to go around a bug in the animation system. Button is hidden. -->
-          <button id="shortcutPluginAnimationFixButton" class="fakeButton" focusable="true" />
-          <!-- Plugin title -->
-
-            <text id="shortcutTitleText" class="titleText" focusable="true">&qtn_ai_shorts_title;
-            <actions>
-              <action>
-                <trigger name="stylus"/>
-                <trigger name="activate"/>
-                <event name="Shortcut/ShowSettings"/>
-              </action>
-
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-        </text>
-
-          <!-- Shortcut items -->
-          <!-- Shortcuts are not locked. I.e. they are dynamically published by the shortcut plug-in. -->
-
-          <!-- #1 -->
-          <text id="shortcutButton1" class="genericButtonText" focusable="true">
-            <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000001"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000001)"/>
-                <!-- Messaging -->
-              </action>
-
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-            
-          </text>
-
-          <!-- #2 -->
-          <text id="shortcutButton2" class="genericButtonText" focusable="true">
-            <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000002"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000002)"/>
-                <!-- Contacts -->
-              </action>
-
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #3 -->
-          <text id="shortcutButton3" class="genericButtonText" focusable="true">
-          <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000003"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000003)"/>
-                <!-- Clock -->
-              </action>
-
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #4 -->
-          <text id="shortcutButton4" class="genericButtonText" focusable="true">
-            <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000004"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000004)"/>
-              </action>
-        
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-      </text>
-
-          <!-- #5 -->
-          <text id="shortcutButton5" class="genericButtonText" focusable="true">
-            <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000005"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000005)"/>
-              </action>
-         
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-      </text>
-          <!-- #6 -->
-          <text id="shortcutButton6" class="genericButtonText" focusable="true">
-            <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000006"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByIndex(0x00000006)"/>
-              </action>
-                         
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="shortcutPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="shortcutPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- UI resources -->
-          <desc id="Shortcut/EmptyCaption">&shortcut_EmptyCaption;</desc>
-          <desc id="Shortcut/BackCaption">&text_softkey_back;</desc>
-          <desc id="Shortcut/NewMessageCaption">&qtn_set_idle_skey_new_msg;</desc>
-          <desc id="Shortcut/NewEmailCaption">&qtn_set_idle_skeys_email_editor;</desc>
-          <desc id="Shortcut/NewSyncMLMailCaption">&qtn_apps_syncml_mail_gs;</desc>
-          <desc id="Shortcut/NewPostcardCaption">&qtn_apps_mmspostcard_gs;</desc>
-          <desc id="Shortcut/NewAudioMsgCaption">&qtn_apps_audio_msg_gs;</desc>
-          <desc id="Shortcut/SelectMsgTypeCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-          <desc id="Shortcut/ChangeThemeCaption">&qtn_apps_idle_skin_gs;</desc>
-          <desc id="Shortcut/NewMessageShortCaption">&qtn_idle_skey_new_msg;</desc>
-          <desc id="Shortcut/NewEmailShortCaption">&qtn_apps_email_skey;</desc>
-          <desc id="Shortcut/NewSyncMLMailShortCaption">&qtn_apps_syncml_mail_skey;</desc>
-          <desc id="Shortcut/NewPostcardShortCaption">&qtn_apps_mmspostcard_skey;</desc>
-          <desc id="Shortcut/NewAudioMsgShortCaption">&qtn_apps_audio_msg_skey;</desc>
-          <desc id="Shortcut/SelectMsgTypeShortCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-          <desc id="Shortcut/ChangeThemeShortCaption">&qtn_apps_idle_skin_skey;</desc>
-
-        </box>
-
-
-        <!--###############################
-          ####   Organizer plugin    ####
-          ###############################-->
-        <box id="organizerPluginContainer" class="pluginContainer" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-          <!-- there is a fake button in the shortcut plugin area. It is
-          used to go around a bug in the animation system. It reserves a little space,
-          so this is to fix that space in this plugin -->
-          <button id="organizeFakeButton" class="fakeButton" focusable="true" />
-
-          <!-- Organizer title -->
-
-            <text id="organizerTitle" class="titleText" focusable="true">&qtn_ai_cal_title;
-            <actions>
-              <action>
-                <trigger name="stylus"/>
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(0)"/>
-              </action>
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #1 -->
-          <button id="eventButton1" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(1)"/>
-              </action>
-              
-          <!-- for setting the correct colour group for texts -->
-          <!-- all the other elements are done using text elements -->
-          <!-- organiser item is done using 1-2 texts and 1 image element-->
-          <!-- so it needs to be done using buttons and these triggers -->
-           <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText1_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText1_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText1_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText1_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>               
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon1" class="eventIcon" focusable="false">
-              <property class="Organizer/EventIcon" name="ordinal" value="0x01"/>
-            </image>
-            <text id="Organizer/eventText1_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x01"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton1" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton1" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton1" value="display: block;"/>
-              <property class="policy/Content" name="eventButton1" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText1_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x01"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText1_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText1_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton1" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton1" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- #2 -->
-          <button id="eventButton2" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(2)"/>
-              </action>
-              
-           <!-- for setting the correct colour group for texts -->
-           <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText2_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText2_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText2_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText2_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>             
-
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon2" class="eventIcon" focusable="false">
-              <!--  path="qgn_indi_cdr_birthday.svg" -->
-              <property class="Organizer/EventIcon" name="ordinal" value="0x02"/>
-            </image>
-            <text id="Organizer/eventText2_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x02"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton2" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton2" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton2" value="display: block;"/>
-              <property class="policy/Content" name="eventButton2" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText2_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x02"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText2_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText2_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton2" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton2" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- #3 -->
-          <button id="eventButton3" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(3)"/>
-              </action>
-              
-          <!-- for setting the correct colour group for texts -->
-         <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText3_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText3_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText3_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText3_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>           
-              
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon3" class="eventIcon" focusable="false">
-              <!--  path="qgn_indi_cdr_todo.svg" -->
-              <property class="Organizer/EventIcon" name="ordinal" value="0x03"/>
-            </image>
-            <text id="Organizer/eventText3_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x03"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton3" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton3" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton3" value="display: block;"/>
-              <property class="policy/Content" name="eventButton3" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText3_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x03"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText3_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText3_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton3" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton3" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- #4 -->
-          <button id="eventButton4" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(4)"/>
-              </action>
-              
-         <!-- for setting the correct colour group for texts -->
-          <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText4_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText4_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText4_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText4_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>               
-
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/>  <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon4" class="eventIcon" focusable="false">
-              <property class="Organizer/EventIcon" name="ordinal" value="0x04"/>
-            </image>
-            <text id="Organizer/eventText4_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x04"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton4" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton4" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton4" value="display: block;"/>
-              <property class="policy/Content" name="eventButton4" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText4_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x04"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText4_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText4_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton4" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton4" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- #5 -->
-          <button id="eventButton5" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(5)"/>
-              </action>
-
-          <!-- for setting the correct colour group for texts -->
-          <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText5_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText5_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText5_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText5_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>              
-              
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/>  <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon5" class="eventIcon" focusable="false">
-              <property class="Organizer/EventIcon" name="ordinal" value="0x05"/>
-            </image>
-            <text id="Organizer/eventText5_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x05"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton5" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton5" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton5" value="display: block;"/>
-              <property class="policy/Content" name="eventButton5" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText5_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x05"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText5_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText5_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton5" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton5" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- #6 -->
-          <button id="eventButton6" class="organizerButton" focusable="true">
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Organizer/ItemSelected(6)"/>
-              </action>
-              
-          <!-- for setting the correct colour group for texts -->
-           <action>
-          <trigger name="gainfocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText6_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-           <event name="system/set">
-                  <property name="id" value="Organizer/eventText6_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText6_1"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-             <event name="system/set">
-                  <property name="id" value="Organizer/eventText6_2"/>
-                  <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>      
-        </action>              
-              
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/>  <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="organizerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="organizerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-              <action>
-                <trigger name="losevisualisation"/>
-                <event name="system/setfocus">
-                  <property name="id" value="organizerTitle"/>
-                </event>
-              </action>
-            </actions>
-            <image id="Organizer/eventIcon6" class="eventIcon" focusable="false">
-              <property class="Organizer/EventIcon" name="ordinal" value="0x06"/>
-            </image>
-            <text id="Organizer/eventText6_1" class="eventText1" focusable="false">
-              <property class="Organizer/Event1stLine" name="ordinal" value="0x06"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton6" value="display: none;"/>
-              <property class="policy/emptyContent" name="eventButton6" value="nav-index: none;"/>
-              <property class="policy/Content" name="eventButton6" value="display: block;"/>
-              <property class="policy/Content" name="eventButton6" value="nav-index: auto;"/>
-            </text>
-            <text id="Organizer/eventText6_2" class="eventText2" focusable="false">
-              <property class="Organizer/Event2ndLine" name="ordinal" value="0x06"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-              <property class="policy/emptyContent" name="Organizer/eventText6_2" value="display: none;"/>
-              <property class="policy/Content" name="Organizer/eventText6_2" value="display: block;"/>
-              <!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-              <property class="policy/emptyContent" name="eventButton6" value="height: 13.3%;"/>
-              <property class="policy/Content" name="eventButton6" value="height: 27.22%;"/>
-            </text>
-          </button>
-
-          <!-- UI resources -->
-          <desc id="Organizer/NoEventsForToday">&qtn_ai_cale_no_event_today_short;</desc>
-          <desc id="Organizer/NoMoreEventsForToday">&qtn_ai_cale_no_more_ev_td_short;</desc>
-        </box>
-
-
-        <!--##############################
-          ####    Player plugin     ####
-          ##############################-->
-        <box id="playerPluginContainer" class="pluginContainer" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-          <!-- there is a fake button in the shortcut plugin area. It is
-          used to go around a bug in the animation system. It reserves a little space,
-          so this is to fix that space in this plugin -->
-<!--<button id="playerFakeButton" class="fakeButton" focusable="true" />-->
-
-          
-            <text id="playerTitle" class="titleText" focusable="true">&qtn_ai_player_title;
-            <actions>
-
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="MusicPlayer/Library"/>
-              </action>
-         
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="musicPlayerPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="playerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-
-              <action>
-                <trigger name="right"/>
-                <trigger name="left"/>
-                <event name="system/set">
-                  <property name="id" value="playerPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-
-          </text>
-
-          <box id="playerInActive" focusable="false">
-            <text id="musicPlayerInActive" focusable="false">
-              &qtn_ai_player_no_tracks;
-            </text>
-          </box>
-
-          <box id="volumeIndicator" focusable="true">
-      
-        <!-- normal version -->
-            <image id="musicPlayerVolumeDownIcon" path="SKIN(270501603 6419 19)" focusable="false" />
-        <!-- Highlighted version -->            
-            <image id="musicPlayerVolumeDownIconHighlight" path="SKIN(270501603 6419 9)" focusable="false">
-
-              <!-- TODO: Check if image can contain actions -->
-              <actions>
-                <action>
-                  <trigger name="stylus"/>
-                  <trigger name="activate"/>
-                  <event name="MusicPlayer/VolDec"/>
-                  <event name="system/setfocus">
-                    <property name="id" value="volumeIndicator"/>
-                  </event>
-                </action>
-
-              </actions>
-            </image>
-
-            <!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-            <!-- normal version -->
-            <image id="musicPlayerSpeakerIcon" path="SKIN(270501603 4332 19)" focusable="false"/>
-            <image id="musicPlayerSpeakerMutedIcon" path="SKIN(270501603 4334 19)" focusable="false"/>
-        <!-- Highlighted version -->
-           <image id="musicPlayerSpeakerIconHighlight" path="SKIN(270501603 4332 9)" focusable="false"/>
-           <image id="musicPlayerSpeakerMutedIconHighlight" path="SKIN(270501603 4334 9)" focusable="false"/>
-
-
-      <volumecontrol id="musicPlayerVolumeIcon" focusable="false">
-        <actions>
-         <action>
-           <trigger name="stylus"/>
-           <trigger name="stylus">
-             <property name="clicked" value="down"/>
-           </trigger>                  
-           <trigger name="stylus">
-             <property name="doubleclicked" value="up"/>
-           </trigger>                  
-           <event name="MusicPlayer/VolSet(slider::volume)"/>
-           <event name="system/setfocus">
-           <property name="id" value="volumeIndicator"/>
-           </event>
-         </action>
-        </actions>
-        <slider id="volslider">
-          <property class="MusicPlayer/Volume"/>
-          <!-- Normal versions of the icons -->
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if (MusicPlayer/Vol0) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol0) display:none"/> 
-          <property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol0, MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol10) display:none"/>
-          
-          <!-- Highlighted versions of the icons -->              
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIconHighlight" value="if (MusicPlayer/Vol0) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIconHighlight" value="if !(MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIconHighlight" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIconHighlight" value="if (MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIconHighlight" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIconHighlight" value="if (MusicPlayer/Vol0) display:none"/>              
-          <property class="policy/Resource" name="musicPlayerVolumeUpIconHighlight" value="if (MusicPlayer/Vol0, MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeUpIconHighlight" value="if (MusicPlayer/Vol10) display:none"/>
-        </slider>
-       </volumecontrol>
-
-        <!-- normal version -->
-            <image id="musicPlayerVolumeUpIcon" path="SKIN(270501603 6421 19)" focusable="false" />
-          <!-- Highlighted version -->       
-            <image id="musicPlayerVolumeUpIconHighlight" path="SKIN(270501603 6421 9)" focusable="false">
-                    
-             <!-- TODO: Check if image can contain actions -->
-              <actions>
-                <action>
-                  <trigger name="stylus"/>
-                  <trigger name="activate"/>
-                  <event name="MusicPlayer/VolInc"/>
-                  <event name="system/setfocus">
-                    <property name="id" value="volumeIndicator"/>
-                  </event>
-                </action>
-              </actions>
-            </image>
-            <actions>
-              <action>
-                <trigger name="left"/>
-                <event name="system/setfocus">
-                  <property name="id" value="playerTitle"/>
-                </event>
-              </action>
-
-              <action>
-                <trigger name="up"/>
-                <event name="MusicPlayer/VolInc">
-                </event>
-              </action>
-
-              <action>
-                <trigger name="down"/>
-                <event name="MusicPlayer/VolDec">
-                </event>
-              </action>
-
-            <action>
-              <trigger name="losevisualisation"/>
-              <event name="system/setfocus">
-                <property name="id" value="playerTitle"/>
-              </event>
-            </action>
-            
-            <action>
-              <trigger name="gainfocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value=""/>
-                <property name="type" value="attribute"/>
-              </event>
-              
-      
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeDownIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeDownIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- speaker icons -->
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerMutedIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerMutedIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- volume up icons -->
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeUpIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeUpIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-            </action>
-
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-              
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeDownIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeDownIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- speaker icons -->
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerMutedIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerSpeakerMutedIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- volume up icons -->
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeUpIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="musicPlayerVolumeUpIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-            </action>           
-         
-          </actions>
-
-          </box>
-
-          <box id="infoArea" focusable="false">
-            <box id="trackAndArtist" focusable="false">
-              <box id="trackLine" focusable="false">
-                <text id="trackLine1" class="playerTextLine" focusable="false">
-                  <property class="MusicPlayer/Title"/>
-                </text>
-              </box>            
-              <box id="artistLine" focusable="false">
-                <text id="artistLine1" class="playerTextLine" focusable="false">
-                  <property class="MusicPlayer/Artist"/>
-                </text>
-              </box>
-            </box>
-
-            <box id="durationLine" focusable="false">
-              <text id="time" focusable="false">
-                <property class="MusicPlayer/Duration"/>
-              </text>
-
-              <image id="statusIcon" class="playerStatusIcon" focusable="true">
-                <property class="MusicPlayer/Status"/>
-                <property class="policy/Content" name="volumeIndicator" value="display: block;"/>
-                <property class="policy/Content" name="infoArea" value="display: block;"/>
-                <property class="policy/Content" name="playerInActive" value="display: none;"/>
-                <property class="policy/emptyContent" name="playerInActive" value="display: block;"/>
-                <property class="policy/emptyContent" name="volumeIndicator" value="display: none;"/>
-                <property class="policy/emptyContent" name="infoArea" value="display: none;"/>
-              </image>
-            </box>
-          </box>
-          
-          <!-- Image resources -->
-          <desc id="MusicPlayer/PauseIcon" path="SKIN(270501603 5182)"/>
-          <desc id="MusicPlayer/PlayIcon" path="SKIN(270501603 5184)"/>
-          <desc id="MusicPlayer/Vol0">0</desc>
-          <desc id="MusicPlayer/Vol1">1</desc>
-          <desc id="MusicPlayer/Vol2">2</desc>
-          <desc id="MusicPlayer/Vol3">3</desc>
-          <desc id="MusicPlayer/Vol4">4</desc>
-          <desc id="MusicPlayer/Vol5">5</desc>
-          <desc id="MusicPlayer/Vol6">6</desc>
-          <desc id="MusicPlayer/Vol7">7</desc>
-          <desc id="MusicPlayer/Vol8">8</desc>
-          <desc id="MusicPlayer/Vol9">9</desc>
-          <desc id="MusicPlayer/Vol10">10</desc>
-          
-        </box>
-
-				
-        <!--##############################
-          #### Visual/Internet Radio plugin ####
-          ##############################-->
-        <box id="radioPluginContainer" class="pluginContainer" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-          <button id="radioTitle" class="radioTitleButton" focusable="true">
-            <image id="invisibleTitleStatus" class="invisibleRadioTitleIcon" focusable="false">
-              <property class="VisualRadio/AppIcon" name="priority" value="0"/>
-              <property class="InetRadio/AppIcon" name="priority" value="1"/>
-
-              <property class="policy/emptyContent" name="radioTitleString" value="display: block;"/>
-              <property class="policy/Resource" name="radioTitleString" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive, InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-
-              <property class="policy/emptyContent" name="visualRadioTitleString" value="display: none;"/>
-              <property class="policy/Resource" name="visualRadioTitleString" value="if (InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-              <property class="policy/Resource" name="visualRadioTitleString" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive) display:block"/>
-
-              <property class="policy/emptyContent" name="inetRadioTitleString" value="display: none;"/>
-              <property class="policy/Resource" name="inetRadioTitleString" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive) display:none"/>
-              <property class="policy/Resource" name="inetRadioTitleString" value="if (InetRadio/IRPlaying, InetRadio/IRStopped) display:block"/>
-
-              <property class="policy/emptyContent" name="radioVolumeIndicator" value="display: none;"/>
-              <property class="policy/Resource" name="radioVolumeIndicator" value="if (VisualRadio/VRInactive, InetRadio/IRStopped) display:none"/>
-              <property class="policy/Resource" name="radioVolumeIndicator" value="if (VisualRadio/VRPlaying, InetRadio/IRPlaying) display:block"/>
-
-              <property class="policy/emptyContent" name="radioInactive" value="display: block;"/>
-              <property class="policy/Resource" name="radioInactive" value="if (VisualRadio/VRInactive, InetRadio/IRStopped) display:block"/>
-              <property class="policy/Resource" name="radioInactive" value="if (VisualRadio/VRPlaying, InetRadio/IRPlaying) display:none"/>
-
-              <property class="policy/emptyContent" name="visualRadioInfoArea" value="display: none;"/>
-              <property class="policy/Resource" name="visualRadioInfoArea" value="if (VisualRadio/VRInactive, InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-              <property class="policy/Resource" name="visualRadioInfoArea" value="if (VisualRadio/VRPlaying) display:block"/>
-
-              <property class="policy/emptyContent" name="inetRadioInfoArea" value="display: none;"/>
-              <property class="policy/Resource" name="inetRadioInfoArea" value="if (InetRadio/IRStopped, VisualRadio/VRPlaying, VisualRadio/VRInactive) display:none"/>
-              <property class="policy/Resource" name="inetRadioInfoArea" value="if (InetRadio/IRPlaying) display:block"/>
-            </image>
-            <text id="radioTitleString" class="radioTitleText" focusable="false">&qtn_vr_ai_radiolauncher;</text>
-            <text id="visualRadioTitleString" class="radioTitleText" focusable="false">&qtn_vr_ai_vradio_title;</text>
-            <text id="inetRadioTitleString" class="radioTitleText" focusable="false">&qtn_ir_ai_irapp_title;</text>
-
-            <actions>
-
-              <action>
-                <trigger name="gainfocus" />
-                <event name="system/set">
-                  <property name="id" value="radioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="visualRadioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="inetRadioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 9)"/>
-                  <property name="type" value="string"/>
-                </event>
-              </action>
-
-              <action>
-                <trigger name="losefocus" />
-                <event name="system/set">
-                  <property name="id" value="radioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="visualRadioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="inetRadioTitleString"/>
-                  <property name="name" value="color"/>
-                  <property name="value" value="SKIN(268458534 13056 19)"/>
-                  <property name="type" value="string"/>
-                </event>
-              </action>
-
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="VisualRadio/LaunchRadio"/>
-				<event name="InetRadio/LaunchRadio"/>
-                <!-- Always let Visual Radio plug-in handle the launch event. It will start Radio Launcher. -->
-              </action>
-         
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="radioPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="radioPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-
-              <action>
-                <trigger name="right"/>
-                <trigger name="left"/>
-                <event name="system/set">
-                  <property name="id" value="radioPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-
-          </button>
-
-          <box id="radioInactive" focusable="false">
-            <text id="radioInactiveText" focusable="false">&qtn_vr_ai_radio_not_active;</text>
-          </box>
-
-          <box id="radioVolumeIndicator" focusable="true">
-      
-        <!-- normal version -->
-            <image id="radioVolumeDownIcon" path="SKIN(270501603 6419 19)" focusable="false"/>
-        <!-- Highlighted version -->            
-            <image id="radioVolumeDownIconHighlight" path="SKIN(270501603 6419 9)" focusable="false">
-
-              <!-- TODO: Check if image can contain actions -->
-              <actions>
-                <action>
-                  <trigger name="stylus"/>
-                  <trigger name="activate"/>
-                  <event name="VisualRadio/VolDec"/>
-                  <event name="InetRadio/VolDec"/>
-                  <event name="system/setfocus">
-                    <property name="id" value="radioVolumeIndicator"/>
-                  </event>
-                </action>
-
-              </actions>
-            </image>
-
-            <!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-            <!-- normal version -->
-            <image id="radioSpeakerIcon" path="SKIN(270501603 4332 19)" focusable="false"/>
-            <image id="radioSpeakerMutedIcon" path="SKIN(270501603 4334 19)" focusable="false"/>
-            <!-- Highlighted version -->
-            <image id="radioSpeakerIconHighlight" path="SKIN(270501603 4332 9)" focusable="false"/>
-            <image id="radioSpeakerMutedIconHighlight" path="SKIN(270501603 4334 9)" focusable="false"/>
-
-
-            <volumecontrol id="radioVolumeIcon" focusable="false">
-              <actions>
-                <action>
-                  <trigger name="stylus"/>
-                  <trigger name="stylus">
-                    <property name="clicked" value="down"/>
-                  </trigger>                  
-                  <trigger name="stylus">
-                    <property name="doubleclicked" value="up"/>
-                  </trigger>                  
-                  <event name="VisualRadio/VolSet(radioSlider::volume)"/>
-                  <event name="InetRadio/VolSet(radioSlider::volume)"/>
-                  <event name="system/setfocus">
-                    <property name="id" value="radioVolumeIndicator"/>
-                  </event>
-                </action>
-              </actions>
-              <slider id="radioSlider">
-                <property class="VisualRadio/Volume" name="priority" value="0"/>
-                <property class="InetRadio/Volume" name="priority" value="1"/>
-                <!-- Normal versions of the icons -->
-                <property class="policy/Resource" name="radioSpeakerMutedIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-                <property class="policy/Resource" name="radioSpeakerMutedIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-                <property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-                <property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol0, VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, InetRadio/Vol0, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9 ) display:block"/>
-                <property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-
-                <!-- Highlighted versions of the icons -->              
-                <property class="policy/Resource" name="radioSpeakerMutedIconHighlight" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-                <property class="policy/Resource" name="radioSpeakerMutedIconHighlight" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioSpeakerIconHighlight" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-                <property class="policy/Resource" name="radioSpeakerIconHighlight" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioVolumeDownIconHighlight" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-                <property class="policy/Resource" name="radioVolumeDownIconHighlight" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-                <property class="policy/Resource" name="radioVolumeUpIconHighlight" value="if (VisualRadio/Vol0, VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, InetRadio/Vol0, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9 ) display:block"/>
-                <property class="policy/Resource" name="radioVolumeUpIconHighlight" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-              </slider>
-            </volumecontrol>
-
-            <!-- normal version -->
-            <image id="radioVolumeUpIcon" path="SKIN(270501603 6421 19)" focusable="false"/>
-            <!-- Highlighted version -->       
-            <image id="radioVolumeUpIconHighlight" path="SKIN(270501603 6421 9)" focusable="false">
-                    
-             <!-- TODO: Check if image can contain actions -->
-              <actions>
-                <action>
-                  <trigger name="stylus"/>
-                  <trigger name="activate"/>
-                  <event name="VisualRadio/VolInc"/>
-                  <event name="InetRadio/VolInc"/>
-                  <event name="system/setfocus">
-                    <property name="id" value="radioVolumeIndicator"/>
-                  </event>
-                </action>
-              </actions>
-            </image>
-            <actions>
-              <action>
-                <trigger name="left"/>
-                <event name="system/setfocus">
-                  <property name="id" value="radioTitle"/>
-                </event>
-              </action>
-
-              <action>
-                <trigger name="up"/>
-                <event name="VisualRadio/VolInc"/>
-                <event name="InetRadio/VolInc"/>
-              </action>
-
-              <action>
-                <trigger name="down"/>
-                <event name="VisualRadio/VolDec"/>
-                <event name="InetRadio/VolDec"/>
-              </action>
-
-            <action>
-              <trigger name="losevisualisation"/>
-              <event name="system/setfocus">
-                <property name="id" value="radioTitle"/>
-              </event>
-            </action>
-            
-            <action>
-              <trigger name="gainfocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value=""/>
-                <property name="type" value="attribute"/>
-              </event>
-              
-      
-              <event name="system/set">
-                  <property name="id" value="radioVolumeDownIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioVolumeDownIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- speaker icons -->
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerMutedIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerMutedIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- volume up icons -->
-              <event name="system/set">
-                  <property name="id" value="radioVolumeUpIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioVolumeUpIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-            </action>
-
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-              
-              <event name="system/set">
-                  <property name="id" value="radioVolumeDownIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioVolumeDownIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- speaker icons -->
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerMutedIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioSpeakerMutedIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-          <!-- volume up icons -->
-              <event name="system/set">
-                  <property name="id" value="radioVolumeUpIcon"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="visible"/>
-                  <property name="type" value="string"/>
-               </event>
-              <event name="system/set">
-                  <property name="id" value="radioVolumeUpIconHighlight"/>
-                  <property name="name" value="visibility"/>
-                  <property name="value" value="hidden"/>
-                  <property name="type" value="string"/>
-               </event>
-            </action>           
-         
-          </actions>
-
-          </box>
-
-          <box id="visualRadioInfoArea" focusable="false">
-            <box id="visualRadioNameLine" focusable="false">
-              <text id="visualRadioNumberTextLine" class="visualRadioTextLine" focusable="false">
-                 <property class="VisualRadio/Number"/>
-              </text>
-              <text id="visualRadioNameTextLine" class="visualRadioTextLine" focusable="false">
-                <property class="VisualRadio/Name"/>
-              </text>
-            </box>
-            <box id="visualRadioLocationLine" focusable="false">
-              <text id="visualRadioLocationTextLine" class="visualRadioTextLine" focusable="false">
-                <property class="VisualRadio/Location"/>
-              </text>
-            </box>
-            <box id="visualRadioFrequencyLine" focusable="false">
-              <text id="visualRadioFrequencyTextLine" class="visualRadioTextLine" focusable="false">
-                <property class="VisualRadio/Frequency"/>
-              </text>
-            </box>
-          </box>
-
-          <box id="inetRadioInfoArea" focusable="false">
-            <box id="inetRadioPresetLine" focusable="false">
-              <text id="inetRadioPresetTextLine" class="inetRadioTextLine" focusable="false">
-                <property class="InetRadio/Preset"/> 
-              </text> 
-            </box>
-            <box id="inetRadioArtistLine" focusable="false">
-              <text id="inetRadioArtistTextLine" class="inetRadioTextLine" focusable="false">
-                <property class="InetRadio/Artist"/>
-              </text>
-            </box>
-            <box id="inetRadioTrackLine" focusable="false">
-              <text id="inetRadioTrackTextLine" class="inetRadioTextLine" focusable="false">
-                <property class="InetRadio/Track"/>
-              </text>
-            </box>
-          </box>
-          
-          <!-- Image resources -->
-          <desc id="VisualRadio/Vol0">0</desc>
-          <desc id="VisualRadio/Vol1">1</desc>
-          <desc id="VisualRadio/Vol2">2</desc>
-          <desc id="VisualRadio/Vol3">3</desc>
-          <desc id="VisualRadio/Vol4">4</desc>
-          <desc id="VisualRadio/Vol5">5</desc>
-          <desc id="VisualRadio/Vol6">6</desc>
-          <desc id="VisualRadio/Vol7">7</desc>
-          <desc id="VisualRadio/Vol8">8</desc>
-          <desc id="VisualRadio/Vol9">9</desc>
-          <desc id="VisualRadio/Vol10">10</desc>
-          <!-- The following icons are not displayed, they just indicate which layout to use -->
-          <desc id="VisualRadio/VRPlaying" path="SKIN(270501603 5184)"/>
-          <desc id="VisualRadio/VRInactive" path="SKIN(270501603 5182)"/>
-
-          <desc id="InetRadio/Vol0">0</desc>
-          <desc id="InetRadio/Vol1">1</desc>
-          <desc id="InetRadio/Vol2">2</desc>
-          <desc id="InetRadio/Vol3">3</desc>
-          <desc id="InetRadio/Vol4">4</desc>
-          <desc id="InetRadio/Vol5">5</desc>
-          <desc id="InetRadio/Vol6">6</desc>
-          <desc id="InetRadio/Vol7">7</desc>
-          <desc id="InetRadio/Vol8">8</desc>
-          <desc id="InetRadio/Vol9">9</desc>
-          <desc id="InetRadio/Vol10">10</desc>
-          <!-- The following icons are not displayed, they just indicate which layout to use -->
-          <desc id="InetRadio/IRPlaying" path="SKIN(270501603 5184)"/>
-          <desc id="InetRadio/IRStopped" path="SKIN(270501603 5182)"/>
-        </box>
-
-				
-        <!--########################################
-            #####    Personalization plugin    #####
-            ########################################-->
-        <box id="personalizationPluginContainer" class="pluginContainer" focusable="false" backgroundmask="qsn_fr_popup_sub_mask_icon.svg">
-          <!-- there is a fake button in the shortcut plugin area. It is
-          used to go around a bug in the animation system. It reserves a little space,
-          so this is to fix that space in this plugin -->
-          <button id="personalizationFakeButton"  class="fakeButton" focusable="true" />
-          <!-- Plugin title -->
-
-            <text id="personalizationPluginTitle" class="titleText" focusable="true">&qtn_ai_pers_title;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Shortcut/LaunchByValue(localapp:0x100058EC?view=0x10207252)"/><!-- GS app, prsln plugin -->
-              </action>
-          
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-
-          <!-- #1 -->
-          <text id="personalizationButton1" class="genericButtonText" focusable="true">
-           <property class="Profile/SwapProfileName"/>
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <event name="Profile/SwapProfile(1)"/>
-              </action>
-
-        <!-- for setting the correct colour group for texts -->
-        
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-
-            <action>
-              <trigger name="gainfocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_select;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            <action>
-              <trigger name="losefocus"/>
-              <event name ="system/set">
-                <property name="id" value="MSK"/>
-                <property name="name" value="label"/>
-                <property name="value" value="&qtn_msk_open;"/>
-                <property name="type" value="attribute"/>
-              </event>
-            </action>
-
-            </actions>
-          </text>
-
-          <!-- #2 -->
-          <text id="personalizationButton2" class="genericButtonText" focusable="true">
-          &qtn_ai_pers_all_profiles;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <!-- TODO: Open profile application main view -->
-                <event name="Shortcut/LaunchByValue(localapp:0x100058F8)"/> <!-- Profileapp uid -->
-              </action>
-
-        <!-- for setting the correct colour group for texts -->
-                                    
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #3 -->
-          <text id="personalizationButton3" class="genericButtonText" focusable="true">
-          &qtn_ai_pers_change_theme;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <!-- Opens the main view of Personalization application -->
-                <event name="Shortcut/LaunchByValue(localapp:0x10005A32?view=0x102750AA)"/>
-              </action>
-
-        <!-- for setting the correct colour group for texts -->
-         
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #4 -->
-          <text id="personalizationButton4" class="genericButtonText" focusable="true">
-          &qtn_ai_pers_change_wallpaper;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <!-- Opens Wallpaper changing state in Personalization application -->
-                <event name="Shortcut/LaunchByValue(localapp:0x10005A32?view=3)"/>
-              </action>
-
-        <!-- for setting the correct colour group for texts -->                          
-              
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-
-          <!-- #5 -->
-          <text id="personalizationButton5" class="genericButtonText" focusable="true">
-          &qtn_apps_sd_list;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <!-- Open speed dial application shortcut -->
-                <event name="Shortcut/LaunchByValue(localapp:0x1000590A)"/>
-              </action>
-              
-        <!-- for setting the correct colour group for texts -->
-           
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-
-          </text>
-
-          <!-- #6 -->
-          <text id="personalizationButton6" class="genericButtonText" focusable="true">
-          &qtn_ai_pers_change_sc;
-            <actions>
-              <action>
-                <trigger name="stylus">
-                  <property name="eventtype" value="up" />
-                </trigger>                              
-                <trigger name="activate"/>
-                <!-- Open shortcuts view in general settings -->
-                <event name="Shortcut/ShowSettings"/>
-              </action>
-              
-        <!-- for setting the correct colour group for texts -->
-         
-              <action>
-                <trigger class="western" name="down"/>
-                <trigger class="arabic" name="up"/> 
-                <!-- joystick left -->
-                <event name="system/setfocus">
-                  <property name="id" value="personalizationPluginIcon"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="personalizationPluginContainer"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="none"/>
-                  <property name="type" value="string"/>
-                </event>
-                <event name="system/set">
-                  <property name="id" value="SATAndNewstickerBox"/>
-                  <property name="name" value="display"/>
-                  <property name="value" value="block"/>
-                  <property name="type" value="string"/>
-                </event>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </action>
-            </actions>
-          </text>
-        </box>
-
-      </box>  <!-- end of pluginContainerArea -->
-
-      <!--############################
-         #####   SAT plugin     #####
-        ############################-->
-      <box id="SATAndNewstickerBox" focusable="false">
-          
-        <box id="SATPluginContainer" focusable="false">
-          <text id="SatIdleModeText" class="satText" focusable="false">
-            <property class="SAT/SatIdleModeText"/>
-            <!--  emptyContent/Content policies defined for the SAT plug-in box -->
-            <property class="policy/emptyContent" name="SATPluginContainer" value="display: none;"/>
-            <property class="policy/Content" name="SATPluginContainer" value="display: block;"/>
-            <property class="policy/Content" name="SatIdleModeIcon" value="display: block;"/>
-          </text>
-          <image id="SatIdleModeIcon" class="satIcon" focusable="false">
-            <property class="SAT/SatIdleModeIcon"/>
-<!--            <property class="policy/Content" name="SatIdleModeText" value="margin-right: 5.5u;"/>
-            <property class="policy/emptyContent" name="SatIdleModeText" value="margin-right: 1.0u;"/>
--->           <property class="policy/emptyContent" name="SatIdleModeIcon" value="width: 0u"/>
-              <property class="policy/emptyContent" name="SatIdleModeIcon" value="height: 0u;"/>
-              <property class="policy/Content" name="SatIdleModeIcon" value="width: 3.5u"/>
-              <property class="policy/Content" name="SatIdleModeIcon" value="height: 3.5u;"/>
-          </image>
-        </box>
-
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-      </box>
-
-      <!--#################################################
-          ####     Menubar with soft key shortcuts     ####
-          #################################################-->
-      <menubar>
-        <menuitem id="SK1" label="">
-          <!-- ordinal value is the same as in the default settings -->
-          <property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000100"/>
-          <actions>
-            <action>
-              <trigger name="stylus"/>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x01000100)"/>
-            </action>
-          </actions>
-        </menuitem>
-        <menuitem id="SK2" label="">
-          <property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000101"/>
-          <actions>
-            <action>
-              <trigger name="stylus"/>
-              <!-- if using both activate and hold for same SK active trigger need to be specified like this (2 = keyup) otherwise hold will not work -->
-              <trigger name="activate"><property name="eventtype" value="2"/></trigger>
-              <event name="Shortcut/LaunchByIndex(0x01000101)"/>
-            </action>
-            <action>
-              <trigger name="hold"/>
-              <event name="Shortcut/LaunchByValue(localapp:0x10281867)"/>
-            </action>
-          </actions>
-        </menuitem>
-        <menuitem id="MSK" label="&qtn_msk_select;">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="clicked" value="down"/>
-              </trigger>
-              <event name="system/set">
-                <property name="id" value="msk_text"/>
-                <property name="name" value="display"/>
-                <property name="value" value="block"/>
-                <property name="type" value="string"/>
-              </event>
-            </action>
-          </actions>
-        </menuitem>       
-      </menubar>
-    </view>
-  </views>
-
-</xmluiml>
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_dat.dat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<data>
-	<AppUid>102750F0</AppUid>
-	<Provideruid>101FB657</Provideruid>
-	<ThemeUid>1028186D</ThemeUid>
-	<ThemeStatus>ThemeStatusLicenceeDefault</ThemeStatus>
-	<ThemeFullName>Navigation bar</ThemeFullName>
-	<ThemeShortName>AI</ThemeShortName>
-	<ThemeVersion>1.0</ThemeVersion>
-	<FileXML>ActiveIdle.xml</FileXML>
-	<FileCSS>ActiveIdle.css</FileCSS>
-	<FileResource>qsn_fr_popup_sub_mask_icon.svg</FileResource>
-
-	<FileResource CacheType="CacheNone">iractiveidle.mif</FileResource>
-
-	<LanguageSpecific Language="01">
-		<FileDTD>ActiveIdle.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName><!-- Note: the name is not an entity reference. So no "&" or" ;" -->
-	</LanguageSpecific>
-</data>
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_dat_reversed.dat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<data>
-	<AppUid>102750F0</AppUid>
-	<Provideruid>101FB657</Provideruid>
-	<ThemeUid>1028186D</ThemeUid>
-	<ThemeStatus>ThemeStatusLicenceeDefault</ThemeStatus>
-	<ThemeFullName>Navigation bar</ThemeFullName>
-	<ThemeShortName>AI</ThemeShortName>
-	<ThemeVersion>1.0</ThemeVersion>
-	<FileXML>ActiveIdle.xml</FileXML>
-	<FileCSS>ActiveIdle_reversed.css</FileCSS>
-	
-	<FileResource CacheType="CacheNone">iractiveidle.mif</FileResource>
-
-	<LanguageSpecific Language="01">
-		<FileDTD>ActiveIdle.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName><!-- Note: the name is not an entity reference. So no "&" or" ;" -->
-	</LanguageSpecific>
-</data>
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_loc.dat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-<?xml version="1.0"?>
-<data>
-	<AppUid>102750F0</AppUid>
-	<Provideruid>101FB657</Provideruid>
-	<ThemeUid>1028186D</ThemeUid>
-	<ThemeStatus>ThemeStatusLicenceeDefault</ThemeStatus>
-	<ThemeFullName>Navigation bar</ThemeFullName>
-	<ThemeShortName>AI</ThemeShortName>
-	<ThemeVersion>1.0</ThemeVersion>
-	<FileXML>ActiveIdle.xml</FileXML>
-	<FileCSS>ActiveIdle.css</FileCSS>
-	
-	<FileResource CacheType="CacheNone">iractiveidle.mif</FileResource>
-	
-	<LanguageSpecific Language="01">
-		<FileDTD>ActiveIdle_01.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="02">
-		<FileDTD>ActiveIdle_02.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="03">
-		<FileDTD>ActiveIdle_03.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="04">
-		<FileDTD>ActiveIdle_04.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="05">
-		<FileDTD>ActiveIdle_05.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="06">
-		<FileDTD>ActiveIdle_06.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="07">
-		<FileDTD>ActiveIdle_07.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="08">
-		<FileDTD>ActiveIdle_08.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="09">
-		<FileDTD>ActiveIdle_09.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="10">
-		<FileDTD>ActiveIdle_10.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="13">
-		<FileDTD>ActiveIdle_13.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="14">
-		<FileDTD>ActiveIdle_14.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="15">
-		<FileDTD>ActiveIdle_15.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="16">
-		<FileDTD>ActiveIdle_16.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="17">
-		<FileDTD>ActiveIdle_17.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="18">
-		<FileDTD>ActiveIdle_18.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="25">
-		<FileDTD>ActiveIdle_25.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="26">
-		<FileDTD>ActiveIdle_26.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="27">
-		<FileDTD>ActiveIdle_27.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="28">
-		<FileDTD>ActiveIdle_28.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="29">
-		<FileDTD>ActiveIdle_29.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="30">
-		<FileDTD>ActiveIdle_30.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="31">
-		<FileDTD>ActiveIdle_31.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="32">
-		<FileDTD>ActiveIdle_32.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="33">
-		<FileDTD>ActiveIdle_33.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="37">
-		<FileDTD>ActiveIdle_37.dtd</FileDTD>
-		<FileCSS>ActiveIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="39">
-		<FileDTD>ActiveIdle_39.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="42">
-		<FileDTD>ActiveIdle_42.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="44">
-		<FileDTD>ActiveIdle_44.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="45">
-		<FileDTD>ActiveIdle_45.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="49">
-		<FileDTD>ActiveIdle_49.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="50">
-		<FileDTD>ActiveIdle_50.dtd</FileDTD>
-		<FileCSS>ActiveIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="51">
-		<FileDTD>ActiveIdle_51.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="54">
-		<FileDTD>ActiveIdle_54.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="57">
-		<FileDTD>ActiveIdle_57.dtd</FileDTD>
-		<FileCSS>ActiveIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="58">
-		<FileDTD>ActiveIdle_58.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="59">
-		<FileDTD>ActiveIdle_59.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="67">
-		<FileDTD>ActiveIdle_67.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="68">
-		<FileDTD>ActiveIdle_68.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="70">
-		<FileDTD>ActiveIdle_70.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="76">
-		<FileDTD>ActiveIdle_76.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="78">
-		<FileDTD>ActiveIdle_78.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="79">
-		<FileDTD>ActiveIdle_79.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="83">
-		<FileDTD>ActiveIdle_83.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="93">
-		<FileDTD>ActiveIdle_93.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="94">
-		<FileDTD>ActiveIdle_94.dtd</FileDTD>
-		<FileCSS>ActiveIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="96">
-		<FileDTD>ActiveIdle_96.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="129">
-		<FileDTD>ActiveIdle_129.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="157">
-		<FileDTD>ActiveIdle_157.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="158">
-		<FileDTD>ActiveIdle_158.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="159">
-		<FileDTD>ActiveIdle_159.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="160">
-		<FileDTD>ActiveIdle_160.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="161">
-		<FileDTD>ActiveIdle_161.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="326">
-		<FileDTD>ActiveIdle_326.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="327">
-		<FileDTD>ActiveIdle_327.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="401">
-		<FileDTD>ActiveIdle_401.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="402">
-		<FileDTD>ActiveIdle_402.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_iconbar</ThemeFullName>
-	</LanguageSpecific>
-</data>
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_reversed.css	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1059 +0,0 @@
-* {
-	nav-index: none;
-}
-/* Hide western triggers. Only class="arabic" are shown */
-trigger.western {
-   display: none;
-}
-
-view { /* main_idle_act2_pane */
-	display: block; 
-	position: static; 	
-	width: 100%;
-	height: 100%;
-	direction: rtl;
-	block-progression: lr;
-	background-image: wallpaper;
-}
-
-menuitem#SK2{
-	_s60-longtap: true;
-}
-/**************************************
-	NAVI BAR
-***************************************/
-
-box#pluginIconArea { /* popup_ai2_link_window */
-	display: block; 
-	visibility: visible;
-	position: absolute; 	
-	width: 7.25u;	
-	height: 28.75u;	
-	right: 1.0u;	
-	top: 1.5u;		
-	padding-left: 0.85u;	
-	padding-right: 0.65u;	
-	padding-top: 1.00u;	
-	padding-bottom: 1.00u;
-	block-progression: tb;
-	direction: ltr;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-
-
-image.pluginAreaIcon { /* grid_ai2_link_window_g1 */
-	display: block; 
-	visibility: visible;
-	position: static; 
-	width: 5.75u;
-	/*height: 20%;*/	/* with NewsTicker */
-	height: 5.75u;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	block-progression: tb;
-	z-index: 1;
-}
-
-image.pluginAreaIcon:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5136)";
-}
-
-image#shortcutPluginIcon {
-    nav-index: 1;
-/* Block with flag '__NEWSTICKER' skipped. */
-}
-image#organizerPluginIcon {
-    nav-index: 2;
-}
-image#musicPlayerPluginIcon {
-    nav-index: 3;
-}
-image#radioPluginIcon {
-    nav-index: 4;
-}
-image#personalizationPluginIcon {
-    nav-index: 5;
-/* Block with flag '__NEWSTICKER' skipped. */
-}
-
-/**************************************
-	SAT AREA
-***************************************/
-
-box#SATPluginContainer {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: auto;
-	margin-left: 1.0u;
-/* left: 100%; */
-/*	right: 9.75u; */
-	margin-right: 9.75u;
-	top: 1.0u;
-	width: auto;
-	height: 4.0u;
-	background-image: auto;
-	direction: rtl;
-	block-progression: rl;
-}
-
-text.satText	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 4.0u;
-	left: auto;
-	margin-left: 1.0u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;         /* TODO: check */
-	text-align: left;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-image.satIcon	{
-	display: block;
-	visibility: visible;
-	position: static;
-	top: 0.25u;
-   /*left: auto;*/
-   right: auto;
-/*margin-left: 1.0u;*/
-	width: 3.5u;
-	height: 3.5u;
-}
-
-/**************************************
-	PLUGIN AREA
-***************************************/
-
-box#pluginContainerArea { /* popup_ai2_data_window */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	height: auto;	
-	left: 4.5u;
-	right: 4.5u;
-	top: 1.5u;
-	margin-left: 1.0u;
-	margin-right: 1.80u;
-	margin-bottom: 1.5u;
-	/*padding-left: 
-	padding-right:*/
-	block-progression: lr;
-	direction: ltr;
-	z-index: 0;
-}
-
-
-/*********
-	GENERAL
-**********/
-
-box.pluginContainer { /*  popup_ai2_data_window  */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: 100%;
-	height: 100%;
-	block-progression: tb;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-/* There seems to be a bug in the animation system that doesn't start
-the animation correctly. This is to go around it. */
-
-box#shortcutPluginAnimationFixButton { 
-	display: none;
-	visibility: hidden;
-	width: 0%;
-	height: 0%;
-}
-
-button.fakeButton { 
-	display: none;
-	visibility: hidden;
-	width: 0%;
-	height: 0%;
-}
-
-text.titleText{ /* heading_ai2_ gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	block-progression: lr;
-	width: auto;
-	height: 14.4%;	
-	padding-left: 1.2u;
-	padding-right: 1.1u;
-	margin-left: 0.7u;
-	margin-right: 0.9u;
-	padding-bottom: 0.5u;
-	border-bottom-width: thin;
-	border-bottom-style: dotted;
-	border-bottom-color: auto;
-	nav-index: auto;
-	font-family: EAknLogicalFontPrimaryFont; 
-	font-size: 4.0u;      
-	text-align: right;
-	color: "SKIN(268458534 13056 19)";
-}
-
-text.titleText:focus{
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-	color: "SKIN(268458534 13056 9)";
-}
-
-text.genericButtonText { /* ai2_gene_pane_t1 */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	padding-left: 1.0u;
-	padding-right: 1.0u;
-	margin-right: 0.9u;
-	margin-left: 0.7u;
-	padding-bottom: 0.6u;
-	padding-top: -0.3u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;        
-	color: "SKIN(268458534 13056 19)";
-	nav-index: auto;  
- 	border-top-width: thin;
-	border-top-style: dotted;
-	border-top-color: auto;
-	text-align: right;
-}
-
-
-text.genericButtonText:focus{
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-
-/************************
-	SHORTCUT PLUGIN AREA 
-*************************/
-
-image#shortcutPluginIcon { _s60-initial-focus: 1; }
-
-
-/************************
-	CALENDAR PLUGIN AREA 
-*************************/
-box#organizerPluginContainer { /*  popup_ai2_data_window  */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: 100%;
-	height: 100%;
-	block-progression: tb;
-	background-color:"SKIN(268458534 8448)";
-	z-index: 1;
-}
-/* Organiser items are buttons because they contain 1-2 textelements
-   and an image element */
-button.organizerButton { /* ai2_gene_pane */
-	display: none;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 13.5%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	nav-index: auto;  
- 	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-}
-
-button.organizerButtonLastPosition { /* ai2_gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 12.5%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	margin-bottom: 0.65u;
-	nav-index: auto;  
- 	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-}
-
-button.organizerButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-button.organizerButtonLastPosition:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-
-button#eventButton4 { 	display: none; 	nav-index: none; }
-button#eventButton5 { 	display: none; 	nav-index: none; }
-button#eventButton6 { 	display: none; 	nav-index: none; }
-
-image.eventIcon { /* ai2_gene_pane_g2 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 0.75u;
-	right: 5.25u;
-	left: 100%;
-	width: 4.0u;
-	height: 4.0u;
-}
-
-text.eventText1 { /* ai2_gene_pane_t1  */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4.0u;
-	left: 5.5u;
-	right: 3.0u;
-	/*top: 0.75u;*/
-	top: 6%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	text-align: right;
-	
-}
-
-
-text.eventText2 { /* ai2_gene_pane_t1  */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4.0u;
-	/*top: 4.5u;	*/
-	top: auto;
-	bottom: 6%;
-	left: 5.5u;
-	right: 3.0u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	text-align: right;
-}
-
-/*********************
-	PLAYER PLUGIN AREA 
-**********************/
-
-box#volumeIndicator { /* ai2_mp_volume_pane */
-	display: none;
-	visibility: visible;
-	position: absolute;
-	block-progression: rl;
-	top: 15.5%;
-	width: auto;
-	height: 14%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;	
-/*left: auto;*/
-	/*padding-left: 30%;*/
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-box#volumeIndicator:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-
-
-image#musicPlayerVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 31.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#musicPlayerVolumeDownIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 31.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-
-
-image#musicPlayerSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#musicPlayerSpeakerIconHighlight { 
-	display: block;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#musicPlayerSpeakerMutedIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#musicPlayerSpeakerMutedIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-/*
-image#musicPlayerVolumeIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 23.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-*/
-
-volumecontrol#musicPlayerVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 23.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-
-slider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#musicPlayerVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 2.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#musicPlayerVolumeUpIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 2.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-/*image#musicPlayerInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 2.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}*/
-
-
-/* Replaces volume control and playback info when player is inactive */
-box#playerInActive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-text#musicPlayerInActive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	text-align: center;
-	margin-top: auto;
-	margin-bottom: 45.0%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;	*/
-	color: "SKIN(268458534 13056 19)";	
-}
-
-
-box#infoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-/* A box around the artist and track name */
-/* the idea here is to display max 6 rows (max-line-amount). */
-/* The track has higher display-prio so it will be displayed first. */
-/* The track will get all the lines (max 6) it needs in order to display its name */
-/* Whats left of the 6 lines from track name will be used for artist */
-box#trackAndArtist{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	/* For landscape orientation. This way we get the */
-	/* last line out of sight */	
-	height: 100%;
-	margin-bottom: 10.5u;	
-}
-
-box#artistLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: adaptive;
-	_s60-display-priority: 11;
-}
-
-
-box#trackLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: adaptive;
-	_s60-display-priority: 10;
-}
-
-
-box#durationLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: 2.0u;
-}
-
-
-image.playerStatusIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: 3.5u;
-	height: 3.5u;
-	left: 100%;
-	right: 4.3u;
-	top: 1.0u;
-}
-
-text#time{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: 100%;
-	height: 4.0u;
-	left: 1.75u;
-	right: 7.75u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	margin-left: 1.0u;
-	margin-right: 1.0u;
-	margin-top: 0.25u;
-	text-align: right;		
-}
-
-text.playerTextLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	width: 100%;
-	margin-left: 3.5u;
-	height: adaptive;
-	margin-left: 1.0u;
-	margin-right: 1.5u;
-	margin-top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	text-overflow-mode: wrap;
-	max-line-amount: 6;	 
-	text-align: right;
-}
-
-
-/*********************
-	VISUAL/INTERNET RADIO PLUGIN AREA 
-**********************/
-
-button.radioTitleButton { /* heading_ai2_ gene_pane */
-	display: block;
-	visibility: visible;
-	position: static;
-	block-progression: lr;
-	width: auto;
-	height: 14.4%;	
-	padding-left: 1.2u;
-	padding-right: 1.1u;
-	margin-left: 0.7u;
-	margin-right: 0.9u;
-	padding-bottom: 0.5u;
-	border-bottom-width: thin;
-	border-bottom-style: dotted;
-	border-bottom-color: auto;
-	nav-index: auto;
-}
-
-button.radioTitleButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-text.radioTitleText { /* heading_ai2_gene_pane_t1 */
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	font-family: EAknLogicalFontPrimaryFont; 
-	font-size: 4.0u;      
-	color: "SKIN(268458534 13056 19)";
-	text-align: right;
-}
-
-/* Invisible icon that is used to switch correct layout */
-image.invisibleRadioTitleIcon {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 4.25u;
-	top: 0.25u;
-	width: 4.0u;
-	height: 4.0u;
-}
-
-box#radioVolumeIndicator {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	block-progression: rl;
-	top: 15.5%;
-	width: auto;
-	height: 14%;
-	margin-left: 0.75u;
-	margin-right: 0.75u;	
-/*left: auto;*/
-	/*padding-left: 30%;*/
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-box#radioVolumeIndicator:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-
-
-
-image#radioVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 31.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#radioVolumeDownIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 31.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-
-
-image#radioSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#radioSpeakerIconHighlight { 
-	display: block;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#radioSpeakerMutedIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-image#radioSpeakerMutedIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 28.5u;
-	width: 4u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-
-volumecontrol#radioVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 23.5u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-
-slider#radioSlider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#radioVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 100%;
-	right: 2.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-image#radioVolumeUpIconHighlight { 
-	display: none;
-	visibility: hidden;
-	position: absolute;
-	left: 100%;
-	right: 2.5u;
-	width: 1.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-
-
-/* Replaces volume control and playback info when radio is inactive */
-box#radioInactive	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: auto;
-	margin-left: 0.75u;
-	margin-right: 0.75u;
-	border-top-width: 0.5%;
-	border-top-style: dotted;
-	border-top-color: auto;
-	nav-index: auto;
-}
-
-
-text#radioInactiveText	{
-	display: block;
-	visibility: visible;
-	position: static;
-	text-align: center;
-	margin-top: auto;
-	margin-bottom: 45.0%;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";	
-}
-
-
-box#visualRadioInfoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-
-box#visualRadioNameLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-	block-progression: lr;
-}
-
-
-box#visualRadioLocationLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-}
-
-
-box#visualRadioFrequencyLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 0.25u;
-	margin-bottom: auto;
-}
-
-
-text#visualRadioNumberTextLine {
-	width: 4.0u;
-	height:	4.0u;
-	left: 100%;
-	right: 6.75u;
-	top: 0.25u;
-	font-weight: bold;
-	text-align: left;
-}
-
-
-text#visualRadioNameTextLine {
-	font-weight: bold;
-}
-
-
-text.visualRadioTextLine {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height:	4.0u;
-	left: 9.0u;
-	right: 3.75u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-	text-overflow-mode: wrap;
-	max-line-amount: 1;	 
-	text-align: right;
-}
-
-
-box#inetRadioInfoArea {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: auto;
-	top: 29.5%;
-	margin-left: 1.1u;
-	margin-right: 1.1u;
-	border-top-width: 0.4%;
-	border-top-style: dotted;
-	border-top-color: auto;	
-}
-
-
-box#inetRadioPresetLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-	margin-top: 2.0u;
-}
-
-
-box#inetRadioArtistLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-}
-
-
-box#inetRadioTrackLine {
-	display: block;
-	visibility: visible;
-	position: static;
-	height: 4.5u;
-}
-
-
-text.inetRadioTextLine {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: 100%;
-	height:	4.0u;
-	left: 1.75u;
-	right: 2.75u;
-	top: 0.25u;
-	font-family: EAknLogicalFontSecondaryFont; 
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-	text-overflow-mode: wrap;
-	max-line-amount: 1;	 
-	text-align: right;
-}
-
-
-text#inetRadioPresetTextLine {
-	font-weight: bold;
-}
-
-
-/****************************
-	PERSONALIZATION PLUGIN AREA 
-*****************************/
-
-/* Defined in "General" definitions */
-
-
-/*********************************
-	WRAPPER BOX FOR SAT & NEWSTICKER
-**********************************/
-
-box#SATAndNewstickerBox {
-	display: block;
-	position: absolute;
-	width: 100%;
-	height: 100%;
-	z-index: 0;
-}
-
-/* Block with flag '__NEWSTICKER' skipped. */
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/activeidle_reversed.xml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2259 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xmluiml SYSTEM "ActiveIdle.dtd">
-<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
-
-	<!--Application events -->
-	<actions>
-		<action>
-			<trigger name="startup"/>
-			<trigger name="uidefinitionmodificationend"/>
-			<event name="READY"/>
-		</action>
-		<action>
-			<trigger name="shutdown"/>
-			<event name="DOWN"/>
-		</action>
-		<action>
-			<trigger name="uidefinitionmodificationstart"/>
-			<event name="NEW_UI"/>
-		</action>
-		<action>
-			<trigger name="screendevicechange"/>
-			<event name="LAYOUT"/>
-		</action>
-	</actions>
-
-
-	<!-- Views -->
-	<views>
-
-		<!--###########################
-		    #####   AI plug-ins   #####
-		    ###########################-->
-		<property class="ContentSource" name="Shortcut" value="0x102750FA" load_ordinal="1"/>
-		<property class="ContentSource" name="Organizer" value="0x102750FE" load_ordinal="2"/>
-		<property class="ContentSource" name="MusicPlayer" value="0x10207B73" load_ordinal="3"/>
-		<property class="ContentSource" name="Profile" value="0x10275101" load_ordinal="5"/>
-		<property class="ContentSource" name="SAT" value="0x102078EB" load_ordinal="6"/>
-		<property class="ContentSource" name="VisualRadio" value="0x10208A89" load_ordinal="7"/>
-		<property class="ContentSource" name="InetRadio" value="0x2000B4A7" load_ordinal="8"/>
-
-
-		<!--###################################
-		    ###  Plug-in specific settings  ###
-		    ###################################-->
-
-		<!--###################################
-		    ###  Shortcut plug-in settings   ##
-		    ###################################-->
-		<!-- Always visible shortcuts -->
-		<!-- Shortcut #1, Messaging -->
-		<!-- NOTE: these indexes start from 1 -->
-		<property class="Settings/Shortcut" name="0x00000001" value="localapp:0x100058C5"/>
-		<!-- Shortcut #2, Phonebook -->
-		<property class="Settings/Shortcut" name="0x00000002" value="localapp:0x101F4CCE"/>
-		<!-- Shortcut #3, Clock -->
-		<property class="Settings/Shortcut" name="0x00000003" value="localapp:0x10005903"/>
-		<!-- Shortcut #4, Media Gallery 2 -->
-		<property class="Settings/Shortcut" name="0x00000004" value="localapp:0x101F8599"/>
-		<!-- Shortcut #5, Browser -->
-		<property class="Settings/Shortcut" name="0x00000005" value="localapp:0x10008D39"/>
-		<!-- Shortcut #6, Change theme -->
-		<property class="Settings/Shortcut" name="0x00000006" value="localapp:0x10005A32?view=0x102750A7"/>
-
-		<!-- NOTE! Shortcut settings are used also in Personalization UI (see settings below). -->
-
-		<!-- Optionally visible shortcuts -->
-		<!-- Soft key #1, Applications -->
-		<property class="Settings/Shortcut" name="0x01000100" value="localapp:0x101F4CD2"/>
-		<!-- Soft key #2, Contacts -->
-		<property class="Settings/Shortcut" name="0x01000101" value="localapp:0x101F4CCE"/>
-
-
-		<!--###################################
-		    ###  Organizer plug-in settings  ##
-		    ###################################-->
-		<!--	Item count and size settings -->
-		<!--        Total line count	-->
-		<property class="Settings/Organizer" name="0x01" value="6"/>
-		<!--        Timed item line count	-->
-		<property class="Settings/Organizer" name="0x02" value="2"/>
-		<!--        Non Timed item line count	-->
-		<property class="Settings/Organizer" name="0x03" value="1"/>
-		<!--        Line count reserved for non timed items	-->
-		<property class="Settings/Organizer" name="0x04" value="2"/>
-        <!-- Publish end time for upcoming timed items -->
-		<property class="Settings/Organizer" name="0x05" value="0"/>
-        <!-- Use alternate publishing for upcoming and ongoing items -->
-		<property class="Settings/Organizer" name="0x06" value="0"/>
-
-
-		<!-- Main view -->
-
-		<view id="ActiveIdleView">
-			<actions>
-				<action id="KeyEnd">
-					<trigger name="keyevent">
-						<property name="scancode" value="197"/>
-						<property name="eventtype" value="1"/>
-					</trigger>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutPluginIcon"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="SATAndNewstickerBox"/>
-						<property name="name" value="display"/>
-						<property name="value" value="block"/>
-						<property name="type" value="string"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="shortcutPluginContainer"/>
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="organizerPluginContainer"/>
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="playerPluginContainer"/>
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="radioPluginContainer"/>
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-					</event>
-					<event name="system/set">
-						<property name="id" value="personalizationPluginContainer"/>
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-					</event>
-				</action>
-			</actions>
-
-			<!--################################
-				####    Plug-in icon bar    ####
-				################################-->
-
-			<box id="pluginIconArea" focusable="false">
-
-				<!-- Shortcut plug-in
-					##################-->
-
-				<image id="shortcutPluginIcon" path="SKIN(270501603 6186)" class="pluginAreaIcon" focusable="true">
-					<actions>
-						<!-- Get focus -> Hide SAT & NT, show plug-in content -->
-						<action>
-							<trigger name="gainfocus"/>
-							<trigger name="stylus"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<!-- Arrow left -> Hide plug-in content -->
-						<action>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-
-						<!-- Click Select key or tap icon -->
-						<!--action>
-							<trigger name="activate"/>
-							<trigger name="stylus">
-								<property name="doubleclicked" value="up"/>
-							</trigger>
-							<event name="ui/focusgained(shortcutPluginContainer,SATAndNewstickerBox)"/>
-						</action-->
-						<action>
-							<trigger name="activate"/>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="shortcutPluginAnimationFixButton"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="shortcutButton1"/>
-							</event>
-						</action>
-						<!-- Select text to MSK label -->
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-					</actions>
-				</image>
-
-				<!-- Organizer plug-in
-					 #################-->
-
-				<image id="organizerPluginIcon" path="SKIN(270501046 268458241)" class="pluginAreaIcon" focusable="true">
-					<actions>
-						<!-- Show plug-in content -->
-						<action>
-							<trigger name="gainfocus"/>
-							<trigger name="stylus"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<!-- Hide plug-in content -->
-						<action>
-							<trigger name="up"/>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>		
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-
-						<!-- Move focus to plug-in content -->
-						<!--action>
-							<trigger name="activate"/>
-							<trigger name="stylus">
-								<property name="doubleclicked" value="up"/>
-							</trigger>
-							<event name="ui/focusgained(organizerPluginContainer,SATAndNewstickerBox)"/>
-						</action-->
-						
-						<action>
-							<trigger name="activate"/>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="organizerTitle"/>
-							</event>
-						</action>
-
-						<!-- Select text to MSK label -->
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-					</actions>
-				</image>
-
-				<!-- Music player plug-in
-					 ####################-->
-
-				<image id="musicPlayerPluginIcon" path="SKIN(270501046 270561987)" class="pluginAreaIcon" focusable="true">
-					<actions>
-
-						<!-- Show plug-in content -->
-						<action>
-							<trigger name="gainfocus"/>
-							<trigger name="stylus"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<!-- Hide plug-in content -->
-						<action>
-							<trigger name="up"/>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>			
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-
-						<!-- Move focus to plug-in content -->
-						<!--action>
-							<trigger name="activate"/>
-							<trigger name="stylus">
-								<property name="doubleclicked" value="up"/>
-							</trigger>
-							<event name="ui/focusgained(playerPluginContainer,SATAndNewstickerBox)"/>
-						</action-->
-						
-						<action>
-							<trigger name="activate"/>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="playerTitle"/>
-							</event>
-						</action>
-					
-						<!-- Select text to MSK label -->
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-					</actions>
-				</image>
-
-
-				<!-- Visual/Internet Radio plug-in
-					 ####################-->
-
-				<image id="radioPluginIcon" path="iractiveidle.mif#0" class="pluginAreaIcon" focusable="true">
-					<actions>
-
-						<!-- Show plug-in content -->
-						<action>
-							<trigger name="gainfocus"/>
-							<trigger name="stylus"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<!-- Hide plug-in content -->
-						<action>
-							<trigger name="up"/>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>			
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-
-						<!-- Move focus to plug-in content -->
-						<!--action>
-							<trigger name="activate"/>
-							<trigger name="stylus">
-								<property name="doubleclicked" value="up"/>
-							</trigger>
-							<event name="ui/focusgained(playerPluginContainer,SATAndNewstickerBox)"/>
-						</action-->
-						
-						<action>
-							<trigger name="activate"/>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="radioTitle"/>
-							</event>
-						</action>
-					
-						<!-- Select text to MSK label -->
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-					</actions>
-				</image>
-
-				<!-- Personalization plug-in
-					 	 ####################### -->
-
-				<image id="personalizationPluginIcon" path="SKIN(270501046 268458546)" class="pluginAreaIcon" focusable="true">
-					<actions>
-						<!-- Show plug-in content -->
-						<action>
-							<trigger name="gainfocus"/>
-							<trigger name="stylus"/>
-							<event name="system/set">
-								<property name="id" value="shortcutPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="organizerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="playerPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="radioPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<!-- Hide plug-in content -->
-						<action>
-							<trigger name="up"/>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-
-						<!-- Move focus to plug-in content -->
-						<!--action>
-							<trigger name="activate"/>
-							<trigger name="stylus">
-								<property name="doubleclicked" value="up"/>
-							</trigger>
-							<event name="ui/focusgained(personalizationPluginContainer,SATAndNewstickerBox)"/>
-						</action-->
-					
-						<action>
-							<trigger name="activate"/>
-							<trigger name="down"/>
-							<event name="system/set">
-								<property name="id" value="personalizationPluginContainer"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/set">
-								<property name="id" value="SATAndNewstickerBox"/>
-								<property name="name" value="display"/>
-								<property name="value" value="none"/>
-								<property name="type" value="string"/>
-							</event>
-							<event name="system/setfocus">
-								<property name="id" value="personalizationPluginTitle"/>
-							</event>
-						</action>
-			
-
-						<!-- Select text to MSK label -->
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-					</actions>
-				</image>
-
-			</box>
-
-			<!-- Container area for the plugin content for the following plugins:
-						Shortcuts, Organizer, Player, Personalization -->
-			<box id="pluginContainerArea" focusable="false">
-
-				<!--#################################
-					#####    Shortcut plugin    #####
-					#################################-->
-				<box id="shortcutPluginContainer" class="pluginContainer" focusable="false">
-					<!-- fake button to go around a bug in the animation system. Button is hidden. -->
-					<button id="shortcutPluginAnimationFixButton" class="fakeButton" focusable="true" />
-					<!-- Plugin title -->
-					<button id="shortcutPluginTitle" class="pluginTitle" focusable="true">
-						<text id="shortcutTitleText" class="titleText" focusable="false">&qtn_ai_shorts_title;</text>
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/ShowSettings"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-					</button>
-
-					<!-- Shortcut items -->
-					<!-- Shortcuts are not locked. I.e. they are dynamically published by the shortcut plug-in. -->
-
-					<!-- #1 -->
-					<button id="shortcutButton1" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000001)"/>
-								<!-- Messaging -->
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText1" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000001"/>
-						</text>
-					</button>
-
-					<!-- #2 -->
-					<button id="shortcutButton2" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000002)"/>
-								<!-- Contacts -->
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText2" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000002"/>
-						</text>
-					</button>
-
-					<!-- #3 -->
-					<button id="shortcutButton3" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000003)"/>
-								<!-- Clock -->
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText3" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000003"/>
-						</text>
-					</button>
-
-					<!-- #4 -->
-					<button id="shortcutButton4" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000004)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText4" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000004"/>
-						</text>
-					</button>
-
-					<!-- #5 -->
-					<button id="shortcutButton5" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000005)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText5" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000005"/>
-						</text>
-					</button>
-
-					<!-- #6 -->
-					<button id="shortcutButton6" class="genericButtonLastPosition" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByIndex(0x00000006)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="shortcutPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="shortcutPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="shortcutText6" class="genericButtonText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000006"/>
-						</text>
-					</button>
-
-					<!-- UI resources -->
-					<desc id="Shortcut/EmptyCaption">&shortcut_EmptyCaption;</desc>
-					<desc id="Shortcut/BackCaption">&text_softkey_back;</desc>
-					<desc id="Shortcut/NewMessageCaption">&qtn_set_idle_skey_new_msg;</desc>
-					<desc id="Shortcut/NewEmailCaption">&qtn_set_idle_skeys_email_editor;</desc>
-					<desc id="Shortcut/NewSyncMLMailCaption">&qtn_apps_syncml_mail_gs;</desc>
-					<desc id="Shortcut/NewPostcardCaption">&qtn_apps_mmspostcard_gs;</desc>
-					<desc id="Shortcut/NewAudioMsgCaption">&qtn_apps_audio_msg_gs;</desc>
-					<desc id="Shortcut/SelectMsgTypeCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-					<desc id="Shortcut/ChangeThemeCaption">&qtn_apps_idle_skin_gs;</desc>
-					<desc id="Shortcut/NewMessageShortCaption">&qtn_idle_skey_new_msg;</desc>
-					<desc id="Shortcut/NewEmailShortCaption">&qtn_apps_email_skey;</desc>
-					<desc id="Shortcut/NewSyncMLMailShortCaption">&qtn_apps_syncml_mail_skey;</desc>
-					<desc id="Shortcut/NewPostcardShortCaption">&qtn_apps_mmspostcard_skey;</desc>
-					<desc id="Shortcut/NewAudioMsgShortCaption">&qtn_apps_audio_msg_skey;</desc>
-					<desc id="Shortcut/SelectMsgTypeShortCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-					<desc id="Shortcut/ChangeThemeShortCaption">&qtn_apps_idle_skin_skey;</desc>
-
-				</box>
-
-
-				<!--###############################
-					####   Organizer plugin    ####
-					###############################-->
-				<box id="organizerPluginContainer" class="pluginContainer" focusable="false">
-					<!-- there is a fake button in the shortcut plugin area. It is
-					used to go around a bug in the animation system. It reserves a little space,
-					so this is to fix that space in this plugin -->
-					<button id="organizeFakeButton" class="fakeButton" focusable="true" />
-
-					<!-- Organizer title -->
-					<button id="organizerTitle" class="pluginTitle" focusable="true">
-						<text id="organizerTitleText" class="titleText" focusable="false">&qtn_ai_cal_title;</text>
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(0)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-					</button>
-
-					<!-- #1 -->
-					<button id="eventButton1" class="organizerButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(1)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon1" class="eventIcon" focusable="false">
-							<property class="Organizer/EventIcon" name="ordinal" value="0x01"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event icon -->
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon1" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText1_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText1_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon1" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText1_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText1_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText1_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x01"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton1" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton1" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton1" value="display: block;"/>
-							<property class="policy/Content" name="eventButton1" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText1_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x01"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText1_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText1_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton1" value="height: 13.5%;"/>
-							<property class="policy/Content" name="eventButton1" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- #2 -->
-					<button id="eventButton2" class="organizerButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(2)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon2" class="eventIcon" focusable="false">
-							<!--  path="qgn_indi_cdr_birthday.svg" -->
-							<property class="Organizer/EventIcon" name="ordinal" value="0x02"/>
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon2" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText2_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText2_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon2" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText2_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText2_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText2_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x02"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton2" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton2" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton2" value="display: block;"/>
-							<property class="policy/Content" name="eventButton2" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText2_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x02"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText2_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText2_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton2" value="height: 13.5%;"/>
-							<property class="policy/Content" name="eventButton2" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- #3 -->
-					<button id="eventButton3" class="organizerButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(3)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon3" class="eventIcon" focusable="false">
-							<!--  path="qgn_indi_cdr_todo.svg" -->
-							<property class="Organizer/EventIcon" name="ordinal" value="0x03"/>
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon3" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText3_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText3_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon3" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText3_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText3_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText3_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x03"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton3" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton3" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton3" value="display: block;"/>
-							<property class="policy/Content" name="eventButton3" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText3_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x03"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText3_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText3_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton3" value="height: 13.5%;"/>
-							<property class="policy/Content" name="eventButton3" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- #4 -->
-					<button id="eventButton4" class="organizerButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(4)"/>
-							</action>
-							<action>
-								<trigger name="up"/> <!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon4" class="eventIcon" focusable="false">
-							<property class="Organizer/EventIcon" name="ordinal" value="0x04"/>
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon4" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText4_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText4_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon4" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText4_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText4_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText4_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x04"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton4" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton4" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton4" value="display: block;"/>
-							<property class="policy/Content" name="eventButton4" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText4_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x04"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText4_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText4_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton4" value="height: 13.5%;"/>
-							<property class="policy/Content" name="eventButton4" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- #5 -->
-					<button id="eventButton5" class="organizerButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(5)"/>
-							</action>
-							<action>
-								<trigger name="up"/> <!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon5" class="eventIcon" focusable="false">
-							<property class="Organizer/EventIcon" name="ordinal" value="0x05"/>
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon5" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText5_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText5_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon5" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText5_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText5_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText5_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x05"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton5" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton5" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton5" value="display: block;"/>
-							<property class="policy/Content" name="eventButton5" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText5_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x05"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText5_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText5_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton5" value="height: 13.5%;"/>
-							<property class="policy/Content" name="eventButton5" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- #6 -->
-					<button id="eventButton6" class="organizerButtonLastPosition" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Organizer/ItemSelected(6)"/>
-							</action>
-							<action>
-								<trigger name="up"/> <!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="organizerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="organizerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="organizerTitle"/>
-								</event>
-							</action>
-						</actions>
-						<image id="Organizer/eventIcon6" class="eventIcon" focusable="false">
-							<property class="Organizer/EventIcon" name="ordinal" value="0x06"/>
-							<!-- If the image is empty, the left side of the first text line will take the space of the image. -->
-							<property class="policy/emptyContent" name="Organizer/eventIcon6" value="display: none;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText6_1" value="left: 0.75u;"/>
-							<property class="policy/emptyContent" name="Organizer/eventText6_2" value="left: 0.75u;"/>
-							<!-- If the image is non-empty, the left side of the first text line will be on the right side of the image. -->
-							<property class="policy/Content" name="Organizer/eventIcon6" value="display: block;"/>
-							<property class="policy/Content" name="Organizer/eventText6_1" value="left: 5.5u;"/>
-							<property class="policy/Content" name="Organizer/eventText6_2" value="left: 5.5u;"/>
-						</image>
-						<text id="Organizer/eventText6_1" class="eventText1" focusable="false">
-							<property class="Organizer/Event1stLine" name="ordinal" value="0x06"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton6" value="display: none;"/>
-							<property class="policy/emptyContent" name="eventButton6" value="nav-index: none;"/>
-							<property class="policy/Content" name="eventButton6" value="display: block;"/>
-							<property class="policy/Content" name="eventButton6" value="nav-index: auto;"/>
-						</text>
-						<text id="Organizer/eventText6_2" class="eventText2" focusable="false">
-							<property class="Organizer/Event2ndLine" name="ordinal" value="0x06"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the second event row -->
-							<property class="policy/emptyContent" name="Organizer/eventText6_2" value="display: none;"/>
-							<property class="policy/Content" name="Organizer/eventText6_2" value="display: block;"/>
-							<!-- emptyContent/nonEmptyContent policies defined for the calendar event box -->
-							<property class="policy/emptyContent" name="eventButton6" value="height: 12.5%;"/>
-							<property class="policy/Content" name="eventButton6" value="height: 27.0%;"/>
-						</text>
-					</button>
-
-					<!-- UI resources -->
-					<desc id="Organizer/NoEventsForToday">&qtn_ai_cale_no_event_today_short;</desc>
-					<desc id="Organizer/NoMoreEventsForToday">&qtn_ai_cale_no_more_ev_td_short;</desc>
-				</box>
-
-
-				<!--##############################
-					####    Player plugin     ####
-					##############################-->
-				<box id="playerPluginContainer" class="pluginContainer" focusable="false">
-					<!-- there is a fake button in the shortcut plugin area. It is
-					used to go around a bug in the animation system. It reserves a little space,
-					so this is to fix that space in this plugin -->
-					<button id="playerFakeButton" class="fakeButton" focusable="true" />
-					<button id="playerTitle" class="pluginTitle" focusable="true">
-						<text id="playerTitleText" class="titleText" focusable="false">&qtn_ai_player_title;</text>
-
-						<actions>
-
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="MusicPlayer/Library"/>
-							</action>
-
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="musicPlayerPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="playerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-
-							<action>
-								<trigger name="right"/>
-								<trigger name="left"/>
-								<event name="system/set">
-									<property name="id" value="playerPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-
-					</button>
-
-					<box id="playerInActive" focusable="false">
-						<text id="musicPlayerInActive" focusable="false">
-							&qtn_ai_player_no_tracks;
-						</text>
-					</box>
-					<!-- for faking the border in arabic layout -->
-					<box id="volumeIndicator" focusable="true">
-
-						<image id="musicPlayerInactiveVolumeDownIcon" path="SKIN(270501603 6420)" focusable="true"/>
-						<image id="musicPlayerVolumeDownIcon" path="SKIN(270501603 6419)" focusable="true">
-							<!-- TODO: Check if image can contain actions -->
-							<actions>
-								<action>
-									<trigger name="stylus"/>
-									<trigger name="activate"/>
-									<event name="MusicPlayer/VolDec"/>
-									<event name="system/setfocus">
-										<property name="id" value="volumeIndicator"/>
-									</event>
-								</action>
-
-							</actions>
-						</image>
-
-						<!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-						<image id="musicPlayerSpeakerIcon" path="SKIN(270501603 4332)" focusable="false"/>
-						<image id="musicPlayerSpeakerMutedIcon" path="SKIN(270501603 4334)" focusable="false"/>
-
-						<image id="musicPlayerVolumeIcon" focusable="false">
-							<property class="MusicPlayer/Volume"/>
-							<property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if (MusicPlayer/Vol0) display:block"/>
-							<property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-							<property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-							<property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol0) display:none"/>
-
-							<property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if (MusicPlayer/Vol0) display:block"/>
-							<property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-							<property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-							<property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol0) display:none"/>
-							<property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if (MusicPlayer/Vol10) display:block"/>
-							<property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if !(MusicPlayer/Vol10) display:none"/>
-							<property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol0, MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9 ) display:block"/>
-							<property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol10) display:none"/>
-						</image>
-
-						<image id="musicPlayerInactiveVolumeUpIcon" path="SKIN(270501603 6422)" focusable="true"/>
-						<image id="musicPlayerVolumeUpIcon" path="SKIN(270501603 6421)" focusable="true">
-							<!-- TODO: Check if image can contain actions -->
-							<actions>
-								<action>
-									<trigger name="stylus"/>
-									<trigger name="activate"/>
-									<event name="MusicPlayer/VolInc"/>
-									<event name="system/setfocus">
-										<property name="id" value="volumeIndicator"/>
-									</event>
-								</action>
-							</actions>
-						</image>
-						<actions>
-							<action>
-								<trigger name="left"/>
-								<event name="system/setfocus">
-									<property name="id" value="playerTitle"/>
-								</event>
-							</action>
-
-							<action>
-								<trigger name="up"/>
-								<event name="MusicPlayer/VolInc">
-								</event>
-							</action>
-
-							<action>
-								<trigger name="down"/>
-								<event name="MusicPlayer/VolDec">
-								</event>
-							</action>
-
-						<action>
-							<trigger name="losevisualisation"/>
-							<event name="system/setfocus">
-								<property name="id" value="playerTitle"/>
-							</event>
-						</action>
-						
-						<action>
-							<trigger name="gainfocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value=""/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>						
-						
-					</actions>
-
-					</box>
-
-					<box id="infoArea" focusable="false">
-						<box id="artistLine" focusable="false">
-							<text id="artistLine1" class="playerTextLine" focusable="false">
-								<property class="MusicPlayer/Artist"/>
-							</text>
-						</box>
-						<box id="trackLine" focusable="false">
-							<text id="trackLine1" class="playerTextLine" focusable="false">
-								<property class="MusicPlayer/Title"/>
-							</text>
-						</box>
-						<box id="durationLine" focusable="false">
-							<text id="time" class="playerTextLine" focusable="false">
-								<property class="MusicPlayer/Duration"/>
-							</text>
-						
-							<image id="statusIcon" class="playerStatusIcon" focusable="true">
-								<property class="MusicPlayer/Status"/>
-								<property class="policy/Content" name="volumeIndicator" value="display: block;"/>
-								<property class="policy/Content" name="infoArea" value="display: block;"/>
-								<property class="policy/Content" name="playerInActive" value="display: none;"/>
-								<property class="policy/emptyContent" name="playerInActive" value="display: block;"/>
-								<property class="policy/emptyContent" name="volumeIndicator" value="display: none;"/>
-								<property class="policy/emptyContent" name="infoArea" value="display: none;"/>
-							</image>
-
-							
-						</box>
-					</box>
-				<!-- Image resources -->
-				<desc id="MusicPlayer/PauseIcon" path="SKIN(270501603 5182)"/>
-				<desc id="MusicPlayer/PlayIcon" path="SKIN(270501603 5184)"/>
-				<desc id="MusicPlayer/Vol0" path="SKIN(270501603 6403)"/>
-				<desc id="MusicPlayer/Vol1" path="SKIN(270501603 6404)"/>
-				<desc id="MusicPlayer/Vol2" path="SKIN(270501603 6406)"/>
-				<desc id="MusicPlayer/Vol3" path="SKIN(270501603 6407)"/>
-				<desc id="MusicPlayer/Vol4" path="SKIN(270501603 6408)"/>
-				<desc id="MusicPlayer/Vol5" path="SKIN(270501603 6409)"/>
-				<desc id="MusicPlayer/Vol6" path="SKIN(270501603 6410)"/>
-				<desc id="MusicPlayer/Vol7" path="SKIN(270501603 6411)"/>
-				<desc id="MusicPlayer/Vol8" path="SKIN(270501603 6412)"/>
-				<desc id="MusicPlayer/Vol9" path="SKIN(270501603 6413)"/>
-				<desc id="MusicPlayer/Vol10" path="SKIN(270501603 6405)"/>
-				</box>
-
-				
-				<!--##############################
-					####    Visual/Internet Radio plugin     ####
-					##############################-->
-				<box id="radioPluginContainer" class="pluginContainer" focusable="false">
-					<!-- there is a fake button in the shortcut plugin area. It is
-					used to go around a bug in the animation system. It reserves a little space,
-					so this is to fix that space in this plugin -->
-					<button id="radioFakeButton" class="fakeButton" focusable="true" />
-					<button id="radioTitle" class="pluginTitle" focusable="true">
-						<image id="invisibleTitleStatus" class="invisibleRadioTitleIcon" focusable="false">
-                            <property class="VisualRadio/AppIcon" name="priority" value="0"/>
-                            <property class="InetRadio/AppIcon" name="priority" value="1"/>
-
-							<property class="policy/emptyContent" name="radioTitleText" value="display: block;"/>
-							<property class="policy/Resource" name="radioTitleText" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive, InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-
-							<property class="policy/emptyContent" name="visualRadioTitleText" value="display: none;"/>
-							<property class="policy/Resource" name="visualRadioTitleText" value="if (InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-							<property class="policy/Resource" name="visualRadioTitleText" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive) display:block"/>
-
-							<property class="policy/emptyContent" name="inetRadioTitleText" value="display: none;"/>
-							<property class="policy/Resource" name="inetRadioTitleText" value="if (VisualRadio/VRPlaying, VisualRadio/VRInactive) display:none"/>
-							<property class="policy/Resource" name="inetRadioTitleText" value="if (InetRadio/IRPlaying, InetRadio/IRStopped) display:block"/>
-
-							<property class="policy/emptyContent" name="radioVolumeIndicator" value="display: none;"/>
-							<property class="policy/Resource" name="radioVolumeIndicator" value="if (VisualRadio/VRInactive, InetRadio/IRStopped) display:none"/>
-							<property class="policy/Resource" name="radioVolumeIndicator" value="if (VisualRadio/VRPlaying, InetRadio/IRPlaying) display:block"/>
-
-							<property class="policy/emptyContent" name="radioInactive" value="display: block;"/>
-							<property class="policy/Resource" name="radioInactive" value="if (VisualRadio/VRInactive, InetRadio/IRStopped) display:block"/>
-							<property class="policy/Resource" name="radioInactive" value="if (VisualRadio/VRPlaying, InetRadio/IRPlaying) display:none"/>
-
-							<property class="policy/emptyContent" name="visualRadioInfoArea" value="display: none;"/>
-							<property class="policy/Resource" name="visualRadioInfoArea" value="if (VisualRadio/VRInactive, InetRadio/IRPlaying, InetRadio/IRStopped) display:none"/>
-							<property class="policy/Resource" name="visualRadioInfoArea" value="if (VisualRadio/VRPlaying) display:block"/>
-
-							<property class="policy/emptyContent" name="inetRadioInfoArea" value="display: none;"/>
-							<property class="policy/Resource" name="inetRadioInfoArea" value="if (InetRadio/IRStopped, VisualRadio/VRPlaying, VisualRadio/VRInactive) display:none"/>
-							<property class="policy/Resource" name="inetRadioInfoArea" value="if (InetRadio/IRPlaying) display:block"/>
-						</image>
-						<text id="radioTitleText" class="titleText" focusable="false">&qtn_vr_ai_radiolauncher;</text>
-						<text id="visualRadioTitleText" class="titleText" focusable="false">&qtn_vr_ai_vradio_title;</text>
-						<text id="inetRadioTitleText" class="titleText" focusable="false">&qtn_ir_ai_irapp_title;</text>
-
-						<actions>
-
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="VisualRadio/LaunchRadio"/>
-								<!-- Always let Visual Radio plug-in handle the launch event. It will start Radio Launcher. -->
-							</action>
-
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="radioPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="radioPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-
-							<action>
-								<trigger name="right"/>
-								<trigger name="left"/>
-								<event name="system/set">
-									<property name="id" value="radioPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-
-					</button>
-
-					<box id="radioInactive" focusable="false">
-						<text id="radioInactiveText" focusable="false">&qtn_vr_ai_radio_not_active;</text>
-					</box>
-
-					<box id="radioVolumeIndicator" focusable="true">
-
-						<image id="radioInactiveVolumeDownIcon" path="SKIN(270501603 6420)" focusable="true"/>
-						<image id="radioVolumeDownIcon" path="SKIN(270501603 6419)" focusable="true">
-							<!-- TODO: Check if image can contain actions -->
-							<actions>
-								<action>
-									<trigger name="stylus"/>
-									<trigger name="activate"/>
-									<event name="VisualRadio/VolDec"/>
-									<event name="InetRadio/VolDec"/>
-									<event name="system/setfocus">
-										<property name="id" value="radioVolumeIndicator"/>
-									</event>
-								</action>
-
-							</actions>
-						</image>
-
-						<!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-						<image id="radioSpeakerIcon" path="SKIN(270501603 4332)" focusable="false"/>
-						<image id="radioSpeakerMutedIcon" path="SKIN(270501603 4334)" focusable="false"/>
-
-						<image id="radioVolumeIcon" focusable="false">
-							<property class="VisualRadio/Volume" name="priority" value="0"/>
-							<property class="InetRadio/Volume" name="priority" value="1"/>
-							<property class="policy/Resource" name="radioSpeakerMutedIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-							<property class="policy/Resource" name="radioSpeakerMutedIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-							<property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-							<property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-
-							<property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-							<property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-							<property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-							<property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-							<property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:block"/>
-							<property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if !(VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-							<property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol0, VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, InetRadio/Vol0, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9 ) display:block"/>
-							<property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-						</image>
-
-						<image id="radioInactiveVolumeUpIcon" path="SKIN(270501603 6422)" focusable="true"/>
-						<image id="radioVolumeUpIcon" path="SKIN(270501603 6421)" focusable="true">
-							<!-- TODO: Check if image can contain actions -->
-							<actions>
-								<action>
-									<trigger name="stylus"/>
-									<trigger name="activate"/>
-									<event name="VisualRadio/VolInc"/>
-									<event name="InetRadio/VolInc"/>
-									<event name="system/setfocus">
-										<property name="id" value="radioVolumeIndicator"/>
-									</event>
-								</action>
-							</actions>
-						</image>
-						<actions>
-							<action>
-								<trigger name="left"/>
-								<event name="system/setfocus">
-									<property name="id" value="radioTitle"/>
-								</event>
-							</action>
-
-							<action>
-								<trigger name="up"/>
-								<event name="VisualRadio/VolInc"/>
-								<event name="InetRadio/VolInc"/>
-							</action>
-
-							<action>
-								<trigger name="down"/>
-								<event name="VisualRadio/VolDec"/>
-								<event name="InetRadio/VolDec"/>
-							</action>
-
-							<action>
-								<trigger name="losevisualisation"/>
-								<event name="system/setfocus">
-									<property name="id" value="radioTitle"/>
-								</event>
-							</action>
-						
-							<action>
-								<trigger name="gainfocus"/>
-								<event name ="system/set">
-									<property name="id" value="MSK"/>
-									<property name="name" value="label"/>
-									<property name="value" value=""/>
-									<property name="type" value="attribute"/>
-								</event>
-							</action>
-
-							<action>
-								<trigger name="losefocus"/>
-								<event name ="system/set">
-									<property name="id" value="MSK"/>
-									<property name="name" value="label"/>
-									<property name="value" value="&qtn_msk_open;"/>
-									<property name="type" value="attribute"/>
-								</event>
-							</action>						
-							
-						</actions>
-
-					</box>
-
-					<box id="visualRadioInfoArea" focusable="false">
-						<box id="visualRadioNameLine" focusable="false">
-							<text id="visualRadioNumberTextLine" class="visualRadioTextLine" focusable="false">
-								<property class="VisualRadio/Number"/>
-							</text>
-							<text id="visualRadioNameTextLine" class="visualRadioTextLine" focusable="false">
-								<property class="VisualRadio/Name"/>
-							</text>
-						</box>
-						<box id="visualRadioLocationLine" focusable="false">
-							<text id="visualRadioLocationTextLine" class="visualRadioTextLine" focusable="false">
-								<property class="VisualRadio/Location"/>
-							</text>
-						</box>
-						<box id="visualRadioFrequencyLine" focusable="false">
-							<text id="visualRadioFrequencyTextLine" class="visualRadioTextLine" focusable="false">
-								<property class="VisualRadio/Frequency"/>
-							</text>
-						</box>
-					</box>
-
-					<box id="inetRadioInfoArea" focusable="false">
-												
-						<box id="inetRadioPresetLine" focusable="false">
-							<text id="inetRadioPresetTextLine" class="inetRadioTextLine" focusable="false">
-								<property class="InetRadio/Preset"/> 
-							</text> 
-						</box>
-						<box id="inetRadioArtistLine" focusable="false">
-							<text id="inetRadioArtistTextLine" class="inetRadioTextLine" focusable="false">
-								 <property class="InetRadio/Artist"/>
-							</text>
-						</box>
-						<box id="inetRadioTrackLine" focusable="false">
-							<text id="inetRadioTrackTextLine" class="inetRadioTextLine" focusable="false">
-								 <property class="InetRadio/Track"/>
-							</text>
-						</box>
-					</box>
-
-					<!-- Image resources -->
-					<desc id="VisualRadio/Vol0" path="SKIN(270501603 6403)"/>
-					<desc id="VisualRadio/Vol1" path="SKIN(270501603 6404)"/>
-					<desc id="VisualRadio/Vol2" path="SKIN(270501603 6406)"/>
-					<desc id="VisualRadio/Vol3" path="SKIN(270501603 6407)"/>
-					<desc id="VisualRadio/Vol4" path="SKIN(270501603 6408)"/>
-					<desc id="VisualRadio/Vol5" path="SKIN(270501603 6409)"/>
-					<desc id="VisualRadio/Vol6" path="SKIN(270501603 6410)"/>
-					<desc id="VisualRadio/Vol7" path="SKIN(270501603 6411)"/>
-					<desc id="VisualRadio/Vol8" path="SKIN(270501603 6412)"/>
-					<desc id="VisualRadio/Vol9" path="SKIN(270501603 6413)"/>
-					<desc id="VisualRadio/Vol10" path="SKIN(270501603 6405)"/>
-					<!-- The following icons are not displayed, they just indicate which layout to use -->
-					<desc id="VisualRadio/VRPlaying" path="SKIN(270501603 5184)"/>
-					<desc id="VisualRadio/VRInactive" path="SKIN(270501603 5182)"/>
-
-					<desc id="InetRadio/Vol0" path="SKIN(270501603 6403)"/>
-					<desc id="InetRadio/Vol1" path="SKIN(270501603 6404)"/>
-					<desc id="InetRadio/Vol2" path="SKIN(270501603 6406)"/>
-					<desc id="InetRadio/Vol3" path="SKIN(270501603 6407)"/>
-					<desc id="InetRadio/Vol4" path="SKIN(270501603 6408)"/>
-					<desc id="InetRadio/Vol5" path="SKIN(270501603 6409)"/>
-					<desc id="InetRadio/Vol6" path="SKIN(270501603 6410)"/>
-					<desc id="InetRadio/Vol7" path="SKIN(270501603 6411)"/>
-					<desc id="InetRadio/Vol8" path="SKIN(270501603 6412)"/>
-					<desc id="InetRadio/Vol9" path="SKIN(270501603 6413)"/>
-					<desc id="InetRadio/Vol10" path="SKIN(270501603 6405)"/>
-                    <!-- The following icons are not displayed, they just indicate which layout to use -->
-                    <desc id="InetRadio/IRPlaying" path="SKIN(270501603 5184)"/>
-                    <desc id="InetRadio/IRStopped" path="SKIN(270501603 5182)"/>
-				</box>
-
-				
-				<!--########################################
-						#####    Personalization plugin    #####
-						########################################-->
-				<box id="personalizationPluginContainer" class="pluginContainer" focusable="false">
-					<!-- there is a fake button in the shortcut plugin area. It is
-					used to go around a bug in the animation system. It reserves a little space,
-					so this is to fix that space in this plugin -->
-					<button id="personalizationFakeButton"  class="fakeButton" focusable="true" />
-					<!-- Plugin title -->
-					<button id="personalizationPluginTitle" class="pluginTitle" focusable="true">
-						<text id="personalizationTitleText" class="titleText" focusable="false">&qtn_ai_pers_title;</text>
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Shortcut/LaunchByValue(localapp:0x100058EC?view=0x10207252)"/><!-- GS app, prsln plugin -->
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-					</button>
-
-
-					<!-- #1 -->
-					<button id="personalizationButton1" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<event name="Profile/SwapProfile(1)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-
-						<action>
-							<trigger name="gainfocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_select;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						<action>
-							<trigger name="losefocus"/>
-							<event name ="system/set">
-						 		<property name="id" value="MSK"/>
-						 		<property name="name" value="label"/>
-						 		<property name="value" value="&qtn_msk_open;"/>
-						 		<property name="type" value="attribute"/>
-							</event>
-						</action>
-
-						</actions>
-						<text id="personalizationText1" class="genericButtonText" focusable="false">
-							<property class="Profile/SwapProfileName"/>
-						</text>
-					</button>
-
-					<!-- #2 -->
-					<button id="personalizationButton2" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<!-- TODO: Open profile application main view -->
-								<event name="Shortcut/LaunchByValue(localapp:0x100058F8)"/> <!-- Profileapp uid -->
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="personalizationText2" class="genericButtonText" focusable="false">
-							&qtn_ai_pers_all_profiles;
-						</text>
-					</button>
-
-					<!-- #3 -->
-					<button id="personalizationButton3" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<!-- Opens the main view of Personalization application -->								
-								<event name="Shortcut/LaunchByValue(localapp:0x10005A32?view=0x102750AA)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="personalizationText3" class="genericButtonText" focusable="false">
-							&qtn_ai_pers_change_theme;
-						</text>
-					</button>
-
-					<!-- #4 -->
-					<button id="personalizationButton4" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<!-- Opens Wallpaper changing state in Personalization application -->
-								<event name="Shortcut/LaunchByValue(localapp:0x10005A32?view=2)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="personalizationText4" class="genericButtonText" focusable="false">
-							&qtn_ai_pers_change_wallpaper;
-						</text>
-					</button>
-
-					<!-- #5 -->
-					<button id="personalizationButton5" class="genericButton" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<!-- Open speed dial application shortcut -->
-								<event name="Shortcut/LaunchByValue(localapp:0x1000590A)"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="personalizationText5" class="genericButtonText" focusable="false">
-							&qtn_apps_sd_list;
-						</text>
-					</button>
-
-					<!-- #6 -->
-					<button id="personalizationButton6" class="genericButtonLastPosition" focusable="true">
-						<actions>
-							<action>
-								<trigger name="stylus"/>
-								<trigger name="activate"/>
-								<!-- Open shortcuts view in general settings -->
-								<event name="Shortcut/ShowSettings"/>
-							</action>
-							<action>
-								<trigger name="up"/>
-								<!-- joystick left -->
-								<event name="system/setfocus">
-									<property name="id" value="personalizationPluginIcon"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="personalizationPluginContainer"/>
-									<property name="name" value="display"/>
-									<property name="value" value="none"/>
-									<property name="type" value="string"/>
-								</event>
-								<event name="system/set">
-									<property name="id" value="SATAndNewstickerBox"/>
-									<property name="name" value="display"/>
-									<property name="value" value="block"/>
-									<property name="type" value="string"/>
-								</event>
-							</action>
-						</actions>
-						<text id="personalizationText6" class="genericButtonText" focusable="false">
-							&qtn_ai_pers_change_sc;
-						</text>
-					</button>
-				</box>
-
-			</box>	<!-- end of pluginContainerArea -->
-
-			<!--############################
-				 #####   SAT plugin     #####
-				############################-->
-			<box id="SATAndNewstickerBox" focusable="false">
-	        
-				<box id="SATPluginContainer" focusable="false">
-					<text id="SatIdleModeText" class="satText" focusable="false">
-						<property class="SAT/SatIdleModeText"/>
-						<!--  emptyContent/Content policies defined for the SAT plug-in box -->
-						<property class="policy/emptyContent" name="SATPluginContainer" value="display: none;"/>
-						<property class="policy/Content" name="SATPluginContainer" value="display: block;"/>
-						<property class="policy/Content" name="SatIdleModeIcon" value="display: block;"/>
-					</text>
-					<image id="SatIdleModeIcon" class="satIcon" focusable="false">
-						<property class="SAT/SatIdleModeIcon"/>
-						<property class="policy/Content" name="SatIdleModeText" value="margin-left: 4.0u;"/>
-						<property class="policy/emptyContent" name="SatIdleModeText" value="margin-left: 1.0u;"/>
-					</image>
-				</box>
-
-			</box>
-
-			<!--#################################################
-			    ####     Menubar with soft key shortcuts     ####
-			    #################################################-->
-			<menubar>
-				<menuitem id="SK1" label="">
-					<!-- ordinal value is the same as in the default settings -->
-					<property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000100"/>
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x01000100)"/>
-						</action>
-					</actions>
-				</menuitem>
-				<menuitem id="SK2" label="">
-					<property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000101"/>
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<!-- if using both activate and hold for same SK active trigger need to be specified like this (2 = keyup) otherwise hold will not work -->
-							<trigger name="activate"><property name="eventtype" value="2"/></trigger>
-							<event name="Shortcut/LaunchByIndex(0x01000101)"/>
-						</action>
-						<action>
-							<trigger name="hold"/>
-							<event name="Shortcut/LaunchByValue(localapp:0x10281867)"/>
-						</action>
-					</actions>
-				</menuitem>
-				<menuitem id="MSK" label="&qtn_msk_select;">
-					<actions>
-   					<action>
-							<trigger name="stylus">
-								<property name="clicked" value="down"/>
-							</trigger>
-							<event name="system/set">
-								<property name="id" value="msk_text"/>
-								<property name="name" value="display"/>
-								<property name="value" value="block"/>
-								<property name="type" value="string"/>
-							</event>
-						</action>
-					</actions>
-				</menuitem>				
-			</menubar>
-		</view>
-	</views>
-
-</xmluiml>
Binary file internetradio2.0/activeidlethemes/themes/ActiveIdle/iractiveidle.mif has changed
--- a/internetradio2.0/activeidlethemes/themes/ActiveIdle/qsn_fr_popup_sub_mask_icon.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg width="180" height="223" viewBox="0 0 180 223">
-<linearGradient id="_2" gradientUnits="userSpaceOnUse" x1="90" y1="212.79" x2="90" y2="7.79">
-<stop stop-color="#5F5F5F" offset="0"/>
-<stop stop-color="#FFFFFF" offset="1"/>
-</linearGradient>
-<rect fill="url(#_2)" width="180" height="223"/>
-</svg>
\ No newline at end of file
Binary file internetradio2.0/activeidlethemes/themes/ActiveIdle/vractiveidle.mif has changed
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.css	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,563 +0,0 @@
-
-/* What's this? */
-* {
-	nav-index: none;
-}
-
-/*******
-	VIEW
-********/
-
-view {
-	display: block; 
-	position: static; 	
-	width: 100%;
-	height: 100%;
-	direction: ltr;
-	block-progression: tb;
-	background-image: wallpaper;
-}
-
-menuitem#Shortcut_SK2{
-	_s60-longtap: true;
-}
-/**************************************
-	GENERAL DEFINITIONS FOR PLUGIN BOXES
-***************************************/
-
-box.pluginContainerBox { /* main_idle_act_pane */
-	position: static; 
-	border-top-width: 0.25u;
-	border-top-style: dotted;    /* linestyle of the box */
-	border-top-color: black;
-	width: auto;
-	nav-index: none;
-}
-/* everything else but the NT is inside this box */
-box#mainBox{
-	position: static;
-	width: auto;
-/* Block with flag '__NEWSTICKER' skipped. */
-	height: 100%;
-	nav-index: none;
-}
-
-/* settings for the pluginContainerBox during focus */
-box.pluginContainerBox:focus {
-  /*background-color: "SKIN(268458534 8448)"; *//* see S60_3_1_Reference_Icons_1.3.doc */
-	background-color: "SKIN(268458534 5120 9)";
- }
-
-
-/************************
-	SHORTCUT PLUGIN AREA 
-*************************/
-
-/* box where the actual plugin information is shown */
-box#shortcutPluginContainer { /* ai_links_pane*/
-	margin-top: 0.5u;
-	height: 7.5u;
-	padding-left:  2u;
-	padding-right: 2u;
-	padding-top: /*0.7%;*/ 0.5u;
-	
-	block-progression: lr;
-}
-
-
-button.shortcutButton { /* cell_ai_link_pane */
-	width: auto;
-	height: 7u;
-	nav-index: auto;
-}
-
-
-button.shortcutButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5136)";
-}
-
-/* What's this ? */
-button#shortcutButton1 {  
-	_s60-initial-focus: 100; 
-}
-
-
-image.shortcutIcon { 
-	width: 7u;
-	height: 7u;
-	margin-left: auto;
-	margin-right: auto;
-	_s60-aspect-ratio: preserve;
-}
-
-
-/*
-	Border-style ja -width täytyy olla määriteltynä vaikka käytetään skinistä tulevaa LAF:ia (bg-image:auto;). 
-	Skini koostuu kahdesta osasta ja border-width määrittää myös skiniborderin.
-*/
-tooltip.shortcutTooltip { /* popup_ai_links_title_window */
-	width: 10.0u; /* any fixed lenghts works here if the owerflow is set to both tooltip and text inside it */
-/*height: 4.9u;*/
-	height: 5.5u;
-	border-style: solid; 
-	border-width: 5px; 
-	_s60-start-delay: 1000000;
-	_s60-display-time: 1000000;
-	background-color:"SKIN(268458534 8480)";	/* TODO: check */
-	overflow: visible;
-}
-
-
-text.shortcutTooltipText { /* popup_ai_links_title_window_t1 */
-	position: static;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	width: 100%;
-	height: 85%;
-	text-align: center;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	overflow: visible;
-	padding-right: 1u;
-	padding-left: 1u;
-	/*padding-top: 1u;*/
-	padding-bottom: 1u;
-}
-
-
-/*********************
-	PLAYER PLUGIN AREA 
-**********************/
-
-box#playerPlugin:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#playerPlugin{
-	height:5u;
-	display: none;
-	nav-index: none;
-	block-progression: lr;
-}
-
-image#playerStatusIcon {
-	display: block;
-	visibility: visible;
-	position: static;
-	top: 0.3u;
-	margin-left: 1.25u;
-	margin-top: 0.75u;
-	width: 3.5u;
-	height: 3.5u;
-}
-
-text#playerTitleText {
-	display: none;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 4u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	margin-left: 0.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-text#playerDurationText {
-	display: block;
-	visibility: visible;
-	position: static;
-	width: 11u;
-	margin-right: 0.75u;
-	text-align:right;
-	height: 4.0u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-/*********************
-	PLAYER VOLUME CONTROLL
-**********************/
-box#mpVolume {
-	display: none;
-	width: 40u;
-	height: 6u;	
-	position: absolute;
-	z-index: 2;
-	left: 5u;
-	top: 4.0u;
-	background-color:"SKIN(268458534 8480)";
-}
-
-image#musicPlayerVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerInactiveVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerSpeakerMutedIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 1.00u;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-/* 
-image#musicPlayerVolumeIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10u;
-	width: 20u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-
-*/
-
-volumecontrol#musicPlayerVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10.0u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-
-slider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-	
-}
-
-image#musicPlayerVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-
-/*********************
-	VISUAL/INTERNET RADIO PLUGIN AREA 
-**********************/
-
-box#radioPlugin:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#radioPlugin{
-	height:5u;
-	display: none;
-	nav-index: none;
-	block-progression: lr;
-}
-
-image#radioStatusIcon {
-	display: block;
-	visibility: visible;
-	position: static;
-	top: 0.3u;
-	margin-left: 1.25u;
-	margin-top: 0.75u;
-	width: 3.5u;
-	height: 3.5u;
-}
-
-text#radioTitleText {
-	display: none;
-	visibility: visible;
-	position: static;
-	width: auto;
-	height: 4u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	margin-left: 0.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-
-/*********************
-	VISUAL/INTERNETRADIO VOLUME CONTROL
-**********************/
-box#radioVolume {
-	display: none;
-	width: 40u;
-	height: 6u;	
-	position: absolute;
-	z-index: 2;
-	left: 5u;
-	top: 4.0u;
-	background-color:"SKIN(268458534 8480)";
-}
-
-image#radioVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioInactiveVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-image#radioSpeakerMutedIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 1.00u;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-volumecontrol#radioVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10.0u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-
-slider#radioSlider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#radioVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-
-/******************
-	SAT PLUGIN AREA 
-*******************/
-
-box#SATPluginContainer {
-	display: none;  /*block;*/
-	nav-index: none; /* SAT is not focusable */
-	height: 5u;
-	position: static;
-	/*block-progression: lr;*/
-	direction: rtl;
-	block-progression: rl;
-}
-
-
-image.satIcon	{
-	display: block;
-	visibility: visible;
-	position: static;
-	margin-top: 0.25u;
-	margin-left: 0.7u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-text.satText	{
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;	
-	top: 0.25u;
-	margin-top: 0.25u;
-	margin-right: 1.0u;
-	margin-left: 0.55u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;         /* TODO: check */
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-
-/************************
-	CALENDAR PLUGIN AREA 
-*************************/
-
-box#calendarPluginContainer:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#calendarPluginContainer {
-	display: block;
-	height: adaptive;
-	padding-bottom: 1u;
-}
-
-
-button.calendarEntryBox {
-	display: none;
-	visibility: visible;
-	height: auto;
-}
-
-
-image.calendarEntryIcon { /* ai_gene_pane_1_g1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 0.5u;
-	left: 0.7u;
-	width: 4u;
-	height: 4u;
-}
-
-text.calendarEntryText1 { /* ai_gene_pane_1_t1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	top: 0.0u;
-	left: 5.75u;
-	right: 0.9u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-text.calendarEntryText2 { /* ai_gene_pane_2_t1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	top: 4.25u;
-	left: 5.75u;
-	right: 0.9u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-/* priorities for calendar buttons, the lower we go, the less priority the button has --> if it does not fit on the screen it will be dropped*/
-/* please note that the priority ID must be unique for each element defined --> do not use it via class element */
-button#calendarEntryBox1{ _s60-display-priority: 21; }
-button#calendarEntryBox2{ _s60-display-priority: 22; }
-button#calendarEntryBox3{ _s60-display-priority: 23; }
-button#calendarEntryBox4{ _s60-display-priority: 24; }
-button#calendarEntryBox5{ _s60-display-priority: 25; }
-button#calendarEntryBox6{ _s60-display-priority: 26; }
-button#calendarEntryBox7{ _s60-display-priority: 27; }
-button#calendarEntryBox8{ _s60-display-priority: 28; }
-
-/* Block with flag '__NEWSTICKER' skipped. */
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.dtd	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-============================================================================
-<FileName: "ClassicIdle.dtd">
-<PartOf  : "Active Idle 2">
-
-<FileDescription: "<Description of file>">
-<FileVersion    : "<Version>">
-
-<Copyright:
-"Copyright © 2005 Nokia Corporation.
-This material, including documentation and any related
-computer programs, is protected by copyright controlled by
-Nokia Corporation. All rights are reserved. Copying,
-including reproducing, storing,  adapting or translating, any
-or all of this material requires the prior written consent of
-Nokia Corporation. This material also contains confidential
-information which may not be disclosed to others without the
-prior written consent of Nokia Corporation.">
-============================================================================
--->
-<!--
-qtn_ai_skin_full_page.attributes
-qtn_ai_skin_full_page.layout "list_single_graphic_pane_t1"
-qtn_ai_skin_full_page.release "3.2"
-qtn_ai_skin_full_page.description "Title of the theme"
-qtn_ai_skin_full_page.parents "list_single_graphic_pane"
--->
-<!ENTITY qtn_ai_skin_full_page "Full Page">
-
-<!--
-shortcut_EmptyCaption.attributes
-shortcut_EmptyCaption.layout "list_ai2_gene_pane_t1"
-shortcut_EmptyCaption.release "3.2"
-shortcut_EmptyCaption.description "Empty shortcut"
-shortcut_EmptyCaption.parents "list_ai2_gene_pane"
--->
-<!ENTITY shortcut_EmptyCaption " ">
-
-<!--
-qtn_set_idle_skey_new_msg.attributes
-qtn_set_idle_skey_new_msg.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skey_new_msg.release "3.2"
-qtn_set_idle_skey_new_msg.description "New message shortcut"
-qtn_set_idle_skey_new_msg.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skey_new_msg "New message">
-
-<!--
-qtn_set_idle_skeys_email_editor.attributes
-qtn_set_idle_skeys_email_editor.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skeys_email_editor.release "3.2"
-qtn_set_idle_skeys_email_editor.description "New e-mail shortcut"
-qtn_set_idle_skeys_email_editor.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skeys_email_editor "New e-mail">
-
-<!--
-qtn_apps_syncml_mail_gs.attributes
-qtn_apps_syncml_mail_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_syncml_mail_gs.release "3.2"
-qtn_apps_syncml_mail_gs.description "New SyncML mail shortcut"
-qtn_apps_syncml_mail_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_syncml_mail_gs "New SyncML mail">
-
-<!--
-qtn_apps_mmspostcard_gs.attributes
-qtn_apps_mmspostcard_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_mmspostcard_gs.release "3.2"
-qtn_apps_mmspostcard_gs.description "New MMS postcard shortcut"
-qtn_apps_mmspostcard_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_mmspostcard_gs "New MMS Postcard">
-
-<!--
-qtn_apps_audio_msg_gs.attributes
-qtn_apps_audio_msg_gs.layout "list_ai2_gene_pane_t1"
-qtn_apps_audio_msg_gs.release "3.2"
-qtn_apps_audio_msg_gs.description "New audio message shortcut"
-qtn_apps_audio_msg_gs.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_apps_audio_msg_gs "New Audio msg">
-
-<!--
-qtn_set_idle_skey_select_msg_type.attributes
-qtn_set_idle_skey_select_msg_type.layout "list_ai2_gene_pane_t1"
-qtn_set_idle_skey_select_msg_type.release "3.2"
-qtn_set_idle_skey_select_msg_type.description "Select message type shortcut"
-qtn_set_idle_skey_select_msg_type.parents "list_ai2_gene_pane"
--->
-<!ENTITY qtn_set_idle_skey_select_msg_type "Select msg type">
-
-<!--
-qtn_apps_idle_skin_gs.attributes
-qtn_apps_idle_skin_gs.layout "list_single_large_graphic_pane_t1_cp2"
-qtn_apps_idle_skin_gs.release "3.2"
-qtn_apps_idle_skin_gs.description "Change theme shortcut"
-qtn_apps_idle_skin_gs.parents "list_single_large_graphic_pane_cp2"
--->
-<!ENTITY qtn_apps_idle_skin_gs  "Change idle theme">
-
-<!--
-qtn_idle_skey_new_msg.attributes
-qtn_idle_skey_new_msg.layout "control_pane_t2"
-qtn_idle_skey_new_msg.release "3.2"
-qtn_idle_skey_new_msg.description "New message shortcut"
-qtn_idle_skey_new_msg.parents "control_pane"
--->
-<!ENTITY qtn_idle_skey_new_msg  "New msg.">
-
-<!--
-qtn_apps_email_skey.attributes
-qtn_apps_email_skey.layout "control_pane_t2"
-qtn_apps_email_skey.release "3.2"
-qtn_apps_email_skey.description "New e-mail shortcut"
-qtn_apps_email_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_email_skey  "New mail">
-
-<!--
-qtn_apps_syncml_mail_skey.attributes
-qtn_apps_syncml_mail_skey.layout "control_pane_t2"
-qtn_apps_syncml_mail_skey.release "3.2"
-qtn_apps_syncml_mail_skey.description "New SyncML mail shortcut"
-qtn_apps_syncml_mail_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_syncml_mail_skey  "New sync.mail">
-
-<!--
-qtn_apps_mmspostcard_skey.attributes
-qtn_apps_mmspostcard_skey.layout "control_pane_t2"
-qtn_apps_mmspostcard_skey.release "3.2"
-qtn_apps_mmspostcard_skey.description "New MMS postcard shortcut"
-qtn_apps_mmspostcard_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_mmspostcard_skey  "New postcard">
-
-<!--
-qtn_apps_audio_msg_skey.attributes
-qtn_apps_audio_msg_skey.layout "control_pane_t2"
-qtn_apps_audio_msg_skey.release "3.2"
-qtn_apps_audio_msg_skey.description "New audio message shortcut"
-qtn_apps_audio_msg_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_audio_msg_skey  "New audiomsg">
-
-<!--
-qtn_apps_idle_skin_skey.attributes
-qtn_apps_idle_skin_skey.layout "control_pane_t2"
-qtn_apps_idle_skin_skey.release "3.2"
-qtn_apps_idle_skin_skey.description "Change theme shortcut"
-qtn_apps_idle_skin_skey.parents "control_pane"
--->
-<!ENTITY qtn_apps_idle_skin_skey  "Idle theme">
-
-<!--
-text_softkey_back.attributes
-text_softkey_back.layout "control_pane_t2"
-text_softkey_back.release "3.2"
-text_softkey_back.description "Back text for SK2"
-text_softkey_back.parents "control_pane"
--->
-<!ENTITY text_softkey_back  "Back">
-
-<!--
-qtn_msk_select.attributes
-qtn_msk_select.layout "control_pane_t3/opt3"
-qtn_msk_select.release "3.2"
-qtn_msk_select.description "Select text for MSK"
-qtn_msk_select.parents "control_pane"
--->
-<!ENTITY qtn_msk_select  "Select">
-
-<!--
-qtn_msk_open.attributes
-qtn_msk_open.layout "control_pane_t3/opt3"
-qtn_msk_open.release "3.2"
-qtn_msk_open.description "Open text for MSK"
-qtn_msk_open.parents "control_pane"
--->
-<!ENTITY qtn_msk_open  "Open">
-
-<!--
-qtn_ai_cale_no_event_today.attributes
-qtn_ai_cale_no_event_today.layout "ai2_gene_pane_t1"
-qtn_ai_cale_no_event_today.release "3.2"
-qtn_ai_cale_no_event_today.description "String for no more calendar events for today"
-qtn_ai_cale_no_event_today.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_ai_cale_no_event_today  "No calendar events for today">
-
-<!--
-qtn_ai_cale_no_more_ev_td.attributes
-qtn_ai_cale_no_more_ev_td.layout "ai2_gene_pane_t1"
-qtn_ai_cale_no_more_ev_td.release "3.2"
-qtn_ai_cale_no_more_ev_td.description "String for no more events for today"
-qtn_ai_cale_no_more_ev_td.parents "ai2_gene_pane"
--->
-<!ENTITY qtn_ai_cale_no_more_ev_td  "No more events for Today">
-
-<!-- End of File-->
\ No newline at end of file
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle.xml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1386 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xmluiml SYSTEM "ClassicIdle.dtd">
-<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
-
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-
-  <!--Application events -->
-  <actions>
-    <action>
-      <trigger name="startup"/>
-      <trigger name="uidefinitionmodificationend"/>
-      <event name="READY"/>
-    </action>
-    <action>
-      <trigger name="shutdown"/>
-      <event name="DOWN"/>
-    </action>
-    <action>
-      <trigger name="uidefinitionmodificationstart"/>
-      <event name="NEW_UI"/>
-    </action>
-    <action>
-      <trigger name="screendevicechange"/>
-      <event name="LAYOUT"/>
-    </action>
-  </actions>
-
-  <!-- UI resources for Shortcut plugin -->
-  <desc id="Shortcut/EmptyCaption">&shortcut_EmptyCaption;</desc>
-  <desc id="Shortcut/BackCaption">&text_softkey_back;</desc>
-  <desc id="Shortcut/NewMessageCaption">&qtn_set_idle_skey_new_msg;</desc>
-  <desc id="Shortcut/NewEmailCaption">&qtn_set_idle_skeys_email_editor;</desc>
-  <desc id="Shortcut/NewSyncMLMailCaption">&qtn_apps_syncml_mail_gs;</desc>
-  <desc id="Shortcut/NewPostcardCaption">&qtn_apps_mmspostcard_gs;</desc>
-  <desc id="Shortcut/NewAudioMsgCaption">&qtn_apps_audio_msg_gs;</desc>
-  <desc id="Shortcut/SelectMsgTypeCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-  <desc id="Shortcut/ChangeThemeCaption">&qtn_apps_idle_skin_gs;</desc>
-  <desc id="Shortcut/NewMessageShortCaption">&qtn_idle_skey_new_msg;</desc>
-  <desc id="Shortcut/NewEmailShortCaption">&qtn_apps_email_skey;</desc>
-  <desc id="Shortcut/NewSyncMLMailShortCaption">&qtn_apps_syncml_mail_skey;</desc>
-  <desc id="Shortcut/NewPostcardShortCaption">&qtn_apps_mmspostcard_skey;</desc>
-  <desc id="Shortcut/NewAudioMsgShortCaption">&qtn_apps_audio_msg_skey;</desc>
-  <desc id="Shortcut/SelectMsgTypeShortCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-  <desc id="Shortcut/ChangeThemeShortCaption">&qtn_apps_idle_skin_skey;</desc>
-
-  <!-- UI resources for MP plugin -->
-  <desc id="MusicPlayer/PauseIcon" path="SKIN(270501603 5182)"/>
-  <desc id="MusicPlayer/PlayIcon" path="SKIN(270501603 5184)"/>
-
-  <desc id="MusicPlayer/Vol0">0</desc>
-  <desc id="MusicPlayer/Vol1">1</desc>
-  <desc id="MusicPlayer/Vol2">2</desc>
-  <desc id="MusicPlayer/Vol3">3</desc>
-  <desc id="MusicPlayer/Vol4">4</desc>
-  <desc id="MusicPlayer/Vol5">5</desc>
-  <desc id="MusicPlayer/Vol6">6</desc>
-  <desc id="MusicPlayer/Vol7">7</desc>
-  <desc id="MusicPlayer/Vol8">8</desc>
-  <desc id="MusicPlayer/Vol9">9</desc>
-  <desc id="MusicPlayer/Vol10">10</desc>
-	
-  <!-- UI resources for Visual/Internet radio plugin -->
-  <desc id="VisualRadio/Vol0">0</desc>
-  <desc id="VisualRadio/Vol1">1</desc>
-  <desc id="VisualRadio/Vol2">2</desc>
-  <desc id="VisualRadio/Vol3">3</desc>
-  <desc id="VisualRadio/Vol4">4</desc>
-  <desc id="VisualRadio/Vol5">5</desc>
-  <desc id="VisualRadio/Vol6">6</desc>
-  <desc id="VisualRadio/Vol7">7</desc>
-  <desc id="VisualRadio/Vol8">8</desc>
-  <desc id="VisualRadio/Vol9">9</desc>
-  <desc id="VisualRadio/Vol10">10</desc>
-  <desc id="VisualRadio/VRPlaying" path="vrclassicidle.mif#0"/>
-  <desc id="VisualRadio/VRInactive" path="vrclassicidle.mif#0"/> <!-- Same icon -->
-
-  <desc id="InetRadio/Vol0">0</desc>
-  <desc id="InetRadio/Vol1">1</desc>
-  <desc id="InetRadio/Vol2">2</desc>
-  <desc id="InetRadio/Vol3">3</desc>
-  <desc id="InetRadio/Vol4">4</desc>
-  <desc id="InetRadio/Vol5">5</desc>
-  <desc id="InetRadio/Vol6">6</desc>
-  <desc id="InetRadio/Vol7">7</desc>
-  <desc id="InetRadio/Vol8">8</desc>
-  <desc id="InetRadio/Vol9">9</desc>
-  <desc id="InetRadio/Vol10">10</desc>
-  <desc id="InetRadio/IRPlaying" path="irclassicidle.mif#0"/>
-  <desc id="InetRadio/IRStopped" path="irclassicidle.mif#2"/>
-
-  <!-- UI resources for Organizer -->
-  <desc id="Organizer/NoEventsForToday">&qtn_ai_cale_no_event_today;</desc>
-  <desc id="Organizer/NoMoreEventsForToday">&qtn_ai_cale_no_more_ev_td;</desc>
-  <desc id="Organizer/IconAnniv" path="SKIN(268458241 2)"/>
-  <desc id="Organizer/IconAppt" path="SKIN(268458241 4)"/>
-  <desc id="Organizer/IconMemo" path="SKIN(268458241 6)"/>
-  <desc id="Organizer/IconTodo" path="SKIN(270501603 5126)"/>
-  <desc id="Organizer/IconMeetAccepted" path="SKIN(270501603 5508)"/>
-  <desc id="Organizer/IconMeetNotAnswered" path="SKIN(270501603 5511)"/>
-  <desc id="Organizer/IconMeetTentative" path="SKIN(270501603 5514)"/>
-  
-  <!-- Views -->
-  <views>
-
-    <!--################################
-        ####         AI plug-ins    ####
-        ################################-->
-    <property class="ContentSource" name="Shortcut" value="0x102750FA" load_ordinal="1"/>
-    <property class="ContentSource" name="Organizer" value="0x102750FE" load_ordinal="2"/>
-    <property class="ContentSource" name="MusicPlayer" value="0x10207B73" load_ordinal="3"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-    <property class="ContentSource" name="SAT" value="0x102078EB" load_ordinal="5"/>
-    <property class="ContentSource" name="VisualRadio" value="0x10208A89" load_ordinal="6"/>
-    <property class="ContentSource" name="InetRadio" value="0x2000B4A7" load_ordinal="7"/>
-
-    <!--###################################
-        ### Plug-in specific settings   ###
-        ###################################-->
-
-    <!--################################
-        ## Shortcut plug-in settings  ##
-        ################################-->
-
-    <!-- Always visible shortcuts -->
-    <!-- NOTE: these indexes start from 1 -->
-    <!-- Shortcut #1, Messaging -->
-    <property class="Settings/Shortcut" name="0x00000001" value="localapp:0x100058C5"/>
-    <!-- Shortcut #2, Phonebook -->
-    <property class="Settings/Shortcut" name="0x00000002" value="localapp:0x101F4CCE"/>
-    <!-- Shortcut #3, Clock -->
-    <property class="Settings/Shortcut" name="0x00000003" value="localapp:0x10005903"/>
-    <!-- Shortcut #4, Media Gallery 2 -->
-    <property class="Settings/Shortcut" name="0x00000004" value="localapp:0x101F8599"/>
-    <!-- Shortcut #5, Browser -->
-    <property class="Settings/Shortcut" name="0x00000005" value="localapp:0x10008D39"/>
-    <!-- Shortcut #6, Change theme -->
-    <property class="Settings/Shortcut" name="0x00000006" value="localapp:0x10005A32?view=0x102750A7"/>
-
-    <!-- Optionally visible shortcuts -->
-    <!-- Soft key #1, Applications -->
-    <property class="Settings/Shortcut" name="0x01000100" value="localapp:0x101F4CD2"/>
-    <!-- Soft key #2, Contacts -->
-    <property class="Settings/Shortcut" name="0x01000101" value="localapp:0x101F4CCE"/>
-
-
-    <!-- #################################
-         ## Organizer plug-in settings  ##
-         ################################# -->
-
-    <!-- Item count and size settings -->
-    <!-- Total line count -->
-    <property class="Settings/Organizer" name="0x01" value="8"/>
-
-    <!-- Timed item line count -->
-    <property class="Settings/Organizer" name="0x02" value="2"/>
-
-    <!-- Non Timed item line count -->
-    <property class="Settings/Organizer" name="0x03" value="1"/>
-
-    <!-- Line count reserved for non timed items -->
-    <property class="Settings/Organizer" name="0x04" value="0"/>
-
-    <!-- Publish end time for upcoming timed items -->
-    <property class="Settings/Organizer" name="0x05" value="1"/>
-
-    <!-- Use alternate publishing for upcoming and ongoing items -->
-    <property class="Settings/Organizer" name="0x06" value="1"/>
-
-    <!-- Open event to viewer 0 / editor 1 -->
-    <property class="Settings/Organizer" name="0x07" value="0"/>
-
-    <!-- Main view -->
-
-    <view id="ActiveIdleView">
-
-      <!-- move focus to 1st SC if END key is pressed -->
-      <actions>
-        <action id="KeyEnd">
-          <trigger name="keyevent">
-            <property name="scancode" value="197"/><!-- End key -->
-            <property name="eventtype" value="1"/>
-          </trigger>
-        <!-- switch the tooltip temporary OFF because we do not want to see it when ENDKEY -->
-        <event name ="system/set">
-          <property name="name" value="display"/>
-          <property name="value" value="none"/>
-          <property name="type" value="string"/>
-          <property name="id" value="shortcutTooltip1"/>
-        </event>          
-          <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        <!-- ENDKEY is handled we can turn the tooltip back ON. We could do this also in SC1 and with loseFocus event, but that is very slow and  overloading -->
-        <event name ="system/set">
-          <property name="name" value="display"/>
-          <property name="value" value="block"/>
-          <property name="type" value="string"/>
-          <property name="id" value="shortcutTooltip1"/>
-        </event>
-        </action>
-<!--
-        <action id="FocusToIdle">
-          <trigger name="gainfocus">
-            </trigger>
-          <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        </action>
--->
-
-
-<![CDATA[       <action><!-- This functionality is not yet required so it is left out in reference themes in rel. 3.2 -->
-          <trigger name="keyevent">
-            <property name="scancode" value="19"/><!-- Edit key -->
-          </trigger>
-          <event name="Shortcut/LaunchByValue(localapp:0x10005907)"/><!-- Notepad -->
-        </action>]]>
-      </actions>
-
-    <!--#######################################################################
-        #####      MainBox. Everything but the NT is inside this box      #####
-        #######################################################################-->
-    <box id="mainBox" focusable="false">
-    <!--#####################################
-        #####      Shortcut plugin      #####
-        #####################################-->
-      <box id="shortcutPluginContainer" class="pluginContainerBox" focusable="false">
-<!--
-        <actions>
-          <action>
-            <trigger name="gainfocus"/>
-              <event name="system/setfocus">
-                <property name="id" value="shortcutButton1"/>
-              </event>
-          </action>
-        </actions>
--->
-        <!-- Shortcut items -->
-
-        <!-- #1 -->
-        <button id="shortcutButton1" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000001)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-              <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon1" class="shortcutIcon" focusable="false">
-            <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000001"/>
-          </image>
-          <tooltip id="shortcutTooltip1" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText1" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000001"/>
-            </text>
-          </tooltip>
-        </button>
-
-        <!-- #2 -->
-        <button id="shortcutButton2" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000002)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-                <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon2" class="shortcutIcon" focusable="false">
-            <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000002"/>
-          </image>
-          <tooltip id="Shortcut_shortcutTooltip2" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText2" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000002"/>
-            </text>
-          </tooltip>
-        </button>
-
-        <!-- #3 -->
-        <button id="shortcutButton3" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000003)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-              <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon3" class="shortcutIcon" focusable="false">
-            <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000003"/>
-          </image>
-          <tooltip id="shortcutTooltip3" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText3" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000003"/>
-            </text>
-          </tooltip>
-        </button>
-
-        <!-- #4 -->
-        <button id="shortcutButton4" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000004)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-              <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon4" class="shortcutIcon" focusable="false">
-            <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000004"/>
-          </image>
-          <tooltip id="Shortcut_shortcutTooltip4" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText4" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000004"/>
-            </text>
-          </tooltip>
-        </button>
-
-        <!-- #5 -->
-        <button id="shortcutButton5" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000005)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-              <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon5" class="shortcutIcon" focusable="false">
-              <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000005"/>
-          </image>
-          <tooltip id="shortcutTooltip5" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText5" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000005"/>
-            </text>
-          </tooltip>
-        </button>
-
-        <!-- #6 -->
-        <button id="shortcutButton6" class="shortcutButton" focusable="true">
-          <actions>
-            <action>
-              <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x00000006)"/>
-            </action>
-            <action>
-            <trigger name="up"/><!-- joystick up -->
-              <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-                <property name="id" value="calendarPluginContainer"/>
-              </event>
-            </action>
-            <action>
-              <trigger name="down"/><!-- joystick down -->
-              <event name="system/setfocus">
-                <property name="id" value="playerPlugin"/>
-                <property name="id" value="radioPlugin"/>
-                <property name="id" value="calendarPluginContainer"/>
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              </event>
-            </action>
-          </actions>
-          <image id="Shortcut_shortcutIcon6" class="shortcutIcon" focusable="false">
-              <property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000006"/>
-          </image>
-          <tooltip id="shortcutTooltip6" class="shortcutTooltip" focusable="false">
-            <text id="Shortcut_shortcutTooltipText6" class="shortcutTooltipText" focusable="false">
-              <property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000006"/>
-            </text>
-          </tooltip>
-        </button>
-      </box>
-      
-    <!--#######################################
-        #####          SAT plugin         #####
-        #######################################-->
-
-      <box id="SATPluginContainer" class="pluginContainerBox" focusable="false">
-
-<!--      
-      <actions>
-          <action>
-            <trigger name="stylus"/>
-            <trigger name="activate"/>
-            <event name="SAT/LaunchSatapp"/>
-          </action>
-
-          <action>
-            <trigger name="losevisualisation"/>
-              <event name="system/setfocus">
-              <property name="id" value="shortcutButton1"/>
-              </event>
-          </action>
-          
-          <action>
-            <trigger name="gainfocus"/>
-            <event name ="system/set">
-              <property name="id" value="MSK"/>
-              <property name="name" value="label"/>
-              <property name="value" value=""/>
-              <property name="type" value="attribute"/>
-            </event>
-          </action>
-
-          <action>
-            <trigger name="losefocus"/>
-            <event name ="system/set">
-              <property name="id" value="MSK"/>
-              <property name="name" value="label"/>
-              <property name="value" value="&qtn_msk_open;"/>
-              <property name="type" value="attribute"/>
-            </event>
-          </action>
-
-          <action>
-          <trigger name="left"/>
-            <event name="system/setfocus">
-            <property name="id" value="calendarPluginContainer"/>
-            </event>
-          </action>
-
-          <action>
-            <trigger name="right"/>
-            <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-            </event>
-          </action>
-
-      </actions>
--->
-      
-        <text id="SatIdleModeText" class="satText" focusable="false">
-          <property class="SAT/SatIdleModeText"/>
-          <property class="policy/emptyContent" name="SATPluginContainer" value="display: none;"/>
-          <property class="policy/emptyContent" name="mpVolume" value="top: 4u;"/> <!-- we are not active reset MP pop-up to it's original location -->
-          <property class="policy/emptyContent" name="radioVolume" value="top: 4u;"/> <!-- we are not active reset radio pop-up to it's original location -->
-          <property class="policy/Content" name="SATPluginContainer" value="display: block;"/>
-          <property class="policy/Content" name="SatIdleModeIcon" value="display: block;"/>
-          <property class="policy/Content" name="mpVolume" value="top: 9u;"/> <!-- in case MP is active we need to adjust its pop-up location from here -->
-          <property class="policy/Content" name="radioVolume" value="top: 9u;"/> <!-- in case radio is active we need to adjust its pop-up location from here -->
-        </text>
-      <image id="SatIdleModeIcon" class="satIcon" focusable="false">
-          <property class="SAT/SatIdleModeIcon"/>
-<!--          <property class="policy/Content" name="SatIdleModeText" value="margin-left: 5.25u;"/>
-          <property class="policy/emptyContent" name="SatIdleModeText" value="margin-left: 1.0u;"/>-->
-          <property class="policy/Content" name="SatIdleModeIcon" value="width: 4.0u;"/>
-          <property class="policy/Content" name="SatIdleModeIcon" value="height: 4.0u;"/>
-          <property class="policy/emptyContent" name="SatIdleModeIcon" value="width: 0u;"/>
-          <property class="policy/emptyContent" name="SatIdleModeIcon" value="height: 0u;"/>
-        </image>
-    </box> <!-- SAT plugin -->
-
-    <!--########################################
-        #####         Player plugin         ####
-        ########################################-->
-    <box id="playerPlugin" class="pluginContainerBox" focusable="true">
-      <actions>
-      
-        <action>
-          <!-- if focused and box is hidden move focus to SC1 -->
-          <trigger name="losevisualisation"/>
-          <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        </action>
-
-      <action>
-        <trigger name="gainfocus" />
-          <event name="system/set">
-                <property name="id" value="playerTitleText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 9)"/>
-                <property name="type" value="string"/>
-         </event>         
-        <event name="system/set">
-                <property name="id" value="playerDurationText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 9)"/>
-                <property name="type" value="string"/>
-         </event>
-      </action>
-      
-      <action>
-        <trigger name="losefocus" />
-           <event name="system/set">
-                <property name="id" value="playerTitleText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 19)"/>
-                <property name="type" value="string"/>
-            </event>           
-           <event name="system/set">
-                <property name="id" value="playerDurationText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 19)"/>
-                <property name="type" value="string"/>
-            </event>
-      </action>              
-
-        
-        <action>
-          <!-- when focused show the volume controll pop-up -->
-          <trigger name="gainfocus"/>
-          <event name ="system/set">
-            <property name="name" value="display"/>
-            <property name="value" value="block"/>
-            <property name="type" value="string"/>
-            <property name="id" value="mpVolume"/>
-          </event>
-        </action>
-
-        <action>
-          <!-- when focus is lost hide the volume controll pop-up -->
-          <trigger name="losefocus"/>
-          <event name="system/set">
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-            <property name="id" value="mpVolume"/>
-          </event>
-        </action>
-
-        <action>
-          <!-- when clicked activate the Music Library -->
-          <trigger name="stylus"/>
-          <trigger name="activate"/>
-          <event name="MusicPlayer/Library"/>
-        </action>
-
-        <action>
-          <!-- decrease volume -->
-          <trigger name="down"/>
-          <event name="MusicPlayer/VolDec"/>
-        </action>
-
-        <action>
-          <!-- increase volume -->
-          <trigger name="up"/>
-          <event name="MusicPlayer/VolInc"/>
-        </action>
-        
-        <!-- navigation out from the box -->
-        <action>
-          <!-- joystick up -->
-          <trigger name="left"/>
-          <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        </action>
-          
-        <action>
-          <!-- joystick down -->
-          <trigger name="right"/>
-          <event name="system/setfocus">
-            <property name="id" value="radioPlugin"/>
-            <property name="id" value="calendarPluginContainer"/> <!-- no need to add NT after calendar because calendar is static, allways visible -->
-          </event>
-        </action>
-
-      </actions>
-
-      <image id="playerStatusIcon" focusable="false">
-        <property class="MusicPlayer/Status"/>
-        <property class="policy/emptyContent" name="playerPlugin" value="display:none"/>
-        <property class="policy/Content" name="playerPlugin" value="display:block"/>
-      </image>
-
-      <text id="playerTitleText" focusable="true">
-        <property class="MusicPlayer/Title"/>
-        <property class="policy/Content" name="playerTitleText" value="display: block;"/>
-      </text>
-
-      <text id="playerDurationText" focusable="true">
-        <property class="MusicPlayer/ElapsedTime"/>
-      </text>
-    </box> <!-- playerPlugin-->
-
-    <!--######################################
-        ####       Volume Controll for music player       ####
-        ######################################-->
-    <box id="mpVolume" focusable="false">
-
-      <image id="musicPlayerVolumeDownIcon" path="SKIN(270501603 6419 9)" focusable="false"/>
-  
-      <!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-      <image id="musicPlayerSpeakerIcon" path="SKIN(270501603 4332 9)" focusable="false"/>
-      <image id="musicPlayerSpeakerMutedIcon" path="SKIN(270501603 4334 9)" focusable="false"/>
-      
-      <image id="musicPlayerVolumeUpIcon" path="SKIN(270501603 6421 9)" focusable="false"/>
-
-      <volumecontrol id="musicPlayerVolumeIcon" focusable="false">
-        <actions>
-         <action>
-           <trigger name="stylus"/>
-           <trigger name="stylus">
-             <property name="clicked" value="down"/>
-           </trigger>                  
-           <trigger name="stylus">
-             <property name="doubleclicked" value="up"/>
-           </trigger>                  
-           <event name="MusicPlayer/VolSet(slider::volume)"/>
-           <event name="system/setfocus">
-           <property name="id" value="volumeIndicator"/>
-           </event>
-         </action>
-        </actions>
-        <slider id="volslider">
-          <property class="MusicPlayer/Volume"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if (MusicPlayer/Vol0) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol0) display:none"/>
-
-          <property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if (MusicPlayer/Vol0) display:block"/>
-          <property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol0) display:none"/>
-          <property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if (MusicPlayer/Vol10) display:block"/>
-          <property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if !(MusicPlayer/Vol10) display:none"/>
-          <property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol0, MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9 ) display:block"/>
-          <property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol10) display:none"/>
-        </slider>
-       </volumecontrol>
-
-    </box> <!-- mpVolume -->
-
-	
-    <!--########################################
-        ##### Visual/Internet radio plugin  ####
-        ########################################-->
-    <box id="radioPlugin" class="pluginContainerBox" focusable="true">
-      <actions>
-      
-        <action>
-          <!-- if focused and box is hidden move focus to SC1 -->
-          <trigger name="losevisualisation"/>
-          <event name="system/setfocus">
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        </action>
-
-      <action>
-        <trigger name="gainfocus" />
-          <event name="system/set">
-                <property name="id" value="radioTitleText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 9)"/>
-                <property name="type" value="string"/>
-         </event>
-      </action>
-      
-      <action>
-        <trigger name="losefocus" />
-           <event name="system/set">
-                <property name="id" value="radioTitleText"/>
-                <property name="name" value="color"/>
-                <property name="value" value="SKIN(268458534 13056 19)"/>
-                <property name="type" value="string"/>
-            </event>
-      </action>              
-
-        
-        <action>
-          <!-- when focused show the volume controll pop-up -->
-          <trigger name="gainfocus"/>
-          <event name ="system/set">
-            <property name="name" value="display"/>
-            <property name="value" value="block"/>
-            <property name="type" value="string"/>
-            <property name="id" value="radioVolume"/>
-          </event>
-        </action>
-
-        <action>
-          <!-- when focus is lost hide the volume controll pop-up -->
-          <trigger name="losefocus"/>
-          <event name="system/set">
-            <property name="name" value="display"/>
-            <property name="value" value="none"/>
-            <property name="type" value="string"/>
-            <property name="id" value="radioVolume"/>
-          </event>
-        </action>
-
-        <action>
-          <!-- when clicked activate the radio -->
-          <trigger name="stylus"/>
-          <trigger name="activate"/>
-          <event name="VisualRadio/LaunchRadio"/>
-		  <event name="InetRadio/LaunchRadio"/>
-          <!-- Always let Visual Radio plug-in handle the launch event. It will start Radio Launcher. -->
-        </action>
-
-        <action>
-          <!-- decrease volume -->
-          <trigger name="down"/>
-          <event name="VisualRadio/VolDec"/>
-          <event name="InetRadio/VolDec"/>
-        </action>
-
-        <action>
-          <!-- increase volume -->
-          <trigger name="up"/>
-          <event name="VisualRadio/VolInc"/>
-          <event name="InetRadio/VolInc"/>
-        </action>
-        
-        <!-- navigation out from the box -->
-        <action>
-          <!-- joystick up -->
-          <trigger name="left"/>
-          <event name="system/setfocus">
-            <property name="id" value="playerPlugin"/>
-            <property name="id" value="shortcutButton1"/>
-          </event>
-        </action>
-          
-        <action>
-          <!-- joystick down -->
-          <trigger name="right"/>
-          <event name="system/setfocus">
-            <property name="id" value="calendarPluginContainer"/> <!-- no need to add NT after calendar because calendar is static, allways visible -->
-          </event>
-        </action>
-
-      </actions>
-
-      <image id="radioStatusIcon" focusable="false">
-        <property class="VisualRadio/AppIcon" name="priority" value="0"/>
-        <property class="InetRadio/AppIcon" name="priority" value="1"/>
-        <property class="policy/emptyContent" name="radioPlugin" value="display:none"/>
-        <property class="policy/emptyContent" name="radioVolume" value="visibility: visible"/>
-        <property class="policy/Content" name="radioPlugin" value="display:block"/>
-        <property class="policy/Resource" name="radioVolume" value="if (VisualRadio/VRInactive, InetRadio/IRStopped) visibility:hidden"/>
-        <property class="policy/Resource" name="radioVolume" value="if (VisualRadio/VRPlaying, InetRadio/IRPlaying) visibility: visible"/>
-      </image>
-
-      <text id="radioTitleText" focusable="true">
-        <property class="VisualRadio/OneLineInfo" name="priority" value="0"/>
-        <property class="InetRadio/OneLineInfo" name="priority" value="1"/>
-        <property class="policy/Content" name="radioTitleText" value="display: block;"/>
-      </text>
-
-    </box> <!-- radioPlugin-->
-
-    <!--######################################
-        #### Volume Control for Visual/Internet Radio ####
-        ######################################-->
-    <box id="radioVolume" focusable="false">
-
-      <image id="radioVolumeDownIcon" path="SKIN(270501603 6419 9)" focusable="false"/>
-  
-      <!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-      <image id="radioSpeakerIcon" path="SKIN(270501603 4332 9)" focusable="false"/>
-      <image id="radioSpeakerMutedIcon" path="SKIN(270501603 4334 9)" focusable="false"/>
-      
-      <image id="radioVolumeUpIcon" path="SKIN(270501603 6421 9)" focusable="false"/>
-
-      <volumecontrol id="radioVolumeIcon" focusable="false">
-        <actions>
-         <action>
-           <trigger name="stylus"/>
-           <trigger name="stylus">
-             <property name="clicked" value="down"/>
-           </trigger>                  
-           <trigger name="stylus">
-             <property name="doubleclicked" value="up"/>
-           </trigger>                  
-           <event name="VisualRadio/VolSet(radioSlider::volume)"/>
-           <event name="InetRadio/VolSet(radioSlider::volume)"/>
-           <event name="system/setfocus">
-           <property name="id" value="volumeIndicator"/>
-           </event>
-         </action>
-        </actions>
-        <slider id="radioSlider">
-          <property class="VisualRadio/Volume" name="priority" value="0"/>
-          <property class="InetRadio/Volume" name="priority" value="1"/>
-          <property class="policy/Resource" name="radioSpeakerMutedIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-          <property class="policy/Resource" name="radioSpeakerMutedIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-          <property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-
-          <property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-          <property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-          <property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-          <property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-          <property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:block"/>
-          <property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if !(VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-          <property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol0, VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, InetRadio/Vol0, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9 ) display:block"/>
-          <property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-        </slider>
-       </volumecontrol>
-
-    </box> <!-- radioVolume -->
-
-
-
-
-    <!--######################################
-        ####       Organizer plugin       ####
-        ######################################-->
-      <box id="calendarPluginContainer" class="pluginContainerBox" focusable="true">
-        <actions>
-          <action>
-            <!-- activate organizer -->
-            <trigger name="stylus">
-                <property name="eventtype" value="up" />
-              </trigger>            
-            <trigger name="activate"/>
-            <event name="Organizer/ItemSelected(0)"/>
-          </action>
-
-        <!-- for setting the correct colour group for texts -->
-           <action>
-          <trigger name="gainfocus" />
-           <event name="system/set">
-            <property name="id" value="calendarEntryText1_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-        </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText1_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText2_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText2_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText3_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText3_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText4_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText4_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText5_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText5_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText6_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText6_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText7_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText7_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText8_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>
-        <event name="system/set">
-            <property name="id" value="calendarEntryText8_2"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 9)"/>
-            <property name="type" value="string"/>
-          </event>  
-                    
-        </action>
-        
-        <action>
-          <trigger name="losefocus" />
-     <event name="system/set">
-            <property name="id" value="calendarEntryText1_1"/>
-            <property name="name" value="color"/>
-            <property name="value" value="SKIN(268458534 13056 19)"/>
-            <property name="type" value="string"/>
-      </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText1_2"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText2_1"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText2_2"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText3_1"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText3_2"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText4_1"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText4_2"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText5_1"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-          <property name="id" value="calendarEntryText5_2"/>
-          <property name="name" value="color"/>
-          <property name="value" value="SKIN(268458534 13056 19)"/>
-          <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText6_1"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText6_2"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText7_1"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText7_2"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText8_1"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-    <event name="system/set">
-         <property name="id" value="calendarEntryText8_2"/>
-         <property name="name" value="color"/>
-         <property name="value" value="SKIN(268458534 13056 19)"/>
-         <property name="type" value="string"/>
-    </event>
-                      
-        </action>      
-
-          <action>
-            <!-- joystick up -->
-            <trigger name="left"/>
-            <event name="system/setfocus">
-              <property name="id" value="radioPlugin"/>
-              <property name="id" value="playerPlugin"/>			  
-              <property name="id" value="shortcutButton1"/>
-            </event>
-          </action>
-
-          <action>
-            <!-- joystick down -->
-            <trigger name="right"/>
-            <event name="system/setfocus">
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-              <property name="id" value="shortcutButton1"/>
-            </event>
-          </action>
-        </actions>
-
-        <!-- #1 -->
-        <button id="calendarEntryBox1" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon1" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x01"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon1" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon1" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText1_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x01"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarPluginContainer" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox1" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox1" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarPluginContainer" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox1" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox1" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText1_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x01"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText1_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox1" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText1_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox1" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #2 -->
-        <button id="calendarEntryBox2" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon2" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x02"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon2" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon2" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText2_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x02"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox2" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox2" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText2_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x02"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText2_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox2" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText2_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox2" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #3 -->
-        <button id="calendarEntryBox3" class="calendarEntryBox" focusable="false">
-          <property name="calendarEntryBox3" value="background-color: red;"/>
-          <image id="calendarEntryIcon3" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x03"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon3" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon3" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText3_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x03"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox3" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox3" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox3" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox3" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText3_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x03"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText3_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox3" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText3_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox3" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #4 -->
-        <button id="calendarEntryBox4" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon4" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x04"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon4" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon4" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText4_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x04"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox4" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox4" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox4" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox4" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText4_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x04"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText4_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox4" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText4_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox4" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #5 -->
-        <button id="calendarEntryBox5" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon5" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x05"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon5" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon5" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText5_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x05"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox5" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox5" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox5" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox5" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText5_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x05"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText5_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox5" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText5_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox5" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #6 -->
-        <button id="calendarEntryBox6" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon6" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x06"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon6" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon6" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText6_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x06"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox6" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox6" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox6" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox6" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText6_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x06"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText6_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox6" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText6_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox6" value="height: 9.0u;"/>
-          </text>
-        </button>
-        
-        <!-- #7 -->
-        <button id="calendarEntryBox7" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon7" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x07"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon7" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon7" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText7_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x07"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox7" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox7" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox7" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox7" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText7_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x07"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText7_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox7" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText7_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox7" value="height: 9.0u;"/>
-          </text>
-        </button>
-
-        <!-- #8 -->
-        <button id="calendarEntryBox8" class="calendarEntryBox" focusable="false">
-          <image id="calendarEntryIcon8" class="calendarEntryIcon" focusable="false">
-            <property class="Organizer/EventIcon" name="ordinal" value="0x08"/>
-            <!-- If there is no image, the left side of the first text line will take the space of the image. -->
-            <property class="policy/emptyContent" name="calendarEntryIcon8" value="display: none;"/>
-            <!-- If image exists, left side of the first text line will be on the right side of the image. -->
-            <property class="policy/Content" name="calendarEntryIcon8" value="display: block;"/>
-          </image>
-          <text id="calendarEntryText8_1" class="calendarEntryText1" focusable="false">
-            <property class="Organizer/Event1stLine" name="ordinal" value="0x08"/>
-            <!-- If there is no text, the entry box is not shown at all -->
-            <property class="policy/emptyContent" name="calendarEntryBox8" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox8" value="nav-index: none;"/>
-            <property class="policy/Content" name="calendarEntryBox8" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox8" value="nav-index: auto;"/>
-          </text>
-          <text id="calendarEntryText8_2" class="calendarEntryText2" focusable="false">
-            <property class="Organizer/Event2ndLine" name="ordinal" value="0x08"/>
-            <!-- If there is no second text line, decrease the height of the box -->
-            <property class="policy/emptyContent" name="calendarEntryText8_2" value="display: none;"/>
-            <property class="policy/emptyContent" name="calendarEntryBox8" value="height: 4.5u;"/>
-            <property class="policy/Content" name="calendarEntryText8_2" value="display: block;"/>
-            <property class="policy/Content" name="calendarEntryBox8" value="height: 9.0u;"/>
-          </text>
-        </button>
-      </box>
-    </box> <!-- end MainBox -->
-
-<!-- Block with flag '__NEWSTICKER' skipped. -->
-
-      <!--#################################################
-          ####     Menubar with soft key shortcuts     ####
-          #################################################-->
-      <menubar>
-        <menuitem id="Shortcut_SK1" label="">
-          <!-- ordinal value is the same as in the default settings -->
-          <property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000100"/>
-          <actions>
-            <action>
-              <trigger name="stylus"/>
-              <trigger name="activate"/>
-              <event name="Shortcut/LaunchByIndex(0x01000100)"/>
-            </action>
-          </actions>
-        </menuitem>
-        <menuitem id="Shortcut_SK2" label="">
-          <property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000101"/>
-          <actions>
-            <action>
-              <trigger name="stylus"/>
-              <!-- if using both activate and hold for same SK active trigger need to be specified 
-                  like this (2 = keyup) otherwise hold will not work -->
-              <trigger name="activate">
-                <property name="eventtype" value="2"/>
-              </trigger>
-              <event name="Shortcut/LaunchByIndex(0x01000101)"/>
-            </action>
-            <action>
-              <trigger name="hold"/>
-              <event name="Shortcut/LaunchByValue(localapp:0x10281867)"/>
-            </action>
-          </actions>
-        </menuitem>
-        <menuitem id="MSK" label="&qtn_msk_open;"/>
-      </menubar>
-    </view>
-  </views>
-
-</xmluiml>
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_dat.dat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<data>
-	<AppUid>102750F0</AppUid>
-	<Provideruid>101FB657</Provideruid>
-	<ThemeUid>1028186B</ThemeUid>
-	<ThemeStatus>ThemeStatusLicenceeRestorable</ThemeStatus>
-	<ThemeFullName>Full Page</ThemeFullName>
-	<ThemeShortName>CI</ThemeShortName>
-	<ThemeVersion>1.0</ThemeVersion>
-	<FileXML>ClassicIdle.xml</FileXML>
-	<FileCSS>ClassicIdle.css</FileCSS>
-	
-	<FileResource CacheType="CacheNone">vrclassicidle.mif</FileResource>
-	<FileResource CacheType="CacheNone">irclassicidle.mif</FileResource>
-
-	<LanguageSpecific Language="1">
-		<FileDTD>ClassicIdle.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName><!-- Note: the name is not an entity reference. So no "&" or" ;" -->
-	</LanguageSpecific>
-</data>
\ No newline at end of file
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_loc.dat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-<?xml version="1.0"?>
-<data>
-	<AppUid>102750F0</AppUid>
-	<Provideruid>101FB657</Provideruid>
-	<ThemeUid>1028186B</ThemeUid>
-	<ThemeStatus>ThemeStatusLicenceeRestorable</ThemeStatus>
-	<ThemeFullName>Full Page</ThemeFullName>
-	<ThemeShortName>CI</ThemeShortName>
-	<ThemeVersion>1.0</ThemeVersion>
-	<FileXML>ClassicIdle.xml</FileXML>
-	<FileCSS>ClassicIdle.css</FileCSS>
-	
-	<FileResource CacheType="CacheNone">vrclassicidle.mif</FileResource>
-	<FileResource CacheType="CacheNone">irclassicidle.mif</FileResource>
-
-	<LanguageSpecific Language="01">
-		<FileDTD>ClassicIdle_01.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="02">
-		<FileDTD>ClassicIdle_02.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="03">
-		<FileDTD>ClassicIdle_03.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="04">
-		<FileDTD>ClassicIdle_04.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="05">
-		<FileDTD>ClassicIdle_05.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="06">
-		<FileDTD>ClassicIdle_06.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="07">
-		<FileDTD>ClassicIdle_07.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="08">
-		<FileDTD>ClassicIdle_08.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="09">
-		<FileDTD>ClassicIdle_09.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="10">
-		<FileDTD>ClassicIdle_10.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="13">
-		<FileDTD>ClassicIdle_13.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="14">
-		<FileDTD>ClassicIdle_14.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="15">
-		<FileDTD>ClassicIdle_15.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="16">
-		<FileDTD>ClassicIdle_16.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="17">
-		<FileDTD>ClassicIdle_17.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="18">
-		<FileDTD>ClassicIdle_18.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="25">
-		<FileDTD>ClassicIdle_25.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="26">
-		<FileDTD>ClassicIdle_26.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="27">
-		<FileDTD>ClassicIdle_27.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="28">
-		<FileDTD>ClassicIdle_28.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="29">
-		<FileDTD>ClassicIdle_29.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="30">
-		<FileDTD>ClassicIdle_30.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="31">
-		<FileDTD>ClassicIdle_31.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="32">
-		<FileDTD>ClassicIdle_32.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="33">
-		<FileDTD>ClassicIdle_33.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="37">
-		<FileDTD>ClassicIdle_37.dtd</FileDTD>
-		<FileCSS>ClassicIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="39">
-		<FileDTD>ClassicIdle_39.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="42">
-		<FileDTD>ClassicIdle_42.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="44">
-		<FileDTD>ClassicIdle_44.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="45">
-		<FileDTD>ClassicIdle_45.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="49">
-		<FileDTD>ClassicIdle_49.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="50">
-		<FileDTD>ClassicIdle_50.dtd</FileDTD>
-		<FileCSS>ClassicIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="51">
-		<FileDTD>ClassicIdle_51.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="54">
-		<FileDTD>ClassicIdle_54.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="57">
-		<FileDTD>ClassicIdle_57.dtd</FileDTD>
-		<FileCSS>ClassicIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="58">
-		<FileDTD>ClassicIdle_58.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="59">
-		<FileDTD>ClassicIdle_59.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="67">
-		<FileDTD>ClassicIdle_67.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="68">
-		<FileDTD>ClassicIdle_68.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="70">
-		<FileDTD>ClassicIdle_70.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="76">
-		<FileDTD>ClassicIdle_76.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="78">
-		<FileDTD>ClassicIdle_78.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="79">
-		<FileDTD>ClassicIdle_79.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="83">
-		<FileDTD>ClassicIdle_83.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="93">
-		<FileDTD>ClassicIdle_93.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="94">
-		<FileDTD>ClassicIdle_94.dtd</FileDTD>
-		<FileCSS>ClassicIdle_reversed.css</FileCSS>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="96">
-		<FileDTD>ClassicIdle_96.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="157">
-		<FileDTD>ClassicIdle_157.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="158">
-		<FileDTD>ClassicIdle_158.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="159">
-		<FileDTD>ClassicIdle_159.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="160">
-		<FileDTD>ClassicIdle_160.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="161">
-		<FileDTD>ClassicIdle_161.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="326">
-		<FileDTD>ClassicIdle_326.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="401">
-		<FileDTD>ClassicIdle_401.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-	<LanguageSpecific Language="402">
-		<FileDTD>ClassicIdle_402.dtd</FileDTD>
-		<ThemeFullName localization="Localizable">qtn_ai_skin_full_page</ThemeFullName>
-	</LanguageSpecific>
-</data>
\ No newline at end of file
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_reversed.css	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,616 +0,0 @@
-
-/* What's this? */
-* {
-	nav-index: none;
-}
-
-/*******
-	VIEW
-********/
-
-view {
-	display: block; 
-	position: static; 	
-	width: 100%;
-	height: 100%;
-	direction: ltr;
-	block-progression: tb;
-	background-image: wallpaper;
-}
-
-menuitem#Shortcut_SK2{
-	_s60-longtap: true;
-}
-
-/**************************************
-	GENERAL DEFINITIONS FOR PLUGIN BOXES
-***************************************/
-
-box.pluginContainerBox { /* main_idle_act_pane */
-	position: static; 
-	border-top-width: 0.25u;
-	border-top-style: dotted;    /* linestyle of the box */
-	border-top-color: black;
-	width: auto;
-	nav-index: none;
-}
-
-/* everything else but the NT is inside this box */
-box#mainBox{
-	position: static;
-	width: auto;
-/* Block with flag '__NEWSTICKER' skipped. */
-	height: 100%;
-	nav-index: none;
-}
-
-
-/* settings for the pluginContainerBox during focus */
-box.pluginContainerBox:focus {
-  /*background-color: "SKIN(268458534 8448)"; *//* see S60_3_1_Reference_Icons_1.3.doc */
-	background-color: "SKIN(268458534 5120 9)";
- }
-
-
-/************************
-	SHORTCUT PLUGIN AREA 
-*************************/
-
-/* box where the actual plugin information is shown */
-box#shortcutPluginContainer { /* ai_links_pane*/
-	margin-top: 0.5u;
-	height: 7.5u;
-	padding-left:  2u;
-	padding-right: 2u;
-	padding-top: /*0.7%;*/ 0.5u;
-/*padding-bottom: 0.25u;*/
-	
-	/* Reverse the shortcuts in the reverse layout */
-	block-progression: rl;
-	direction: rtl;
-}
-
-
-button.shortcutButton { /* cell_ai_link_pane */
-	width: auto;
-	height: 7u;
-	nav-index: auto;
-}
-
-
-button.shortcutButton:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5136)";
-}
-
-/* What's this ? */
-button#shortcutButton1 {  
-	_s60-initial-focus: 100; 
-}
-
-
-image.shortcutIcon { 
-	width: 7u;
-	height: 7u;
-	margin-left: auto;
-	margin-right: auto;
-	_s60-aspect-ratio: preserve;
-}
-
-
-/*
-	Border-style ja -width täytyy olla määriteltynä vaikka käytetään skinistä tulevaa LAF:ia (bg-image:auto;). 
-	Skini koostuu kahdesta osasta ja border-width määrittää myös skiniborderin.
-*/
-tooltip.shortcutTooltip { /* popup_ai_links_title_window */
-	width: 10u; /* any fixed lenghts works here if the owerflow is set to both tooltip and text inside it */
-/*height: 4.9u;*/
-	height: 5.5u;
-	border-style: solid; 
-	border-width: 5px; 
-	_s60-start-delay: 1000000;
-	_s60-display-time: 1000000;
-	background-color:"SKIN(268458534 8480)";	/* TODO: check */
-	overflow: visible;
-}
-
-
-text.shortcutTooltipText { /* popup_ai_links_title_window_t1 */
-	position: static;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	width: 100%;
-	height: 85%;
-	text-align: center;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	overflow: visible;
-	padding-right: 1u;
-	padding-left: 1u;
-	/*padding-top: 1u;*/
-	padding-bottom: 1u;
-}
-
-
-/*********************
-	PLAYER PLUGIN AREA 
-**********************/
-
-box#playerPlugin:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#playerPlugin{
-	height:5u;
-	display: none;
-	nav-index: none;
-	block-progression: lr;
-}
-
-image#playerStatusIcon {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: 0.75u;
-	margin-right: 0.75u;
-	left: 100%;
-	right: 4u;
-	width: 3.5u;
-	height: 3.5u;
-}
-
-text#playerTitleText {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	margin-right: 5.0u;
-	margin-left: 11.0u;
-	text-align: right;
-}
-
-text#playerTitleText:passivefocus {
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-}
-
-
-text#playerDurationText {
-	display: block;
-	visibility: visible;
-	position: static;
-	width: 11u;
-	margin-left: 0.75u;
-	text-align:left;
-	height: 4u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-text#playerDurationText:passivefocus {
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-}
-
-/*********************
-	PLAYER VOLUME CONTROLL
-**********************/
-box#mpVolume {
-	display: none;
-	width: 40u;
-	height: 6u;	
-	position: absolute;
-	z-index: 2;
-	left: 5u;
-	top: 4.0u;
-	background-color:"SKIN(268458534 8480)";
-}
-
-image#musicPlayerVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerInactiveVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerSpeakerMutedIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 1.00u;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-/* 
-image#musicPlayerVolumeIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10u;
-	width: 20u;
-	height: 4u;
-	margin-top: auto;
-	margin-bottom: auto;
-}
-*/
-
-
-volumecontrol#musicPlayerVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10.0u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-slider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#musicPlayerVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#musicPlayerInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-
-/*********************
-	VISUAL/INTERNET RADIO PLUGIN AREA 
-**********************/
-
-box#radioPlugin:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#radioPlugin{
-	height:5u;
-	display: none;
-	nav-index: none;
-	block-progression: lr;
-}
-
-image#radioStatusIcon {
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: 0.75u;
-	margin-right: 0.75u;
-	left: 100%;
-	right: 4u;
-	width: 3.5u;
-	height: 3.5u;
-}
-
-text#radioTitleText {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	width: auto;
-	height: 4u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	color: "SKIN(268458534 13056 19)";
-	margin-right: 5.0u;
-	margin-left: 11.0u;
-	text-align: right;
-}
-
-text#radioTitleText:passivefocus {
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-}
-
-/*********************
-	VISUAL/INTERNETRADIO VOLUME CONTROL
-**********************/
-box#radioVolume {
-	display: none;
-	width: 40u;
-	height: 6u;	
-	position: absolute;
-	z-index: 2;
-	left: 5u;
-	top: 4.0u;
-	background-color:"SKIN(268458534 8480)";
-}
-
-image#radioVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioInactiveVolumeDownIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioSpeakerIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-image#radioSpeakerMutedIcon { 
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 1.00u;
-	left: 5.u;
-	width: 4.0u;	
-	height: 4.0u;
-}
-
-
-volumecontrol#radioVolumeIcon	{
-	display: block;
-	visibility: visible;
-	position: absolute;
-	left: 10.0u;
-	width: 20.0u;
-	height: 4.0u;
-	margin-top: auto;
-	margin-bottom: auto;
-	focusable: true;	
-	direction: ltr;
-	block-progression: lr;
-}
-
-slider#radioSlider	{
-	focusable: false;
-	value: 5;
-	minrange: 0;	
-	maxrange: 10;	
-	z-index: 0;
-}
-
-image#radioVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-image#radioInactiveVolumeUpIcon { 
-	display: none;
-	visibility: visible;
-	position: absolute;
-	margin-top: auto;
-	margin-bottom: auto;
-	left: auto;
-	right: 2.0u;
-	width: 1.0u;	
-	height: 4.0u;
-}
-
-/* Invisible icon that is used to control volume popup visibility */
-image.invisibleRadioIcon {
-	display: none;
-	visibility: visible;
-	position: absolute;
-	left: 0.25u;
-	top: 0.25u;
-	width: 4.0u;
-	height: 4.0u;
-}
-
-/******************
-	SAT PLUGIN AREA 
-*******************/
-
-
-
-box#SATPluginContainer {
-	display: none;  /*block;*/
-	nav-index: none; /* SAT is not focusable */
-	height: 5u;	
-	width: auto;
-/*	direction: rtl;
-	block-progression: rl;*/
-	block-progression: lr;
-}
-
-
-image.satIcon {
-	display: block;
-	visibility: visible;
-	position: static;
-	margin-top: 0.25u;
-	left: auto;
-	margin-right: 0.7u;
-	width: 4.0u;
-	height: 4.0u;
-}
-
-text.satText {
-	display: block;
-	visibility: visible;
-	position: static;
-	width: auto;
-	text-align: right;
-	margin-top: 0.25u;		
-	margin-right: 0.555u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;         /* TODO: check */
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-
-
-/************************
-	CALENDAR PLUGIN AREA 
-*************************/
-
-box#calendarPluginContainer:focus {
-	background-image: "SKIN(268458534 24576)";
-	background-color: "SKIN(268458534 5120 9)";
-}
-box#calendarPluginContainer {
-	display: block;
-	height: adaptive;
-	padding-bottom: 1u;
-}
-
-
-button.calendarEntryBox {
-	display: none;
-	visibility: visible;
-	height: auto;
-}
-
-
-image.calendarEntryIcon { /* ai_gene_pane_1_g1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	top: 0.5u;
-/*left: 0.7u;*/
-   left: 100%;
-   right: 4.7u;
-	width: 4u;
-	height: 4u;
-}
-
-text.calendarEntryText1 { /* ai_gene_pane_1_t1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	top: 0.0u;
-/*	left: 5.75u; */
-/*	right: 0.9u; */
-	left: 0.9u;
-	right: 2.5u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-	text-align: right;
-}
-text.calendarEntryText1:passivefocus { 
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-}
-
-text.calendarEntryText2 { /* ai_gene_pane_2_t1 */
-	display: block;
-	visibility: visible;
-	position: absolute;
-	width: auto;	
-	top: 4.25u;
-/*	left: 5.75u; */
-/*	right: 0.9u; */
-	left: 0.9u;
-	margin-right: 5.25u;
-	height: 4.25u;
-	font-family: EAknLogicalFontSecondaryFont;
-	font-size: 3.5u;
-	text-align: right;
-	/*color: auto;*/
-	color: "SKIN(268458534 13056 19)";
-}
-
-text.calendarEntryText2:passivefocus { 
-	/*color: EAknsCIQsnTextColorsCG10;*/
-	color: "SKIN(268458534 13056 9)";
-}
-
-/* priorities for calendar buttons, the lower we go, the less priority the button has --> if it does not fit on the screen it will be dropped*/
-/* please note that the priority ID must be unique for each element defined --> do not use it via class element */
-button#calendarEntryBox1{ _s60-display-priority: 21; }
-button#calendarEntryBox2{ _s60-display-priority: 22; }
-button#calendarEntryBox3{ _s60-display-priority: 23; }
-button#calendarEntryBox4{ _s60-display-priority: 24; }
-button#calendarEntryBox5{ _s60-display-priority: 25; }
-button#calendarEntryBox6{ _s60-display-priority: 26; }
-button#calendarEntryBox7{ _s60-display-priority: 27; }
-button#calendarEntryBox8{ _s60-display-priority: 28; }
-
-/* Block with flag '__NEWSTICKER' skipped. */
--- a/internetradio2.0/activeidlethemes/themes/ClassicIdle/classicidle_reversed.xml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1084 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xmluiml SYSTEM "ClassicIdle.dtd">
-<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
-
- 
-	<!--Application events -->
-	<actions>
-		<action>
-			<trigger name="startup"/>
-			<trigger name="uidefinitionmodificationend"/>
-			<event name="READY"/>
-		</action>
-		<action>
-			<trigger name="shutdown"/>
-			<event name="DOWN"/>
-		</action>
-		<action>
-			<trigger name="uidefinitionmodificationstart"/>
-			<event name="NEW_UI"/>
-		</action>
-		<action>
-			<trigger name="screendevicechange"/>
-			<event name="LAYOUT"/>
-		</action>
-	</actions>
-
-	<!-- UI resources for Shortcut plugin -->
-    <desc id="Shortcut/EmptyCaption">&shortcut_EmptyCaption;</desc>
-    <desc id="Shortcut/BackCaption">&text_softkey_back;</desc>
-    <desc id="Shortcut/NewMessageCaption">&qtn_set_idle_skey_new_msg;</desc>
-    <desc id="Shortcut/NewEmailCaption">&qtn_set_idle_skeys_email_editor;</desc>
-    <desc id="Shortcut/NewSyncMLMailCaption">&qtn_apps_syncml_mail_gs;</desc>
-    <desc id="Shortcut/NewPostcardCaption">&qtn_apps_mmspostcard_gs;</desc>
-    <desc id="Shortcut/NewAudioMsgCaption">&qtn_apps_audio_msg_gs;</desc>
-    <desc id="Shortcut/SelectMsgTypeCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-    <desc id="Shortcut/ChangeThemeCaption">&qtn_apps_idle_skin_gs;</desc>
-    <desc id="Shortcut/NewMessageShortCaption">&qtn_idle_skey_new_msg;</desc>
-    <desc id="Shortcut/NewEmailShortCaption">&qtn_apps_email_skey;</desc>
-    <desc id="Shortcut/NewSyncMLMailShortCaption">&qtn_apps_syncml_mail_skey;</desc>
-    <desc id="Shortcut/NewPostcardShortCaption">&qtn_apps_mmspostcard_skey;</desc>
-    <desc id="Shortcut/NewAudioMsgShortCaption">&qtn_apps_audio_msg_skey;</desc>
-    <desc id="Shortcut/SelectMsgTypeShortCaption">&qtn_set_idle_skey_select_msg_type;</desc>
-    <desc id="Shortcut/ChangeThemeShortCaption">&qtn_apps_idle_skin_skey;</desc>
-
-	<!-- UI resources for MP plugin -->
-	<desc id="MusicPlayer/PauseIcon" path="SKIN(270501603 5182)"/>
-	<desc id="MusicPlayer/PlayIcon" path="SKIN(270501603 5184)"/>
-
-	<desc id="MusicPlayer/Vol0" path="SKIN(270501603 6414)"/>
-	<desc id="MusicPlayer/Vol1" path="SKIN(270501603 6337)"/>
-	<desc id="MusicPlayer/Vol2" path="SKIN(270501603 6339)"/>
-	<desc id="MusicPlayer/Vol3" path="SKIN(270501603 6340)"/>
-	<desc id="MusicPlayer/Vol4" path="SKIN(270501603 6341)"/>
-	<desc id="MusicPlayer/Vol5" path="SKIN(270501603 6342)"/>
-	<desc id="MusicPlayer/Vol6" path="SKIN(270501603 6343)"/>
-	<desc id="MusicPlayer/Vol7" path="SKIN(270501603 6344)"/>
-	<desc id="MusicPlayer/Vol8" path="SKIN(270501603 6345)"/>
-	<desc id="MusicPlayer/Vol9" path="SKIN(270501603 6346)"/>
-	<desc id="MusicPlayer/Vol10" path="SKIN(270501603 6338)"/>
-	
-	<!-- UI resources for Visual/Internet radio plugin -->
-	<desc id="VisualRadio/Vol0" path="SKIN(270501603 6414)"/>
-	<desc id="VisualRadio/Vol1" path="SKIN(270501603 6337)"/>
-	<desc id="VisualRadio/Vol2" path="SKIN(270501603 6339)"/>
-	<desc id="VisualRadio/Vol3" path="SKIN(270501603 6340)"/>
-	<desc id="VisualRadio/Vol4" path="SKIN(270501603 6341)"/>
-	<desc id="VisualRadio/Vol5" path="SKIN(270501603 6342)"/>
-	<desc id="VisualRadio/Vol6" path="SKIN(270501603 6343)"/>
-	<desc id="VisualRadio/Vol7" path="SKIN(270501603 6344)"/>
-	<desc id="VisualRadio/Vol8" path="SKIN(270501603 6345)"/>
-	<desc id="VisualRadio/Vol9" path="SKIN(270501603 6346)"/>
-	<desc id="VisualRadio/Vol10" path="SKIN(270501603 6338)"/>
-	<desc id="VisualRadio/VisualRadioIcon" path="vrclassicidle.mif#0"/>
-    <!-- The following icons are not displayed, they just indicate whether volume popup is visible or not -->
-    <desc id="VisualRadio/VisualRadioPlaying" path="SKIN(270501603 5184)"/>
-    <desc id="VisualRadio/VisualRadioInactive" path="SKIN(270501603 5182)"/>
-
-	<desc id="InetRadio/Vol0" path="SKIN(270501603 6414)"/>
-	<desc id="InetRadio/Vol1" path="SKIN(270501603 6337)"/>
-	<desc id="InetRadio/Vol2" path="SKIN(270501603 6339)"/>
-	<desc id="InetRadio/Vol3" path="SKIN(270501603 6340)"/>
-	<desc id="InetRadio/Vol4" path="SKIN(270501603 6341)"/>
-	<desc id="InetRadio/Vol5" path="SKIN(270501603 6342)"/>
-	<desc id="InetRadio/Vol6" path="SKIN(270501603 6343)"/>
-	<desc id="InetRadio/Vol7" path="SKIN(270501603 6344)"/>
-	<desc id="InetRadio/Vol8" path="SKIN(270501603 6345)"/>
-	<desc id="InetRadio/Vol9" path="SKIN(270501603 6346)"/>
-	<desc id="InetRadio/Vol10" path="SKIN(270501603 6338)"/>
-	<desc id="InetRadio/IRPlayingIcon" path="irclassicidle.mif#0"/>
-	<desc id="InetRadio/IRStoppedIcon" path="irclassicidle.mif#2"/>
-
-	<!-- UI resources for Organizer -->
-	<desc id="Organizer/NoEventsForToday">&qtn_ai_cale_no_event_today;</desc>
-	<desc id="Organizer/NoMoreEventsForToday">&qtn_ai_cale_no_more_ev_td;</desc>
-	<desc id="Organizer/IconAnniv" path="SKIN(268458241 2)"/>
-	<desc id="Organizer/IconAppt" path="SKIN(268458241 4)"/>
-	<desc id="Organizer/IconMemo" path="SKIN(268458241 6)"/>
-	<desc id="Organizer/IconTodo" path="SKIN(270501603 5126)"/>
-	<desc id="Organizer/IconMeetAccepted" path="SKIN(270501603 5508)"/>
-	<desc id="Organizer/IconMeetNotAnswered" path="SKIN(270501603 5511)"/>
-	<desc id="Organizer/IconMeetTentative" path="SKIN(270501603 5514)"/>
-	
-	<!-- Views -->
-	<views>
-
-		<!--################################
-		    ####         AI plug-ins    ####
-		    ################################-->
-		<property class="ContentSource" name="Shortcut" value="0x102750FA" load_ordinal="1"/>
-		<property class="ContentSource" name="Organizer" value="0x102750FE" load_ordinal="2"/>
-		<property class="ContentSource" name="MusicPlayer" value="0x10207B73" load_ordinal="3"/>
-		<property class="ContentSource" name="SAT" value="0x102078EB" load_ordinal="5"/>
-		<property class="ContentSource" name="VisualRadio" value="0x10208A89" load_ordinal="6"/>
-		<property class="ContentSource" name="InetRadio" value="0x2000B4A7" load_ordinal="7"/>
-
-		<!--###################################
-		    ### Plug-in specific settings   ###
-		    ###################################-->
-
-		<!--################################
-		    ## Shortcut plug-in settings  ##
-		    ################################-->
-
-		<!-- Always visible shortcuts -->
-		<!-- NOTE: these indexes start from 1 -->
-		<!-- Shortcut #1, Messaging -->
-		<property class="Settings/Shortcut" name="0x00000001" value="localapp:0x100058C5"/>
-		<!-- Shortcut #2, Phonebook -->
-		<property class="Settings/Shortcut" name="0x00000002" value="localapp:0x101F4CCE"/>
-		<!-- Shortcut #3, Clock -->
-		<property class="Settings/Shortcut" name="0x00000003" value="localapp:0x10005903"/>
-		<!-- Shortcut #4, Media Gallery 2 -->
-		<property class="Settings/Shortcut" name="0x00000004" value="localapp:0x101F8599"/>
-		<!-- Shortcut #5, Browser -->
-		<property class="Settings/Shortcut" name="0x00000005" value="localapp:0x10008D39"/>
-		<!-- Shortcut #6, Change theme -->
-		<property class="Settings/Shortcut" name="0x00000006" value="localapp:0x10005A32?view=0x102750A7"/>
-
-		<!-- Optionally visible shortcuts -->
-		<!-- Soft key #1, Applications -->
-		<property class="Settings/Shortcut" name="0x01000100" value="localapp:0x101F4CD2"/>
-		<!-- Soft key #2, Contacts -->
-		<property class="Settings/Shortcut" name="0x01000101" value="localapp:0x101F4CCE"/>
-
-
-		<!-- #################################
-		     ## Organizer plug-in settings  ##
-		     ################################# -->
-
-		<!-- Item count and size settings -->
-    <!-- Total line count -->
-		<property class="Settings/Organizer" name="0x01" value="8"/>
-
-    <!-- Timed item line count -->
-		<property class="Settings/Organizer" name="0x02" value="2"/>
-
-    <!-- Non Timed item line count -->
-		<property class="Settings/Organizer" name="0x03" value="1"/>
-
-    <!-- Line count reserved for non timed items -->
-		<property class="Settings/Organizer" name="0x04" value="0"/>
-
-    <!-- Publish end time for upcoming timed items -->
-		<property class="Settings/Organizer" name="0x05" value="1"/>
-
-    <!-- Use alternate publishing for upcoming and ongoing items -->
-		<property class="Settings/Organizer" name="0x06" value="1"/>
-
-		<!-- Main view -->
-
-		<view id="ActiveIdleView">
-
-			<!-- move focus to 1st SC if END key is pressed -->
-			<actions>
-				<action id="KeyEnd">
-				  <trigger name="keyevent">
-					  <property name="scancode" value="197"/><!-- End key -->
-					  <property name="eventtype" value="1"/>
-				  </trigger>
-				<!-- switch the tooltip temporary OFF because we do not want to see it when ENDKEY -->
-				<event name ="system/set">
-					<property name="name" value="display"/>
-					<property name="value" value="none"/>
-					<property name="type" value="string"/>
-					<property name="id" value="shortcutTooltip1"/>
-				</event>				  
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				<!-- ENDKEY is handled we can turn the tooltip back ON. We could do this also in SC1 and with loseFocus event, but that is very slow and  overloading -->
-				<event name ="system/set">
-					<property name="name" value="display"/>
-					<property name="value" value="block"/>
-					<property name="type" value="string"/>
-					<property name="id" value="shortcutTooltip1"/>
-					</event>
-				</action>
-<!--
-				<action id="FocusToIdle">
-				  <trigger name="gainfocus">
-					  </trigger>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				</action>
--->
-
-
-<![CDATA[				<action><!-- This functionality is not yet required so it is left out in reference themes in rel. 3.2 -->
-					<trigger name="keyevent">
-					  <property name="scancode" value="19"/><!-- Edit key -->
-					</trigger>
-					<event name="Shortcut/LaunchByValue(localapp:0x10005907)"/><!-- Notepad -->
-				</action>]]>
-			</actions>
-
-		<!--#####################################
-		    #####      Shortcut plugin      #####
-		    #####################################-->
-			<box id="shortcutPluginContainer" class="pluginContainerBox" focusable="false">
-<!--
-				<actions>
-					<action>
-						<trigger name="gainfocus"/>
-							<event name="system/setfocus">
-								<property name="id" value="shortcutButton1"/>
-							</event>
-					</action>
-				</actions>
--->
-				<!-- Shortcut items -->
-				<!-- reversed order -->
-				<!-- #6 -->
-				<button id="shortcutButton6" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000006)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-							<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-					<image id="Shortcut_shortcutIcon6" class="shortcutIcon" focusable="false">
-						<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000006"/>
-					</image>
-					<tooltip id="shortcutTooltip6" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText6" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000006"/>
-						</text>
-					</tooltip>
-				</button>
-
-				<!-- #5 -->
-				<button id="shortcutButton5" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000005)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-								<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-					<image id="Shortcut_shortcutIcon5" class="shortcutIcon" focusable="false">
-						<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000005"/>
-					</image>
-					<tooltip id="Shortcut_shortcutTooltip5" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText5" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000005"/>
-						</text>
-					</tooltip>
-				</button>
-
-				<!-- #4 -->
-				<button id="shortcutButton4" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000004)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-							<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-					<image id="Shortcut_shortcutIcon4" class="shortcutIcon" focusable="false">
-						<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000004"/>
-					</image>
-					<tooltip id="shortcutTooltip4" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText4" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000004"/>
-						</text>
-					</tooltip>
-				</button>
-
-				<!-- #3 -->
-				<button id="shortcutButton3" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000003)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-							<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-				 	<image id="Shortcut_shortcutIcon3" class="shortcutIcon" focusable="false">
-						<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000003"/>
-					</image>
-					<tooltip id="Shortcut_shortcutTooltip3" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText3" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000003"/>
-						</text>
-					</tooltip>
-				</button>
-
-				<!-- #2 -->
-				<button id="shortcutButton2" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000002)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-							<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-					<image id="Shortcut_shortcutIcon2" class="shortcutIcon" focusable="false">
-							<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000002"/>
-					</image>
-					<tooltip id="shortcutTooltip2" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText2" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000002"/>
-						</text>
-					</tooltip>
-				</button>
-
-				<!-- #1 -->
-				<button id="shortcutButton1" class="shortcutButton" focusable="true">
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x00000001)"/>
-						</action>
-						<action>
-						<trigger name="up"/><!-- joystick up -->
-							<event name="system/setfocus">
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-						<action>
-							<trigger name="down"/><!-- joystick down -->
-							<event name="system/setfocus">
-								<property name="id" value="playerPlugin"/>
-								<property name="id" value="radioPlugin"/>
-								<property name="id" value="calendarPluginContainer"/>
-							</event>
-						</action>
-					</actions>
-					<image id="Shortcut_shortcutIcon1" class="shortcutIcon" focusable="false">
-							<property class="Shortcut/ShortcutIcon" name="ordinal" value="0x00000001"/>
-					</image>
-					<tooltip id="shortcutTooltip1" class="shortcutTooltip" focusable="false">
-						<text id="Shortcut_shortcutTooltipText1" class="shortcutTooltipText" focusable="false">
-							<property class="Shortcut/ShortcutCaption" name="ordinal" value="0x00000001"/>
-						</text>
-					</tooltip>
-				</button>
-		</box>
-		<!--#######################################
-		    #####          SAT plugin         #####
-		    #######################################-->
-
-			<box id="SATPluginContainer" class="pluginContainerBox" focusable="false">
-
-<!--			
-			<actions>
-					<action>
-						<trigger name="stylus"/>
-						<trigger name="activate"/>
-						<event name="SAT/LaunchSatapp"/>
-					</action>
-
-					<action>
-						<trigger name="losevisualisation"/>
-							<event name="system/setfocus">
-							<property name="id" value="shortcutButton1"/>
-							</event>
-					</action>
-					
-					<action>
-						<trigger name="gainfocus"/>
-						<event name ="system/set">
-					 		<property name="id" value="MSK"/>
-					 		<property name="name" value="label"/>
-					 		<property name="value" value=""/>
-					 		<property name="type" value="attribute"/>
-						</event>
-					</action>
-
-					<action>
-						<trigger name="losefocus"/>
-						<event name ="system/set">
-					 		<property name="id" value="MSK"/>
-					 		<property name="name" value="label"/>
-					 		<property name="value" value="&qtn_msk_open;"/>
-					 		<property name="type" value="attribute"/>
-						</event>
-					</action>
-
-					<action>
-					<trigger name="left"/>
-						<event name="system/setfocus">
-						<property name="id" value="calendarPluginContainer"/>
-						</event>
-					</action>
-
-					<action>
-						<trigger name="right"/>
-						<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-						</event>
-					</action>
-
-			</actions>
--->
-				<text id="SatIdleModeText" class="satText" focusable="false">
-					<property class="SAT/SatIdleModeText"/>
-					<property class="policy/emptyContent" name="SATPluginContainer" value="display: none;"/>
-					<property class="policy/emptyContent" name="mpVolume" value="top: 4u;"/> <!-- we are not active reset MP pop-up to it's original location -->
-					<property class="policy/emptyContent" name="radioVolume" value="top: 4u;"/> <!-- we are not active reset radio pop-up to it's original location -->
-					<property class="policy/Content" name="SATPluginContainer" value="display: block;"/>
-					<property class="policy/Content" name="SatIdleModeIcon" value="display: block;"/>
-					<property class="policy/Content" name="mpVolume" value="top: 9u;"/> <!-- in case MP is active we need to adjust its pop-up location from here -->
-					<property class="policy/Content" name="radioVolume" value="top: 9u;"/> <!-- in case radio is active we need to adjust its pop-up location from here -->
-				</text>
-				<image id="SatIdleModeIcon" class="satIcon" focusable="false">
-					<property class="SAT/SatIdleModeIcon"/>
-					<property class="policy/Content" name="SatIdleModeText" value="margin-right: 6.0u;"/>
-					<property class="policy/emptyContent" name="SatIdleModeText" value="margin-right: 1.0u;"/>
-				</image>
-		</box> <!-- SAT plugin -->
-
-		<!--########################################
-		    #####         Player plugin         ####
-		    ########################################-->
-		<box id="playerPlugin" class="pluginContainerBox" focusable="true">
-			<actions>
-			
-				<action>
-					<!-- if focused and box is hidden move focus to SC1 -->
-					<trigger name="losevisualisation"/>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when focused show the volume controll pop-up -->
-					<trigger name="gainfocus"/>
-					<event name ="system/set">
-						<property name="name" value="display"/>
-						<property name="value" value="block"/>
-						<property name="type" value="string"/>
-						<property name="id" value="mpVolume"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when focus is lost hide the volume controll pop-up -->
-					<trigger name="losefocus"/>
-					<event name="system/set">
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-						<property name="id" value="mpVolume"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when clicked activate the Music Library -->
-					<trigger name="stylus"/>
-					<trigger name="activate"/>
-					<event name="MusicPlayer/Library"/>
-				</action>
-
-				<action>
-					<!-- decrease volume -->
-					<trigger name="down"/>
-					<event name="MusicPlayer/VolDec"/>
-				</action>
-
-				<action>
-					<!-- increase volume -->
-					<trigger name="up"/>
-					<event name="MusicPlayer/VolInc"/>
-				</action>
-				
-				<!-- navigation out from the box -->
-				<action>
-					<!-- joystick up -->
-					<trigger name="left"/>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				</action>
-					
-				<action>
-					<!-- joystick down -->
-					<trigger name="right"/>
-					<event name="system/setfocus">
-						<property name="id" value="calendarPluginContainer"/> <!-- no need to add NT after calendar because calendar is static, allways visible -->
-					</event>
-				</action>
-
-			</actions>
-
-			<image id="playerStatusIcon" focusable="false">
-				<property class="MusicPlayer/Status"/>
-				<property class="policy/emptyContent" name="playerPlugin" value="display:none"/>
-				<property class="policy/Content" name="playerPlugin" value="display:block"/>
-			</image>
-
-			<text id="playerTitleText" focusable="false">
-				<property class="MusicPlayer/Title"/>
-				<property class="policy/Content" name="playerTitleText" value="display: block;"/>
-			</text>
-
-			<text id="playerDurationText" focusable="false">
-				<property class="MusicPlayer/ElapsedTime"/>
-			</text>
-		</box> <!-- playerPlugin-->
-
-		<!--######################################
-		    ####       Volume Controll for music player       ####
-		    ######################################-->
-		<box id="mpVolume" focusable="false">
-
-			<image id="musicPlayerInactiveVolumeDownIcon" path="SKIN(270501603 6420)" focusable="false"/>
-			<image id="musicPlayerVolumeDownIcon" path="SKIN(270501603 6419)" focusable="false"/>
-			
-			<!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-			<image id="musicPlayerSpeakerIcon" path="SKIN(270501603 4332)" focusable="false"/>
-			<image id="musicPlayerSpeakerMutedIcon" path="SKIN(270501603 4334)" focusable="false"/>
-			
-			<image id="musicPlayerInactiveVolumeUpIcon" path="SKIN(270501603 6422)" focusable="false"/>
-			<image id="musicPlayerVolumeUpIcon" path="SKIN(270501603 6421)" focusable="false"/>
-
-			<image id="musicPlayerVolumeIcon" focusable="false">
-				<property class="MusicPlayer/Volume"/>
-				<property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if (MusicPlayer/Vol0) display:block"/>
-				<property class="policy/Resource" name="musicPlayerSpeakerMutedIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-				<property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-				<property class="policy/Resource" name="musicPlayerSpeakerIcon" value="if (MusicPlayer/Vol0) display:none"/>
-
-				<property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if (MusicPlayer/Vol0) display:block"/>
-				<property class="policy/Resource" name="musicPlayerInactiveVolumeDownIcon" value="if !(MusicPlayer/Vol0) display:none"/>
-				<property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9, MusicPlayer/Vol10 ) display:block"/>
-				<property class="policy/Resource" name="musicPlayerVolumeDownIcon" value="if (MusicPlayer/Vol0) display:none"/>
-				<property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if (MusicPlayer/Vol10) display:block"/>
-				<property class="policy/Resource" name="musicPlayerInactiveVolumeUpIcon" value="if !(MusicPlayer/Vol10) display:none"/>
-				<property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol0, MusicPlayer/Vol1, MusicPlayer/Vol2, MusicPlayer/Vol3, MusicPlayer/Vol4, MusicPlayer/Vol5, MusicPlayer/Vol6, MusicPlayer/Vol7, MusicPlayer/Vol8, MusicPlayer/Vol9 ) display:block"/>
-				<property class="policy/Resource" name="musicPlayerVolumeUpIcon" value="if (MusicPlayer/Vol10) display:none"/>
-			</image>
-		</box> <!-- mpVolume -->
-
-	
-		<!--########################################
-		    #####         Visual/Internet radio plugin         ####
-		    ########################################-->
-		<box id="radioPlugin" class="pluginContainerBox" focusable="true">
-			<actions>
-			
-				<action>
-					<!-- if focused and box is hidden move focus to SC1 -->
-					<trigger name="losevisualisation"/>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when focused show the volume control pop-up -->
-					<trigger name="gainfocus"/>
-					<event name ="system/set">
-						<property name="name" value="display"/>
-						<property name="value" value="block"/>
-						<property name="type" value="string"/>
-						<property name="id" value="radioVolume"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when focus is lost hide the volume control pop-up -->
-					<trigger name="losefocus"/>
-					<event name="system/set">
-						<property name="name" value="display"/>
-						<property name="value" value="none"/>
-						<property name="type" value="string"/>
-						<property name="id" value="radioVolume"/>
-					</event>
-				</action>
-
-				<action>
-					<!-- when clicked activate the radio -->
-					<trigger name="stylus"/>
-					<trigger name="activate"/>
-					<event name="VisualRadio/LaunchRadio"/>
-					<!-- Always let Visual Radio plug-in handle the launch event. It will start Radio Launcher. -->
-				</action>
-
-				<action>
-					<!-- decrease volume -->
-					<trigger name="down"/>
-					<event name="VisualRadio/VolDec"/>
-					<event name="InetRadio/VolDec"/>
-				</action>
-
-				<action>
-					<!-- increase volume -->
-					<trigger name="up"/>
-					<event name="VisualRadio/VolInc"/>
-					<event name="InetRadio/VolInc"/>
-				</action>
-				
-				<!-- navigation out from the box -->
-				<action>
-					<!-- joystick up -->
-					<trigger name="left"/>
-					<event name="system/setfocus">
-						<property name="id" value="shortcutButton1"/>
-					</event>
-				</action>
-					
-				<action>
-					<!-- joystick down -->
-					<trigger name="right"/>
-					<event name="system/setfocus">
-						<property name="id" value="calendarPluginContainer"/> <!-- no need to add NT after calendar because calendar is static, allways visible -->
-					</event>
-				</action>
-
-			</actions>
-
-			<image id="radioStatusIcon" focusable="false">
-				<property class="VisualRadio/OneLineIcon" name="priority" value="0"/>
-				<property class="InetRadio/OneLineIcon" name="priority" value="1"/>
-				<property class="policy/emptyContent" name="radioPlugin" value="display:none"/>
-				<property class="policy/Content" name="radioPlugin" value="display:block"/>
-			</image>
-
-			<text id="radioTitleText" focusable="false">
-				<property class="VisualRadio/OneLineInfo" name="priority" value="0"/>
-				<property class="InetRadio/OneLineInfo" name="priority" value="1"/>
-				<property class="policy/Content" name="radioTitleText" value="display: block;"/>
-			</text>
-
-		</box> <!-- radioPlugin-->
-
-		<!--######################################
-		    ####       Volume Control for Visual/Internet Radio       ####
-		    ######################################-->
-		<box id="radioVolume" focusable="false">
-
-			<image id="radioInactiveVolumeDownIcon" path="SKIN(270501603 6420)" focusable="false"/>
-			<image id="radioVolumeDownIcon" path="SKIN(270501603 6419)" focusable="false"/>
-			
-			<!-- NOTE! Either speaker icon or muted speaker icon is visible, not both. See policy in volume control below. -->
-			<image id="radioSpeakerIcon" path="SKIN(270501603 4332)" focusable="false"/>
-			<image id="radioSpeakerMutedIcon" path="SKIN(270501603 4334)" focusable="false"/>
-			
-			<image id="radioInactiveVolumeUpIcon" path="SKIN(270501603 6422)" focusable="false"/>
-			<image id="radioVolumeUpIcon" path="SKIN(270501603 6421)" focusable="false"/>
-
-			<image id="radioVolumeIcon" focusable="false">
-				<property class="VisualRadio/Volume" name="priority" value="0"/>
-				<property class="InetRadio/Volume" name="priority" value="1"/>
-				<property class="policy/Resource" name="radioSpeakerMutedIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-				<property class="policy/Resource" name="radioSpeakerMutedIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-				<property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-				<property class="policy/Resource" name="radioSpeakerIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-
-				<property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:block"/>
-				<property class="policy/Resource" name="radioInactiveVolumeDownIcon" value="if !(VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-				<property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, VisualRadio/Vol10, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9, InetRadio/Vol10 ) display:block"/>
-				<property class="policy/Resource" name="radioVolumeDownIcon" value="if (VisualRadio/Vol0, InetRadio/Vol0) display:none"/>
-				<property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:block"/>
-				<property class="policy/Resource" name="radioInactiveVolumeUpIcon" value="if !(VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-				<property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol0, VisualRadio/Vol1, VisualRadio/Vol2, VisualRadio/Vol3, VisualRadio/Vol4, VisualRadio/Vol5, VisualRadio/Vol6, VisualRadio/Vol7, VisualRadio/Vol8, VisualRadio/Vol9, InetRadio/Vol0, InetRadio/Vol1, InetRadio/Vol2, InetRadio/Vol3, InetRadio/Vol4, InetRadio/Vol5, InetRadio/Vol6, InetRadio/Vol7, InetRadio/Vol8, InetRadio/Vol9 ) display:block"/>
-				<property class="policy/Resource" name="radioVolumeUpIcon" value="if (VisualRadio/Vol10, InetRadio/Vol10) display:none"/>
-			</image>
-            
-            <image id="invisibleVRImage" class="invisibleRadioIcon" focusable="false">
-                <property class="VisualRadio/TitleIcon" name="priority" value="0"/>
-                <property class="policy/emptyContent" name="radioVolume" value="visibility: visible"/>
-                <property class="policy/Resource" name="radioVolume" value="if (VisualRadio/VisualRadioInactive) visibility:hidden"/>
-                <property class="policy/Resource" name="radioVolume" value="if (VisualRadio/VisualRadioPlaying) visibility: visible"/>
-            </image>
-         
-		</box> <!-- radioVolume -->
-
-
-		<!--######################################
-		    ####       Organizer plugin       ####
-		    ######################################-->
-			<box id="calendarPluginContainer" class="pluginContainerBox" focusable="true">
-				<actions>
-					<action>
-						<!-- activate organizer -->
-						<trigger name="stylus"/>
-						<trigger name="activate"/>
-						<event name="Organizer/ItemSelected(0)"/>
-					</action>
-
-					<action>
-						<!-- joystick up -->
-						<trigger name="left"/>
-						<event name="system/setfocus">
-							<property name="id" value="playerPlugin"/>
-							<property name="id" value="radioPlugin"/>
-							<property name="id" value="shortcutButton1"/>
-						</event>
-					</action>
-
-					<action>
-						<!-- joystick down -->
-						<trigger name="right"/>
-						<event name="system/setfocus">
-							<property name="id" value="shortcutButton1"/>
-						</event>
-					</action>
-				</actions>
-
-				<!-- #1 -->
-				<button id="calendarEntryBox1" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon1" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x01"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon1" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText1_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText1_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon1" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText1_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText1_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText1_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x01"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarPluginContainer" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox1" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox1" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarPluginContainer" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox1" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox1" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText1_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x01"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText1_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox1" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText1_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox1" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #2 -->
-				<button id="calendarEntryBox2" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon2" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x02"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText2_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText2_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText2_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText2_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText2_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x02"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox2" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox2" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText2_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x02"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText2_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox2" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText2_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox2" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #3 -->
-				<button id="calendarEntryBox3" class="calendarEntryBox" focusable="true">
-					<property name="calendarEntryBox3" value="background-color: red;"/>
-					<image id="calendarEntryIcon3" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x03"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon3" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText3_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText3_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon3" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText3_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText3_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText3_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x03"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox3" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox3" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox3" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox3" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText3_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x03"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText3_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox3" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText3_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox3" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #4 -->
-				<button id="calendarEntryBox4" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon4" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x04"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon4" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText4_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText4_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon4" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText4_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText4_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText4_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x04"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox4" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox4" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox4" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox4" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText4_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x04"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText4_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox4" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText4_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox4" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #5 -->
-				<button id="calendarEntryBox5" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon5" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x05"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon5" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText5_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText5_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon5" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText5_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText5_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText5_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x05"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox5" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox5" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox5" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox5" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText5_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x05"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText5_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox5" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText5_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox5" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #6 -->
-				<button id="calendarEntryBox6" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon6" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x06"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon6" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText6_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText6_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon6" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText6_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText6_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText6_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x06"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox6" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox6" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox6" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox6" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText6_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x06"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText6_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox6" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText6_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox6" value="height: 8.5u;"/>
-					</text>
-				</button>
-				
-				<!-- #7 -->
-				<button id="calendarEntryBox7" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon7" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x07"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon7" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText7_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText7_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon7" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText7_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText7_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText7_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x07"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox7" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox7" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox7" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox7" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText7_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x07"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText7_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox7" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText7_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox7" value="height: 8.5u;"/>
-					</text>
-				</button>
-
-				<!-- #8 -->
-				<button id="calendarEntryBox8" class="calendarEntryBox" focusable="true">
-					<image id="calendarEntryIcon8" class="calendarEntryIcon" focusable="false">
-						<property class="Organizer/EventIcon" name="ordinal" value="0x08"/>
-						<!-- If there is no image, the left side of the first text line will take the space of the image. -->
-						<property class="policy/emptyContent" name="calendarEntryIcon8" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryText8_1" value="left: 0.7u;"/>
-						<property class="policy/emptyContent" name="calendarEntryText8_2" value="left: 0.7u;"/>
-						<!-- If image exists, left side of the first text line will be on the right side of the image. -->
-						<property class="policy/Content" name="calendarEntryIcon8" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryText8_1" value="left: 5.75u;"/>
-						<property class="policy/Content" name="calendarEntryText8_2" value="left: 5.75u;"/>
-					</image>
-					<text id="calendarEntryText8_1" class="calendarEntryText1" focusable="false">
-						<property class="Organizer/Event1stLine" name="ordinal" value="0x08"/>
-						<!-- If there is no text, the entry box is not shown at all -->
-						<property class="policy/emptyContent" name="calendarEntryBox8" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox8" value="nav-index: none;"/>
-						<property class="policy/Content" name="calendarEntryBox8" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox8" value="nav-index: auto;"/>
-					</text>
-					<text id="calendarEntryText8_2" class="calendarEntryText2" focusable="false">
-						<property class="Organizer/Event2ndLine" name="ordinal" value="0x08"/>
-						<!-- If there is no second text line, decrease the height of the box -->
-						<property class="policy/emptyContent" name="calendarEntryText8_2" value="display: none;"/>
-						<property class="policy/emptyContent" name="calendarEntryBox8" value="height: 4.25u;"/>
-						<property class="policy/Content" name="calendarEntryText8_2" value="display: block;"/>
-						<property class="policy/Content" name="calendarEntryBox8" value="height: 8.5u;"/>
-					</text>
-				</button>
-			</box>
-
-
-
-			<!--#################################################
-			    ####     Menubar with soft key shortcuts     ####
-			    #################################################-->
-			<menubar>
-				<menuitem id="Shortcut_SK1" label="">
-					<!-- ordinal value is the same as in the default settings -->
-					<property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000100"/>
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<trigger name="activate"/>
-							<event name="Shortcut/LaunchByIndex(0x01000100)"/>
-						</action>
-					</actions>
-				</menuitem>
-				<menuitem id="Shortcut_SK2" label="">
-					<property class="Shortcut/ShortcutShortCaption" name="ordinal" value="0x01000101"/>
-					<actions>
-						<action>
-							<trigger name="stylus"/>
-							<!-- if using both activate and hold for same SK active trigger need to be specified like this (2 = keyup) otherwise hold will not work -->
-							<trigger name="activate"><property name="eventtype" value="2"/></trigger>
-							<event name="Shortcut/LaunchByIndex(0x01000101)"/>
-						</action>
-						<action>
-							<trigger name="hold"/>
-							<event name="Shortcut/LaunchByValue(localapp:0x10281867)"/>
-						</action>
-					</actions>
-				</menuitem>
-				<menuitem id="MSK" label="&qtn_msk_open;"/>
-			</menubar>
-		</view>
-	</views>
-
-</xmluiml>
Binary file internetradio2.0/activeidlethemes/themes/ClassicIdle/irclassicidle.mif has changed
Binary file internetradio2.0/activeidlethemes/themes/ClassicIdle/vrclassicidle.mif has changed
--- a/internetradio2.0/activeidlethemes/themes/iractiveidlemif.bat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:
-rem
-
-mifconv ClassicIdle\irclassicidle.mif /c8,8 ..\..\mbm\qgn_indi_ai_music_play.svg /c8,8 ..\..\mbm\qgn_indi_ai_music_stop.svg
-mifconv ActiveIdle\iractiveidle.mif /c8,8 ..\..\mbm\qgn_indi_ai_music_play.svg /c8,8 ..\..\mbm\qgn_indi_ai_music_stop.svg
--- a/internetradio2.0/aif/qgn_menu_irradio.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 44 44">
-<g>
-<g>
-<g>
-<path d="M33.216,16.98c-1.104,0-2,0.896-2,2v12.941c0,1.104,0.896,2,2,2h3.451c1.104,0,2-0.896,2-2V18.98c0-1.104-0.896-2-2-2       H33.216z"/>
-</g>
-<g>
-<path d="M7.333,16.98c-1.104,0-2,0.896-2,2v12.941c0,1.104,0.896,2,2,2h3.451c1.104,0,2-0.896,2-2V18.98c0-1.104-0.896-2-2-2       H7.333z"/>
-</g>
-<g>
-<path d="M8.196,25.45c0,3.688,1.436,7.155,4.043,9.763c2.607,2.606,6.073,4.042,9.76,4.042c7.611,0,13.804-6.192,13.804-13.805       c0-7.611-6.192-13.803-13.804-13.803C14.388,11.647,8.196,17.839,8.196,25.45z"/>
-</g>
-<circle fill="#635E54" cx="22" cy="25.45" r="12.941"/>
-<path fill="#AAA096" d="M11.571,31.533l21.557-10.778c-1.836-4.334-6.133-7.382-11.128-7.382      c-6.66,0-12.079,5.418-12.079,12.078C9.921,27.668,10.525,29.745,11.571,31.533z"/>
-<g>
-<path fill="#4F4A44" d="M18.567,13.336h-1.084c-0.516,0.193-1.021,0.41-1.503,0.664v1.063c0,0,0,0.862-0.863,0.862       s-1.727,0-1.727,0s-0.047,0-0.114-0.012c-2.199,2.014-3.699,4.77-4.098,7.878c0.434,0.435,0.763,0.764,0.763,0.764       s-0.862,0.86,0,1.725c0.863,0.862,4.314,4.313,4.314,4.313s-0.863,0.863,0,1.726c0.803,0.802,1.726,1.727,1.726,1.727v2.858       c1.319,0.695,2.772,1.161,4.313,1.364v-0.771c0.863,0,1.725-0.864,1.725-1.727v-4.313c0-0.762-0.913-1.726-1.725-1.726       s-1.726,0-1.726,0s-0.337-0.337-0.863-0.862c-0.526-0.527-1.225-0.504-1.725,0c-0.5,0.501-0.863,0.862-0.863,0.862       l-1.726-1.726c0.427-0.427,0.46-1.249,0-1.709c-0.46-0.461-0.861-0.88-0.861-0.88c-0.446-0.444-0.446-1.282,0-1.726       c0.442-0.444,1.279-0.444,1.724,0l0.863,0.865v1.725c0,0.431,0.863,0.431,0.863,0v-1.725l1.725-2.589c0,0,0,0,0.863,0       c0.862,0,1.726-0.864,1.726-1.727c0-0.861-0.863-1.726-1.726-1.726c-0.806,0-0.431,0-0.863,0s-0.432-0.864,0-0.864       s1.725,0,1.725,0s-0.001,0,0.863,0.864c0.432,0.433,1.294,0.431,1.726,0c0.431-0.432,0.429-1.294,0-1.726       C21.949,16.719,18.567,13.336,18.567,13.336z M34.676,22.826h-1.442l-1.726,1.728c0,0-1.725,0-2.587,0       c-0.863,0-1.727,0.86-1.727,1.725v2.588c0,0.825,0.921,1.725,1.727,1.725c0,0.009,0.862,0,0.862,0s0,0.863,0,1.726       c0,0.863,0.863,0.863,0.863,0.863v1.883c2.631-2.369,4.295-5.791,4.295-9.612C34.941,24.554,34.848,23.674,34.676,22.826z        M28.921,23.688c0.862,0,0.862-0.862,0.862-0.862v-1.722c0,0,0.005-0.866,0.864-0.866h2.586c0,0,0,0.863,0.863,0.863       c0.027,0,0.052,0,0.079,0c-1.28-3.587-4.092-6.436-7.658-7.765h-0.187l-1.725,1.726v2.591l0.696,0.696       c0.222,0.224,0.641,0.224,0.862,0c0.223-0.222,0.223-0.641,0-0.863l-0.255-0.254c-0.452-0.453,0-0.875,0-0.875       s0.421-0.433,0.854,0c0.431,0.432,0.86,0.867,0.86,0.867s-1.754,1.756-2.154,2.153c-0.399,0.401,0,0.864,0,0.864l0.861,0.863       c0,0,0,0.861,0,1.722c0,0.862,0.863,0.862,0.863,0.862S28.058,23.688,28.921,23.688z"/>
-<path fill="#FFFDFC" d="M18.288,13.057c-1.161,0.346-2.251,0.857-3.251,1.495c-0.087,0.229-0.285,0.474-0.717,0.501       c-3.171,2.345-5.239,6.097-5.257,10.342c0.005,0.006,0.009,0.013,0.016,0.02c0.862,0.863,4.313,4.313,4.313,4.313       s-0.861,0.863,0,1.725c0.803,0.803,1.726,1.728,1.726,1.728v3.217c1.301,0.82,2.754,1.423,4.313,1.738V36.63       c0.863,0,1.726-0.862,1.726-1.725v-4.314c0-0.765-0.913-1.727-1.726-1.727c-0.813,0-1.725,0-1.725,0s-0.337-0.336-0.862-0.861       c-0.526-0.527-1.225-0.502-1.726,0c-0.5,0.501-0.863,0.861-0.863,0.861L12.53,27.14c0.425-0.427,0.458-1.248,0-1.709       c-0.461-0.46-0.864-0.879-0.864-0.879c-0.444-0.446-0.444-1.282,0-1.726c0.443-0.445,1.281-0.445,1.725,0l0.863,0.862v1.726       c0,0.431,0.863,0.431,0.863,0v-1.726l1.726-2.589c0,0,0,0,0.862,0c0.863,0,1.725-0.861,1.725-1.724       c0-0.864-0.862-1.727-1.725-1.727c-0.806,0-0.432,0-0.862,0c-0.432,0-0.432-0.862,0-0.862c0.431,0,1.725,0,1.725,0       s-0.002-0.001,0.862,0.862c0.431,0.432,1.295,0.432,1.726,0c0.431-0.431,0.43-1.296,0-1.725       C21.105,15.873,19.258,14.027,18.288,13.057z M34.891,24.443c-0.088-0.143-0.093-0.299-0.035-0.446       c-0.078-0.695-0.218-1.374-0.403-2.033h-2.081l-1.725,1.725c0,0-1.726,0-2.589,0s-1.727,0.863-1.727,1.726v2.588       c0,0.824,0.922,1.726,1.727,1.726c0,0.008,0.863,0,0.863,0s0,0.863,0,1.725c0,0.863,0.862,0.863,0.862,0.863v3.459       c3.128-2.362,5.158-6.102,5.158-10.324C34.941,25.111,34.916,24.777,34.891,24.443z M28.058,22.826       c0.863,0,0.863-0.862,0.863-0.862v-1.723c0,0,0.004-0.867,0.864-0.867h2.586c0,0,0,0.864,0.862,0.864c0.206,0,0.411,0,0.607,0       c-1.606-3.645-4.843-6.396-8.785-7.351l-1.313,1.311v2.591l0.696,0.695c0.224,0.222,0.641,0.222,0.863,0       c0.222-0.22,0.222-0.639,0-0.861l-0.255-0.255c-0.453-0.453,0-0.875,0-0.875s0.422-0.434,0.853,0       c0.431,0.433,0.861,0.867,0.861,0.867s-1.756,1.755-2.155,2.154c-0.399,0.4,0,0.863,0,0.863l0.863,0.864c0,0,0,0.858,0,1.723       c0,0.862,0.861,0.862,0.861,0.862S27.194,22.826,28.058,22.826z"/>
-</g>
-<path fill="#4F4A44" d="M32.756,18.252c-0.241,0.153-0.403,0.421-0.403,0.728v12.941c0,0.307,0.162,0.574,0.403,0.728      c1.38-2.059,2.186-4.534,2.186-7.199C34.941,22.786,34.136,20.311,32.756,18.252z"/>
-<path fill="#4F4A44" d="M11.245,32.649c0.241-0.153,0.402-0.421,0.402-0.728V18.98c0-0.307-0.161-0.574-0.402-0.728      c-1.38,2.058-2.186,4.533-2.186,7.197C9.059,28.115,9.865,30.591,11.245,32.649z"/>
-<path d="M22,4.313L22,4.313L22,4.313c-11.155,0-19.412,4.399-19.412,14.667c0,6.284,0.062,8.442,2.588,10.353h3.02v-5.607h-3.02      c0,0-0.062-0.831-0.062-2.218c0-9.298,7.224-13.496,16.885-13.496v0c9.661,0,16.885,4.198,16.885,13.496      c0,1.388-0.062,2.218-0.062,2.218h-3.02v5.607h3.02c2.527-1.911,2.589-6.532,2.589-10.353C41.412,8.713,33.154,4.313,22,4.313z"/>
-<g>
-<path fill="#D9D9D9" d="M3.451,18.98L3.451,18.98c0,6.094,0.102,7.905,2.045,9.49c0.349,0,1.087,0,1.837,0       c0-1.011,0-2.872,0-3.883c-0.88,0-2.996,0-2.996,0l-0.021-0.799l-0.064-2.282c0-8.991,6.635-14.359,17.748-14.359       c11.113,0,17.748,5.369,17.748,14.359l-0.088,3.12l-0.837-0.04c0,0-1.276,0-2.156,0c0,1.011,0,2.872,0,3.883       c0.737,0,1.435,0,1.806,0c2.059-1.809,2.076-6.225,2.076-9.49C40.549,6.97,28.928,5.176,22,5.176S3.451,6.97,3.451,18.98z"/>
-</g>
-<rect x="7.333" y="18.98" fill="#6EC3FF" width="3.451" height="12.941"/>
-<polygon fill="#2882C8" points="9.921,18.98 9.921,31.059 7.333,31.059 7.333,31.922 10.784,31.922 10.784,18.98 "/>
-<rect x="33.216" y="18.98" fill="#6EC3FF" width="3.451" height="12.941"/>
-<polygon fill="#2882C8" points="35.804,18.98 35.804,31.059 33.216,31.059 33.216,31.922 36.667,31.922 36.667,18.98 "/>
-<path d="M22,4.314L22,4.314L22,4.314c-11.57,0-17.605,4.866-18.549,12.078h4.745C9.47,10.775,13.634,8.602,22,8.585l0,0v0.001      c8.367,0.016,12.53,2.189,13.803,7.806h4.745C39.604,9.18,33.569,4.314,22,4.314z"/>
-<rect fill="none" width="44" height="44"/>
-<g>
-<path fill="#595959" d="M3.854,15.529c1.169,0,2.892,0,3.681,0c1.522-5.439,5.893-7.79,14.463-7.807       c8.574,0.017,12.945,2.368,14.466,7.807c0.789,0,2.511,0,3.681,0C38.075,6.571,27.988,5.176,22,5.176       C16.012,5.176,5.925,6.571,3.854,15.529z"/>
-</g>
-<rect x="36.667" y="24.588" fill="#8A8A8A" width="0.862" height="3.883"/>
-<path fill="#383838" d="M40.176,15.529h-1.614c0.125,0.281,0.237,0.57,0.343,0.863h1.438      C40.295,16.097,40.24,15.81,40.176,15.529z"/>
-<path fill="#383838" d="M3.657,16.392h1.438c0.105-0.293,0.218-0.582,0.342-0.863H3.824C3.76,15.81,3.705,16.097,3.657,16.392z"/>
-<rect x="6.471" y="24.588" fill="#8A8A8A" width="0.863" height="3.883"/>
-<path fill="#8A8A8A" d="M22,5.176c-5.988,0-16.075,1.395-18.146,10.353c0.069-0.297,0.15-0.582,0.235-0.863h2.828      c1.797-5.374,6.461-7.79,15.079-7.807c1.701,0.003,3.243,0.104,4.644,0.298l2.47-1.234C26.583,5.348,24.051,5.176,22,5.176z       M21.999,7.723c1.155,0.002,2.224,0.053,3.23,0.142l0.009-0.004"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/bmarm/iractiveidleengineu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	_ZN16CIRActiveIdleEng16SecondConstructLEv @ 1 NONAME
-	_ZN16CIRActiveIdleEng4NewLER29MIRActiveIdleEngNotifyHandler @ 2 NONAME
-	_ZN16CIRActiveIdleEngD0Ev @ 3 NONAME
-	_ZN16CIRActiveIdleEngD1Ev @ 4 NONAME
-	_ZN16CIRActiveIdleEngD2Ev @ 5 NONAME
--- a/internetradio2.0/bmarm/ircachemgmtu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-EXPORTS
-	_ZN12CIRCacheMgmt10CacheLogoLERK6TDesC8RK7TDesC16RK19CIRHttpResponseData @ 1 NONAME
-	_ZN12CIRCacheMgmt11CheckCacheLEiRK7TDesC16iRi @ 2 NONAME
-	_ZN12CIRCacheMgmt12AddObserverLEP16MIRCacheObserver @ 3 NONAME
-	_ZN12CIRCacheMgmt13CacheOtaInfoLERK12CIROTAUpdateRK7TDesC16RK19CIRHttpResponseData @ 4 NONAME
-	_ZN12CIRCacheMgmt14RemoveObserverEP16MIRCacheObserver @ 5 NONAME
-	_ZN12CIRCacheMgmt14RemoveOtaInfoLEv @ 6 NONAME
-	_ZN12CIRCacheMgmt16CachePresetItemLER13CArrayPtrFlatI13CIRIsdsPresetERK7TDesC16RK19CIRHttpResponseData @ 7 NONAME
-	_ZN12CIRCacheMgmt18CacheChannelItemsLER13CArrayPtrFlatI21CIRBrowseChannelItemsERK7TDesC16RK19CIRHttpResponseData @ 8 NONAME
-	_ZN12CIRCacheMgmt18UpdateTrustPeriodLEiRK7TDesC16R19CIRHttpResponseData @ 9 NONAME
-	_ZN12CIRCacheMgmt19CacheCategoryItemsLER13CArrayPtrFlatI22CIRBrowseCatagoryItemsERK7TDesC16RK19CIRHttpResponseData @ 10 NONAME
-	_ZN12CIRCacheMgmt5OpenLER16MIRCacheObserver @ 11 NONAME
-	_ZTI12CIRCacheMgmt @ 12 NONAME ; #<TI>#
-	_ZTV12CIRCacheMgmt @ 13 NONAME ; #<VT>#
-
--- a/internetradio2.0/bmarm/ircommandchannelu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXPORTS
-	_ZN18CIRCtrlCmdObserver11FetchVolumeEv @ 1 NONAME
-	_ZN18CIRCtrlCmdObserver11SentRequestE18TIRControlCommmandi @ 2 NONAME
-	_ZN18CIRCtrlCmdObserver13FilltheBufferER5TDes8 @ 3 NONAME
-	_ZN18CIRCtrlCmdObserver14AudioFadeInOutER18TIRControlCommmandi @ 4 NONAME
-	_ZN18CIRCtrlCmdObserver14DoAudioFadeOutEv @ 5 NONAME
-	_ZN18CIRCtrlCmdObserver4NewLEP18MIRCtrlCmdObserverP13MIRStreamFill @ 6 NONAME
-	_ZN18CIRCtrlCmdObserver5NewLCEP18MIRCtrlCmdObserverP13MIRStreamFill @ 7 NONAME
-
--- a/internetradio2.0/bmarm/irdataprovideru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-EXPORTS
-	_ZN15CIRDataProvider16ReleaseResourcesEv @ 1 NONAME
-	_ZN15CIRDataProvider19GetHttpDataProviderEv @ 2 NONAME
-	_ZN15CIRDataProvider19IRHttpCancelRequestEv @ 3 NONAME
-	_ZN15CIRDataProvider19IRHttpIssueRequestLER18CIRHttpRequestData @ 4 NONAME
-	_ZN15CIRDataProvider4NewLER23MIRDataProviderObserver @ 5 NONAME
-	_ZN15CIRDataProvider4NewLER23MIRDataProviderObserverRK7TDesC16 @ 6 NONAME
-	_ZN19CIRHttpDataProvider21GetLogoDownloadEngineEv @ 7 NONAME
-	_ZN21CIRLogoDownloadEngine12SendRequestLEP13CIRIsdsPresetP21MLogoDownloadObserveriii @ 8 NONAME
-	_ZN21CIRLogoDownloadEngine12SendRequestLEP13CIRIsdsPresetii @ 9 NONAME
-	_ZN21CIRLogoDownloadEngine13GetCacheLogoLERK7TDesC16Ri @ 10 NONAME
-	_ZN21CIRLogoDownloadEngine13SendCacheLogoEv @ 11 NONAME
-	_ZN21CIRLogoDownloadEngine13isLogoCachedLEP13CIRIsdsPresetii @ 12 NONAME
-	_ZN21CIRLogoDownloadEngine17CancelTransactionEv @ 13 NONAME
-	_ZN21CIRLogoDownloadEngine19SendPresetWithLogoLEv @ 14 NONAME
-	_ZN21CIRLogoDownloadEngine4NewLEv @ 15 NONAME
-	_ZN21CIRLogoDownloadEngineD0Ev @ 16 NONAME
-	_ZN21CIRLogoDownloadEngineD1Ev @ 17 NONAME
-	_ZN21CIRLogoDownloadEngineD2Ev @ 18 NONAME
-	_ZNK21CIRLogoDownloadEngine9IsRunningEv @ 19 NONAME
-	_ZTI21CIRLogoDownloadEngine @ 20 NONAME
-	_ZTV21CIRLogoDownloadEngine @ 21 NONAME
-
--- a/internetradio2.0/bmarm/irdatastructuresu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-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
-	_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 Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-EXPORTS
-	_ZN14CIRFavoritesDb10AddPresetLER13CIRIsdsPresetRii @ 1  NONAME
-	_ZN14CIRFavoritesDb10AddPresetLERK7TDesC16S2_Rii @ 2  NONAME
-	_ZN14CIRFavoritesDb10PresetByIdEi @ 3  NONAME
-	_ZN14CIRFavoritesDb11AddObserverERK17MPSPresetObserver @ 4  NONAME
-	_ZN14CIRFavoritesDb12GetAllPresetEv @ 5  NONAME
-	_ZN14CIRFavoritesDb12SearchPresetEii @ 6  NONAME
-	_ZN14CIRFavoritesDb13DeletePresetLEi @ 7  NONAME
-	_ZN14CIRFavoritesDb13GetMoveStatusEv @ 8  NONAME
-	_ZN14CIRFavoritesDb13GetNextPresetEi @ 9  NONAME
-	_ZN14CIRFavoritesDb13PresetByIndexEi @ 10  NONAME
-	_ZN14CIRFavoritesDb13SetMoveStatusEi @ 11  NONAME
-	_ZN14CIRFavoritesDb14MaxPresetCountEv @ 12  NONAME
-	_ZN14CIRFavoritesDb14RemoveObserverERK17MPSPresetObserver @ 13  NONAME
-	_ZN14CIRFavoritesDb14ReplacePresetLER13CIRIsdsPreset @ 14  NONAME
-	_ZN14CIRFavoritesDb16SwapPresetsInDbLEiiii @ 15  NONAME
-	_ZN14CIRFavoritesDb17GetPreviousPresetEi @ 16  NONAME
-	_ZN14CIRFavoritesDb20HandlePresetChangedLEi4TUidN17MPSPresetObserver9TPSReasonE @ 17  NONAME
-	_ZN14CIRFavoritesDb22MakePresetUserDefinedLEii @ 18  NONAME
-	_ZN14CIRFavoritesDb25ReplaceUserDefinedPresetLER13CIRIsdsPreset @ 19  NONAME
-	_ZN14CIRFavoritesDb4NewLEv @ 20  NONAME
-	_ZNK14CIRFavoritesDb16EmptyPresetCountEv @ 21  NONAME
-	_ZNK14CIRFavoritesDb7PresetsEv @ 22  NONAME
-	_ZThn4_N14CIRFavoritesDb20HandlePresetChangedLEi4TUidN17MPSPresetObserver9TPSReasonE @ 23  NONAME ; #<thunk>#
-	_ZN14CIRFavoritesDb19GetAllSortedPresetsEv @ 24  NONAME
-	_ZN14CIRFavoritesDb20IncreasePlayedTimesLERK13CIRIsdsPreset @ 25  NONAME
-        _ZN14CIRFavoritesDb13RenamePresetLERK13CIRIsdsPresetRK7TDesC16 @ 26 NONAME
-
--- a/internetradio2.0/bmarm/irgeneralsettings200u.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	_Z24ImplementationGroupProxyRi @ 1 NONAME
-
--- a/internetradio2.0/bmarm/irlogutility.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXPORTS
--- a/internetradio2.0/bmarm/irmcpplugin100u.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	_Z24ImplementationGroupProxyRi @ 1 NONAME
-
--- a/internetradio2.0/bmarm/irnetworkcontrolleru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-EXPORTS
-	_ZN18CIRNetworkObserver4NewLEP20CIRNetworkController @ 1  NONAME
-	_ZN20CIRNetworkController13IsOfflineModeEv @ 2 NONAME
-	_ZN20CIRNetworkController15GetIRConnectionEv @ 3 NONAME
-	_ZN20CIRNetworkController15GetUAProfStringEv @ 4 NONAME
-	_ZN20CIRNetworkController16CancelConnectingEv @ 5 NONAME
-	_ZN20CIRNetworkController16GetWapProfStringEv @ 6 NONAME
-	_ZN20CIRNetworkController17GetIRSocketServerEv @ 7 NONAME
-	_ZN20CIRNetworkController18ChooseAccessPointLEi @ 8 NONAME
-	_ZN20CIRNetworkController19DataTransferTrackerEv @ 9 NONAME
-	_ZN20CIRNetworkController21ResetConnectionStatusEv @ 10 NONAME
-	_ZN20CIRNetworkController22InitializeHttpSessionLERK12RHTTPSessionN22MIRDataTransferTracker19TIRTransferCategoryE @ 11 NONAME
-	_ZN20CIRNetworkController23IsHandingOverConnectionEv @ 12 NONAME
-	_ZN20CIRNetworkController23LogoDataTransferTrackerEv @ 13 NONAME
-	_ZN20CIRNetworkController27DeleteActiveNetworkObserverER24MIRActiveNetworkObserver @ 14 NONAME
-	_ZN20CIRNetworkController29NotifyActiveNetworkObserversLE15TIRNetworkEvent @ 15 NONAME
-	_ZN20CIRNetworkController30RegisterActiveNetworkObserverLER24MIRActiveNetworkObserver @ 16 NONAME
-	_ZN20CIRNetworkController32RegisterLogoDataTransferTrackerLER12RHTTPSession @ 17 NONAME
-	_ZN20CIRNetworkController5CloseEv @ 18 NONAME
-	_ZN20CIRNetworkController5OpenLEP20MIRNetworkController @ 19 NONAME
-	_ZNK20CIRNetworkController15IsWlanSupportedEv @ 20 NONAME
-	_ZNK20CIRNetworkController16GetNetworkStatusEv @ 21 NONAME
-	_ZNK20CIRNetworkController22IdentifyConnectionTypeEv @ 22 NONAME
-	_ZNK20CIRNetworkController8GetIAPIdERm @ 23 NONAME
-
--- a/internetradio2.0/bmarm/irsessionlogu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-EXPORTS
-	_ZN18CIRReportGenerator10ReportSentEv @ 1  NONAME
-	_ZN18CIRReportGenerator11SessionEndLEi @ 2  NONAME
-	_ZN18CIRReportGenerator12LogSongRecogEv @ 3  NONAME
-	_ZN18CIRReportGenerator13UpdateNmsTypeERK7TDesC16 @ 4  NONAME
-	_ZN18CIRReportGenerator14NmsLogStartedLEv @ 5  NONAME
-	_ZN18CIRReportGenerator15LogServerResultERK7TDesC169TResponse @ 6  NONAME
-	_ZN18CIRReportGenerator15SessionStartedLEv @ 7  NONAME
-	_ZN18CIRReportGenerator15UpdateChannelIDEi @ 8  NONAME
-	_ZN18CIRReportGenerator16HandleStopEventsEi @ 9  NONAME
-	_ZN18CIRReportGenerator16MarkSessionStartEv @ 10  NONAME
-	_ZN18CIRReportGenerator17WriteNmsLogtoXmlLEv @ 11  NONAME
-	_ZN18CIRReportGenerator18UpdateHomeOperatorEi @ 12  NONAME
-	_ZN18CIRReportGenerator18UpdateNmsChannelIDEi @ 13  NONAME
-	_ZN18CIRReportGenerator18UpdateTerminatedByE18TTerminationStatus @ 14  NONAME
-	_ZN18CIRReportGenerator19SetDbStatusObserserEP22MIRLogDbStatusObserver @ 15  NONAME
-	_ZN18CIRReportGenerator19UpdateConnectedFromE14TConnectedFrom @ 16  NONAME
-	_ZN18CIRReportGenerator20UpdateConnectionTypeERK7TDesC16 @ 17  NONAME
-	_ZN18CIRReportGenerator20UpdateCurrentNetworkEi @ 18  NONAME
-	_ZN18CIRReportGenerator21UpdateNmsHomeOperatorEi @ 19  NONAME
-	_ZN18CIRReportGenerator22ReStorePreviousSessionEv @ 20  NONAME
-	_ZN18CIRReportGenerator23ReponseFromISDSObtainedEv @ 21  NONAME
-	_ZN18CIRReportGenerator23UpdateNmsCurrentNetworkEi @ 22  NONAME
-	_ZN18CIRReportGenerator26UpdateCurrentBrowseNetworkEi @ 23  NONAME
-	_ZN18CIRReportGenerator5OpenLEv @ 24  NONAME
-	_ZN18CIRReportGenerator9BrowseUrlERK7TDesC16i @ 25  NONAME
-	_ZN18CIRReportGenerator9LogBrowseERK6TDesC8i @ 26  NONAME
-
--- a/internetradio2.0/bmarm/irsettingsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-EXPORTS
-	_ZN11CIRSettings11SetTimeOutLEi @ 1 NONAME
-	_ZN11CIRSettings14MaxPresetCountEv @ 2 NONAME
-	_ZN11CIRSettings15SetISDSBaseUrlLERK7TDesC16 @ 3 NONAME
-	_ZN11CIRSettings16SetLogRunningNoLEv @ 4 NONAME
-	_ZN11CIRSettings17GetGlobalAdvFlagLEv @ 5 NONAME
-	_ZN11CIRSettings17SetSilencePeriodLEj @ 6 NONAME
-	_ZN11CIRSettings17SetVolumeSettingLEi @ 7 NONAME
-	_ZN11CIRSettings18IsUpdateAvailableLEv @ 8 NONAME
-	_ZN11CIRSettings18SetMaxPresetCountLEi @ 9 NONAME
-	_ZN11CIRSettings18SetStartingViewIdLEm @ 10 NONAME
-	_ZN11CIRSettings18SetTimeCorrectionLEi @ 11 NONAME
-	_ZN11CIRSettings19SetSongHisotryShowLEi @ 12 NONAME
-	_ZN11CIRSettings19SetUpdateAvailableLEv @ 13 NONAME
-	_ZN11CIRSettings20SetPreferredQualityLEi @ 14 NONAME
-	_ZN11CIRSettings21ReSetUpdateAvailableLEv @ 15 NONAME
-	_ZN11CIRSettings22SetSilencePeriodStartLERK7TDesC16 @ 16 NONAME
-	_ZN11CIRSettings25IsFlagTermsAndConditionsLEv @ 17 NONAME
-	_ZN11CIRSettings26SetFlagTermsAndConditionsLEv @ 18 NONAME
-	_ZN11CIRSettings28ReSetFlagTermsAndConditionsLEv @ 19 NONAME
-	_ZN11CIRSettings5OpenLEv @ 20 NONAME
-	_ZN11CIRSettings8SetIRIDLERK7TDesC16 @ 21 NONAME
-	_ZNK11CIRSettings10GetTimeOutEv @ 22 NONAME
-	_ZNK11CIRSettings11PrivatePathEv @ 23 NONAME
-	_ZNK11CIRSettings14TimeCorrectionEv @ 24 NONAME
-	_ZNK11CIRSettings15GetISDSBaseUrlLEv @ 25 NONAME
-	_ZNK11CIRSettings15GetLogRunningNoEv @ 26 NONAME
-	_ZNK11CIRSettings16GetIrappVersionLEv @ 27 NONAME
-	_ZNK11CIRSettings16GetVolumeSettingEv @ 28 NONAME
-	_ZNK11CIRSettings17GetSilencePeriodLEv @ 29 NONAME
-	_ZNK11CIRSettings18GetSongHistoryShowEv @ 30 NONAME
-	_ZNK11CIRSettings18GetStartingViewIdLEv @ 31 NONAME
-	_ZNK11CIRSettings19GetPreferredQualityEv @ 32 NONAME
-	_ZNK11CIRSettings22GetSilencePeriodStartLEv @ 33 NONAME
-	_ZNK11CIRSettings8GetIRIDLEv @ 34 NONAME
-	_ZN11CIRSettings30SetManuallyInputtedStationUrlLERK7TDesC16 @ 35 NONAME
-	_ZN11CIRSettings31SetManuallyInputtedStationNameLERK7TDesC16 @ 36 NONAME
-	_ZNK11CIRSettings30GetManuallyInputtedStationUrlLEv @ 37 NONAME
-	_ZNK11CIRSettings31GetManuallyInputtedStationNameLEv @ 38 NONAME
-
--- a/internetradio2.0/bmarm/irsettingsviewu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-EXPORTS
-	_ZN19CIRSettingsViewBase11DoActivateLERK10TVwsViewId4TUidRK6TDesC8 @ 1 NONAME
-	_ZN19CIRSettingsViewBase12DoDeactivateEv @ 2 NONAME
-	_ZN19CIRSettingsViewBase13ResolveDriveLERK3RFsR4TBufILi256EE @ 3 NONAME
-	_ZN19CIRSettingsViewBase14BaseConstructLEv @ 4 NONAME
-	_ZN19CIRSettingsViewBase14HandleCommandLEi @ 5 NONAME
-	_ZN19CIRSettingsViewBase14LoadResourcesLER19RConeResourceLoaderRK7TDesC16 @ 6 NONAME
-	_ZN19CIRSettingsViewBase22HandleForegroundEventLEi @ 7 NONAME
-	_ZN19CIRSettingsViewBase9SetTitleLEi @ 8 NONAME
-	_ZN19CIRSettingsViewBaseC2Ev @ 9 NONAME
-	_ZN19CIRSettingsViewBaseD0Ev @ 10 NONAME
-	_ZN19CIRSettingsViewBaseD1Ev @ 11 NONAME
-	_ZN19CIRSettingsViewBaseD2Ev @ 12 NONAME
-	_ZN26CIRCommonSettingsContainer11SizeChangedEv @ 13 NONAME
-	_ZN26CIRCommonSettingsContainer14BaseConstructLEv @ 14 NONAME
-	_ZN26CIRCommonSettingsContainer18CreateSettingItemLEi @ 15 NONAME
-	_ZN26CIRCommonSettingsContainer4NewLEv @ 16 NONAME
-	_ZN26CIRCommonSettingsContainer9EditItemLEii @ 17 NONAME
-	_ZN26CIRCommonSettingsContainerC1Ev @ 18 NONAME
-	_ZN26CIRCommonSettingsContainerC2Ev @ 19 NONAME
-	_ZN26CIRCommonSettingsContainerD0Ev @ 20 NONAME
-	_ZN26CIRCommonSettingsContainerD1Ev @ 21 NONAME
-	_ZN26CIRCommonSettingsContainerD2Ev @ 22 NONAME
-	_ZNK19CIRSettingsViewBase11GetCaptionLER6TDes16 @ 23 NONAME
-	_ZNK26CIRCommonSettingsContainer14GetHelpContextER15TCoeHelpContext @ 24 NONAME
-	_ZTI19CIRSettingsViewBase @ 25 NONAME
-	_ZTI26CIRCommonSettingsContainer @ 26 NONAME
-	_ZTV19CIRSettingsViewBase @ 27 NONAME
-	_ZTV26CIRCommonSettingsContainer @ 28 NONAME
-
--- a/internetradio2.0/bmarm/irsonghistoryu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-EXPORTS
-	_ZN18CIRSongHistoryInfo14SetHistoryInfoER6RBuf16S1_S1_S1_iiiS1_S1_S1_ @ 1 NONAME
-	_ZN18CIRSongHistoryInfo4NewLEv @ 2 NONAME
-	_ZN18CIRSongHistoryInfo5NewLCEv @ 3 NONAME
-	_ZN18CIRSongHistoryInfoD0Ev @ 4 NONAME
-	_ZN18CIRSongHistoryInfoD1Ev @ 5 NONAME
-	_ZN18CIRSongHistoryInfoD2Ev @ 6 NONAME
-	_ZN20CIRSongHistoryEngine11SyncHistoryEi @ 7 NONAME
-	_ZN20CIRSongHistoryEngine14GetAllHistoryLER13RPointerArrayI18CIRSongHistoryInfoE @ 8 NONAME
-	_ZN20CIRSongHistoryEngine15ClearAllHistoryEv @ 9 NONAME
-	_ZN20CIRSongHistoryEngine15GetHistoryCountEv @ 10 NONAME
-	_ZN20CIRSongHistoryEngine19UpdateSongHistoryDbEiRK7TDesC16S2_S2_ @ 11 NONAME
-	_ZN20CIRSongHistoryEngine23HandleMetaDataReceivedLERK11CIRMetaData @ 12 NONAME
-	_ZN20CIRSongHistoryEngine4NewLER27MSongHistoryUINotifyHandler @ 13 NONAME
-	_ZN20CIRSongHistoryEngine5NewLCER27MSongHistoryUINotifyHandler @ 14 NONAME
-	_ZN20CIRSongHistoryEngineD0Ev @ 15 NONAME
-	_ZN20CIRSongHistoryEngineD1Ev @ 16 NONAME
-	_ZN20CIRSongHistoryEngineD2Ev @ 17 NONAME
-	_ZNK18CIRSongHistoryInfo10GetBitrateEv @ 18 NONAME
-	_ZNK18CIRSongHistoryInfo11GetImageUrlEv @ 19 NONAME
-	_ZNK18CIRSongHistoryInfo11GetSongInfoEv @ 20 NONAME
-	_ZNK18CIRSongHistoryInfo12GetChannelIdEv @ 21 NONAME
-	_ZNK18CIRSongHistoryInfo12GetStreamUrlEv @ 22 NONAME
-	_ZNK18CIRSongHistoryInfo13GetArtistInfoEv @ 23 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelDescEv @ 24 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelNameEv @ 25 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelTypeEv @ 26 NONAME
-	_ZNK18CIRSongHistoryInfo21GetChannelMusicStatusEv @ 27 NONAME
- 	_ZN20CIRSongHistoryEngine16DeleteOneHistoryEi @ 28 NONAME
-
--- a/internetradio2.0/bmarm/irstreamsourceu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-EXPORTS
-	_ZN12CIRAsfPlayer16DetectAsfChannelERK7TDesC16 @ 1 NONAME
-	_ZN12CIRAsfPlayer4NewLER23MIRStreamSourceObserverR18MIRCtrlCmdObserver @ 2 NONAME
-	_ZN12CIRAsfPlayer4PlayEv @ 3 NONAME
-	_ZN12CIRAsfPlayer4StopEv @ 4 NONAME
-	_ZN12CIRAsfPlayer5PlayLERK7TDesC16 @ 5 NONAME
-	_ZN12CIRAsfPlayer9SetVolumeEi @ 6 NONAME
-	_ZN15CIRStreamSource10ReconnectLERK7TDesC16 @ 7 NONAME
-	_ZN15CIRStreamSource12ContentTypeLEv @ 8 NONAME
-	_ZN15CIRStreamSource13CancelRequestEv @ 9 NONAME
-	_ZN15CIRStreamSource13FilltheBufferER5TDes8 @ 10 NONAME
-	_ZN15CIRStreamSource16ConnectToServerLERK7TDesC16 @ 11 NONAME
-	_ZN15CIRStreamSource4NewLER23MIRStreamSourceObserver @ 12 NONAME
-	_ZNK12CIRAsfPlayer6VolumeEv @ 13 NONAME
-	_ZNK12CIRAsfPlayer9MaxVolumeEv @ 14 NONAME
-	_ZThn4_N15CIRStreamSource13FilltheBufferER5TDes8 @ 15 NONAME
-
--- a/internetradio2.0/bmarm/iruicontrolsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXPORTS
--- a/internetradio2.0/bmarm/irxmlparseru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	_ZN20CIRXMLContentHandler4NewLER17MIRParserObserverR16MIRCacheObserver @ 1 NONAME
-	_ZN20CIRXMLContentHandler9ParseXmlLERK7TDesC16S2_RK19CIRHttpResponseData @ 2 NONAME
-	_ZTI20CIRXMLContentHandler @ 3 NONAME ; #<TI>#
-	_ZTV20CIRXMLContentHandler @ 4 NONAME ; #<VT>#
-
--- a/internetradio2.0/bmarm/isdsclientinterfaceu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-EXPORTS
-	_ZN13CIRIsdsClient10IRGetIRIDLEv @ 1 NONAME
-	_ZN13CIRIsdsClient11IRISDSPostLER4TBufILi256EE @ 2 NONAME
-	_ZN13CIRIsdsClient11SyncPresetLEiRK7TDesC16 @ 3 NONAME
-	_ZN13CIRIsdsClient13GetOtaStatusLERi @ 4 NONAME
-	_ZN13CIRIsdsClient13IRISDSSearchLERK7TDesC16 @ 5 NONAME
-	_ZN13CIRIsdsClient13PurgeOtaInfoLEv @ 6 NONAME
-	_ZN13CIRIsdsClient15GetDataProviderEv @ 7 NONAME
-	_ZN13CIRIsdsClient16ReleaseResourcesEv @ 8 NONAME
-	_ZN13CIRIsdsClient18IRISDSMultiSearchLERK7TDesC16S2_S2_S2_ @ 9 NONAME
-	_ZN13CIRIsdsClient19GetMultiplePresetsLERK6RArrayIiERi @ 10 NONAME
-	_ZN13CIRIsdsClient19IRISDSCancelRequestEv @ 11 NONAME
-	_ZN13CIRIsdsClient21IRIsdsClientIntefaceLENS_25TIRIsdsclientInterfaceIDsE @ 12 NONAME
-	_ZN13CIRIsdsClient21IRIsdsClientIntefaceLEjNS_23TIRIsdsClientInterfacesEi @ 13 NONAME
-	_ZN13CIRIsdsClient22IRIsdsIsChannelCachedLEj @ 14 NONAME
-	_ZN13CIRIsdsClient23IRIsdsIsCategoryCachedLENS_25TIRIsdsclientInterfaceIDsE @ 15 NONAME
-	_ZN13CIRIsdsClient4NewLER21MIsdsResponseObserverRK7TDesC16 @ 16 NONAME
-
--- a/internetradio2.0/bwinscw/iractiveidleengineu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	??1CIRActiveIdleEng@@UAE@XZ @ 1 NONAME ; CIRActiveIdleEng::~CIRActiveIdleEng(void)
-	?NewL@CIRActiveIdleEng@@SAPAV1@AAVMIRActiveIdleEngNotifyHandler@@@Z @ 2 NONAME ; class CIRActiveIdleEng * CIRActiveIdleEng::NewL(class MIRActiveIdleEngNotifyHandler &)
-	?SecondConstructL@CIRActiveIdleEng@@QAEXXZ @ 3 NONAME ; void CIRActiveIdleEng::SecondConstructL(void)
-
--- a/internetradio2.0/bwinscw/ircachemgmtu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-EXPORTS
-	?AddObserverL@CIRCacheMgmt@@QAEXPAVMIRCacheObserver@@@Z @ 1 NONAME ; void CIRCacheMgmt::AddObserverL(class MIRCacheObserver *)
-	?CacheCategoryItemsL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRBrowseCatagoryItems@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 2 NONAME ; void CIRCacheMgmt::CacheCategoryItemsL(class CArrayPtrFlat<class CIRBrowseCatagoryItems> &, class TDesC16 const &, class CIRHttpResponseData const &)
-	?CacheChannelItemsL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRBrowseChannelItems@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 3 NONAME ; void CIRCacheMgmt::CacheChannelItemsL(class CArrayPtrFlat<class CIRBrowseChannelItems> &, class TDesC16 const &, class CIRHttpResponseData const &)
-	?CacheLogoL@CIRCacheMgmt@@QAEXABVTDesC8@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 4 NONAME ; void CIRCacheMgmt::CacheLogoL(class TDesC8 const &, class TDesC16 const &, class CIRHttpResponseData const &)
-	?CacheOtaInfoL@CIRCacheMgmt@@QAEXABVCIROTAUpdate@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 5 NONAME ; void CIRCacheMgmt::CacheOtaInfoL(class CIROTAUpdate const &, class TDesC16 const &, class CIRHttpResponseData const &)
-	?CachePresetItemL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRIsdsPreset@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 6 NONAME ; void CIRCacheMgmt::CachePresetItemL(class CArrayPtrFlat<class CIRIsdsPreset> &, class TDesC16 const &, class CIRHttpResponseData const &)
-	?CheckCacheL@CIRCacheMgmt@@QAEXHABVTDesC16@@HAAH@Z @ 7 NONAME ; void CIRCacheMgmt::CheckCacheL(int, class TDesC16 const &, int, int &)
-	?OpenL@CIRCacheMgmt@@SAPAV1@AAVMIRCacheObserver@@@Z @ 8 NONAME ; class CIRCacheMgmt * CIRCacheMgmt::OpenL(class MIRCacheObserver &)
-	?RemoveObserver@CIRCacheMgmt@@QAEXPAVMIRCacheObserver@@@Z @ 9 NONAME ; void CIRCacheMgmt::RemoveObserver(class MIRCacheObserver *)
-	?RemoveOtaInfoL@CIRCacheMgmt@@QAEXXZ @ 10 NONAME ; void CIRCacheMgmt::RemoveOtaInfoL(void)
-	?UpdateTrustPeriodL@CIRCacheMgmt@@QAEXHABVTDesC16@@AAVCIRHttpResponseData@@@Z @ 11 NONAME ; void CIRCacheMgmt::UpdateTrustPeriodL(int, class TDesC16 const &, class CIRHttpResponseData &)
-
--- a/internetradio2.0/bwinscw/ircommandchannelu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXPORTS
-	?AudioFadeInOut@CIRCtrlCmdObserver@@QAEXAAW4TIRControlCommmand@@H@Z @ 1 NONAME ; void CIRCtrlCmdObserver::AudioFadeInOut(enum TIRControlCommmand &, int)
-	?DoAudioFadeOut@CIRCtrlCmdObserver@@QAEXXZ @ 2 NONAME ; void CIRCtrlCmdObserver::DoAudioFadeOut(void)
-	?FetchVolume@CIRCtrlCmdObserver@@QAEHXZ @ 3 NONAME ; int CIRCtrlCmdObserver::FetchVolume(void)
-	?FilltheBuffer@CIRCtrlCmdObserver@@QAEXAAVTDes8@@@Z @ 4 NONAME ; void CIRCtrlCmdObserver::FilltheBuffer(class TDes8 &)
-	?NewL@CIRCtrlCmdObserver@@SAPAV1@PAVMIRCtrlCmdObserver@@PAVMIRStreamFill@@@Z @ 5 NONAME ; class CIRCtrlCmdObserver * CIRCtrlCmdObserver::NewL(class MIRCtrlCmdObserver *, class MIRStreamFill *)
-	?NewLC@CIRCtrlCmdObserver@@SAPAV1@PAVMIRCtrlCmdObserver@@PAVMIRStreamFill@@@Z @ 6 NONAME ; class CIRCtrlCmdObserver * CIRCtrlCmdObserver::NewLC(class MIRCtrlCmdObserver *, class MIRStreamFill *)
-	?SentRequest@CIRCtrlCmdObserver@@QAEXW4TIRControlCommmand@@H@Z @ 7 NONAME ; void CIRCtrlCmdObserver::SentRequest(enum TIRControlCommmand, int)
-
--- a/internetradio2.0/bwinscw/irdataprovideru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-EXPORTS
-	??1CIRLogoDownloadEngine@@UAE@XZ @ 1  NONAME ; CIRLogoDownloadEngine::~CIRLogoDownloadEngine(void)
-	?CancelTransaction@CIRLogoDownloadEngine@@QAEXXZ @ 2  NONAME ; void CIRLogoDownloadEngine::CancelTransaction(void)
-	?GetCacheLogoL@CIRLogoDownloadEngine@@QAEXABVTDesC16@@AAH@Z @ 3  NONAME ; void CIRLogoDownloadEngine::GetCacheLogoL(class TDesC16 const &, int &)
-	?GetHttpDataProvider@CIRDataProvider@@QAEPAVCIRHttpDataProvider@@XZ @ 4  NONAME ; class CIRHttpDataProvider * CIRDataProvider::GetHttpDataProvider(void)
-	?GetLogoDownloadEngine@CIRHttpDataProvider@@QAEPAVCIRLogoDownloadEngine@@XZ @ 5  NONAME ; class CIRLogoDownloadEngine * CIRHttpDataProvider::GetLogoDownloadEngine(void)
-	?IRHttpCancelRequest@CIRDataProvider@@QAEXXZ @ 6  NONAME ; void CIRDataProvider::IRHttpCancelRequest(void)
-	?IRHttpIssueRequestL@CIRDataProvider@@QAEXAAVCIRHttpRequestData@@@Z @ 7  NONAME ; void CIRDataProvider::IRHttpIssueRequestL(class CIRHttpRequestData &)
-	?IsRunning@CIRLogoDownloadEngine@@QBEHXZ @ 8  NONAME ; int CIRLogoDownloadEngine::IsRunning(void) const
-	?NewL@CIRDataProvider@@SAPAV1@AAVMIRDataProviderObserver@@@Z @ 9  NONAME ; class CIRDataProvider * CIRDataProvider::NewL(class MIRDataProviderObserver &)
-	?NewL@CIRDataProvider@@SAPAV1@AAVMIRDataProviderObserver@@ABVTDesC16@@@Z @ 10  NONAME ; class CIRDataProvider * CIRDataProvider::NewL(class MIRDataProviderObserver &, class TDesC16 const &)
-	?NewL@CIRLogoDownloadEngine@@SAPAV1@XZ @ 11  NONAME ; class CIRLogoDownloadEngine * CIRLogoDownloadEngine::NewL(void)
-	?ReleaseResources@CIRDataProvider@@QAEXXZ @ 12  NONAME ; void CIRDataProvider::ReleaseResources(void)
-	?SendCacheLogo@CIRLogoDownloadEngine@@QAEAAVTDesC8@@XZ @ 13  NONAME ; class TDesC8 & CIRLogoDownloadEngine::SendCacheLogo(void)
-	?SendPresetWithLogoL@CIRLogoDownloadEngine@@QAEXXZ @ 14  NONAME ; void CIRLogoDownloadEngine::SendPresetWithLogoL(void)
-	?SendRequestL@CIRLogoDownloadEngine@@QAEXPAVCIRIsdsPreset@@HH@Z @ 15  NONAME ; void CIRLogoDownloadEngine::SendRequestL(class CIRIsdsPreset *, int, int)
-	?SendRequestL@CIRLogoDownloadEngine@@QAEXPAVCIRIsdsPreset@@PAVMLogoDownloadObserver@@HHH@Z @ 16  NONAME ; void CIRLogoDownloadEngine::SendRequestL(class CIRIsdsPreset *, class MLogoDownloadObserver *, int, int, int)
-	?isLogoCachedL@CIRLogoDownloadEngine@@QAEHPAVCIRIsdsPreset@@HH@Z @ 17  NONAME ; int CIRLogoDownloadEngine::isLogoCachedL(class CIRIsdsPreset *, int, int)
-
--- a/internetradio2.0/bwinscw/irdatastructuresu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-EXPORTS
-	?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 Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-EXPORTS
-	?AddObserver@CIRFavoritesDb@@QAEHABVMPSPresetObserver@@@Z @ 1  NONAME ; int CIRFavoritesDb::AddObserver(class MPSPresetObserver const &)
-	?AddPresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@AAHH@Z @ 2  NONAME ; void CIRFavoritesDb::AddPresetL(class CIRIsdsPreset &, int &, int)
-	?AddPresetL@CIRFavoritesDb@@QAEXABVTDesC16@@0AAHH@Z @ 3  NONAME ; void CIRFavoritesDb::AddPresetL(class TDesC16 const &, class TDesC16 const &, int &, int)
-	?DeletePresetL@CIRFavoritesDb@@QAEXH@Z @ 4  NONAME ; void CIRFavoritesDb::DeletePresetL(int)
-	?EmptyPresetCount@CIRFavoritesDb@@QBEHXZ @ 5  NONAME ; int CIRFavoritesDb::EmptyPresetCount(void) const
-	?GetAllPreset@CIRFavoritesDb@@QAEXXZ @ 6  NONAME ; void CIRFavoritesDb::GetAllPreset(void)
-	?GetMoveStatus@CIRFavoritesDb@@QAEHXZ @ 7  NONAME ; int CIRFavoritesDb::GetMoveStatus(void)
-	?GetNextPreset@CIRFavoritesDb@@QAEHH@Z @ 8  NONAME ; int CIRFavoritesDb::GetNextPreset(int)
-	?GetPreviousPreset@CIRFavoritesDb@@QAEHH@Z @ 9  NONAME ; int CIRFavoritesDb::GetPreviousPreset(int)
-	?HandlePresetChangedL@CIRFavoritesDb@@EAEXHVTUid@@W4TPSReason@MPSPresetObserver@@@Z @ 10  NONAME ; void CIRFavoritesDb::HandlePresetChangedL(int, class TUid, enum MPSPresetObserver::TPSReason)
-	?MakePresetUserDefinedL@CIRFavoritesDb@@QAEXHH@Z @ 11  NONAME ; void CIRFavoritesDb::MakePresetUserDefinedL(int, int)
-	?MaxPresetCount@CIRFavoritesDb@@QAEHXZ @ 12  NONAME ; int CIRFavoritesDb::MaxPresetCount(void)
-	?NewL@CIRFavoritesDb@@SAPAV1@XZ @ 13  NONAME ; class CIRFavoritesDb * CIRFavoritesDb::NewL(void)
-	?PresetById@CIRFavoritesDb@@QAEPAVCIRPreset@@H@Z @ 14  NONAME ; class CIRPreset * CIRFavoritesDb::PresetById(int)
-	?PresetByIndex@CIRFavoritesDb@@QAEPAVCIRPreset@@H@Z @ 15  NONAME ; class CIRPreset * CIRFavoritesDb::PresetByIndex(int)
-	?Presets@CIRFavoritesDb@@QBEABV?$RPointerArray@VCIRPreset@@@@XZ @ 16  NONAME ; class RPointerArray<class CIRPreset> const & CIRFavoritesDb::Presets(void) const
-	?RemoveObserver@CIRFavoritesDb@@QAEXABVMPSPresetObserver@@@Z @ 17  NONAME ; void CIRFavoritesDb::RemoveObserver(class MPSPresetObserver const &)
-	?ReplacePresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@@Z @ 18  NONAME ; void CIRFavoritesDb::ReplacePresetL(class CIRIsdsPreset &)
-	?ReplaceUserDefinedPresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@@Z @ 19  NONAME ; void CIRFavoritesDb::ReplaceUserDefinedPresetL(class CIRIsdsPreset &)
-	?SearchPreset@CIRFavoritesDb@@QAEHHH@Z @ 20  NONAME ; int CIRFavoritesDb::SearchPreset(int, int)
-	?SetMoveStatus@CIRFavoritesDb@@QAEXH@Z @ 21  NONAME ; void CIRFavoritesDb::SetMoveStatus(int)
-	?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 &)
-        ?RenamePresetL@CIRFavoritesDb@@QAEHABVCIRIsdsPreset@@ABVTDesC16@@@Z @ 25  NONAME ; int CIRFavoritesDb::RenamePresetL(class CIRIsdsPreset const &, class TDesC16 const &)
--- a/internetradio2.0/bwinscw/irgeneralsettings200u.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
-
--- a/internetradio2.0/bwinscw/irlogutility.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-EXPORTS
-	?NewL@IRLogger@@SAPAV1@XZ @ 1 NONAME ; class IRLogger * IRLogger::NewL(void)
-	?NewLC@IRLogger@@SAPAV1@XZ @ 2 NONAME ; class IRLogger * IRLogger::NewLC(void)
-	?Version@IRLogger@@QBE?AVTVersion@@XZ @ 3 NONAME ; class TVersion IRLogger::Version(void) const
-	?write@IRLogger@@SAXABVTDesC16@@0000@Z @ 4 NONAME ; void IRLogger::write(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?write@IRLogger@@SAXABVTDesC16@@0@Z @ 5 NONAME ; void IRLogger::write(class TDesC16 const &, class TDesC16 const &)
-
--- a/internetradio2.0/bwinscw/irmcpplugin100u.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
-
--- a/internetradio2.0/bwinscw/irnetworkcontrolleru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-EXPORTS
-	?GetUAProfString@CIRNetworkController@@QAEPAVHBufC8@@XZ @ 1  NONAME ; class HBufC8 * CIRNetworkController::GetUAProfString(void)
-	?GetWapProfString@CIRNetworkController@@QAEPAVHBufC8@@XZ @ 2  NONAME ; class HBufC8 * CIRNetworkController::GetWapProfString(void)
-	?IsOfflineMode@CIRNetworkController@@QAEHXZ @ 3  NONAME ; int CIRNetworkController::IsOfflineMode(void)
-	?GetIRSocketServer@CIRNetworkController@@QAEAAVRSocketServ@@XZ @ 4  NONAME ; class RSocketServ & CIRNetworkController::GetIRSocketServer(void)
-	?IsHandingOverConnection@CIRNetworkController@@QAEHXZ @ 5  NONAME ; int CIRNetworkController::IsHandingOverConnection(void)
-	?GetIAPId@CIRNetworkController@@QBEHAAK@Z @ 6  NONAME ; int CIRNetworkController::GetIAPId(unsigned long &) const
-	?RegisterActiveNetworkObserverL@CIRNetworkController@@QAEXAAVMIRActiveNetworkObserver@@@Z @ 7  NONAME ; void CIRNetworkController::RegisterActiveNetworkObserverL(class MIRActiveNetworkObserver &)
-	?IdentifyConnectionType@CIRNetworkController@@QBE?AW4TIRConnectionType@@XZ @ 8  NONAME ; enum TIRConnectionType CIRNetworkController::IdentifyConnectionType(void) const
-	?GetNetworkStatus@CIRNetworkController@@QBEHXZ @ 9  NONAME ; int CIRNetworkController::GetNetworkStatus(void) const
-	?ResetConnectionStatus@CIRNetworkController@@QAEXXZ @ 10  NONAME ; void CIRNetworkController::ResetConnectionStatus(void)
-	?DeleteActiveNetworkObserver@CIRNetworkController@@QAEXAAVMIRActiveNetworkObserver@@@Z @ 11  NONAME ; void CIRNetworkController::DeleteActiveNetworkObserver(class MIRActiveNetworkObserver &)
-	?GetIRConnection@CIRNetworkController@@QAEAAVRConnection@@XZ @ 12  NONAME ; class RConnection & CIRNetworkController::GetIRConnection(void)
-	?OpenL@CIRNetworkController@@SAPAV1@PAVMIRNetworkController@@@Z @ 13  NONAME ; class CIRNetworkController * CIRNetworkController::OpenL(class MIRNetworkController *)
-	?NewL@CIRNetworkObserver@@SAPAV1@PAVCIRNetworkController@@@Z @ 14  NONAME ; class CIRNetworkObserver * CIRNetworkObserver::NewL(class CIRNetworkController *)
-	?CancelConnecting@CIRNetworkController@@QAEXXZ @ 15  NONAME ; void CIRNetworkController::CancelConnecting(void)
-	?ChooseAccessPointL@CIRNetworkController@@QAEXH@Z @ 16  NONAME ; void CIRNetworkController::ChooseAccessPointL(int)
-	?DataTransferTracker@CIRNetworkController@@QAEAAVMIRDataTransferTracker@@XZ @ 17  NONAME ; class MIRDataTransferTracker & CIRNetworkController::DataTransferTracker(void)
-	?NotifyActiveNetworkObserversL@CIRNetworkController@@QAEXW4TIRNetworkEvent@@@Z @ 18  NONAME ; void CIRNetworkController::NotifyActiveNetworkObserversL(enum TIRNetworkEvent)
-	?InitializeHttpSessionL@CIRNetworkController@@QAEXABVRHTTPSession@@W4TIRTransferCategory@MIRDataTransferTracker@@@Z @ 19  NONAME ; void CIRNetworkController::InitializeHttpSessionL(class RHTTPSession const &, enum MIRDataTransferTracker::TIRTransferCategory)
-	?IsWlanSupported@CIRNetworkController@@QBEHXZ @ 20  NONAME ; int CIRNetworkController::IsWlanSupported(void) const
-	?Close@CIRNetworkController@@QAEXXZ @ 21  NONAME ; void CIRNetworkController::Close(void)
-	?RegisterLogoDataTransferTrackerL@CIRNetworkController@@QAEXAAVRHTTPSession@@@Z @ 22  NONAME ; void CIRNetworkController::RegisterLogoDataTransferTrackerL(class RHTTPSession &)
-	?LogoDataTransferTracker@CIRNetworkController@@QAEAAVMIRDataTransferTracker@@XZ @ 23  NONAME ; class MIRDataTransferTracker & CIRNetworkController::LogoDataTransferTracker(void)
-
--- a/internetradio2.0/bwinscw/irsessionlogu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-EXPORTS
-	?BrowseUrl@CIRReportGenerator@@QAEXABVTDesC16@@H@Z @ 1  NONAME ; void CIRReportGenerator::BrowseUrl(class TDesC16 const &, int)
-	?HandleStopEvents@CIRReportGenerator@@QAEXH@Z @ 2  NONAME ; void CIRReportGenerator::HandleStopEvents(int)
-	?LogBrowse@CIRReportGenerator@@QAEXABVTDesC8@@H@Z @ 3  NONAME ; void CIRReportGenerator::LogBrowse(class TDesC8 const &, int)
-	?LogServerResult@CIRReportGenerator@@QAEXABVTDesC16@@W4TResponse@@@Z @ 4  NONAME ; void CIRReportGenerator::LogServerResult(class TDesC16 const &, enum TResponse)
-	?LogSongRecog@CIRReportGenerator@@QAEXXZ @ 5  NONAME ; void CIRReportGenerator::LogSongRecog(void)
-	?MarkSessionStart@CIRReportGenerator@@QAEXXZ @ 6  NONAME ; void CIRReportGenerator::MarkSessionStart(void)
-	?NmsLogStartedL@CIRReportGenerator@@QAEXXZ @ 7  NONAME ; void CIRReportGenerator::NmsLogStartedL(void)
-	?OpenL@CIRReportGenerator@@SAPAV1@XZ @ 8  NONAME ; class CIRReportGenerator * CIRReportGenerator::OpenL(void)
-	?ReStorePreviousSession@CIRReportGenerator@@QAEHXZ @ 9  NONAME ; int CIRReportGenerator::ReStorePreviousSession(void)
-	?ReponseFromISDSObtained@CIRReportGenerator@@QAEXXZ @ 10  NONAME ; void CIRReportGenerator::ReponseFromISDSObtained(void)
-	?ReportSent@CIRReportGenerator@@QAEXXZ @ 11  NONAME ; void CIRReportGenerator::ReportSent(void)
-	?SessionEndL@CIRReportGenerator@@QAEXH@Z @ 12  NONAME ; void CIRReportGenerator::SessionEndL(int)
-	?SessionStartedL@CIRReportGenerator@@QAEXXZ @ 13  NONAME ; void CIRReportGenerator::SessionStartedL(void)
-	?SetDbStatusObserser@CIRReportGenerator@@QAEXPAVMIRLogDbStatusObserver@@@Z @ 14  NONAME ; void CIRReportGenerator::SetDbStatusObserser(class MIRLogDbStatusObserver *)
-	?UpdateChannelID@CIRReportGenerator@@QAEXH@Z @ 15  NONAME ; void CIRReportGenerator::UpdateChannelID(int)
-	?UpdateConnectedFrom@CIRReportGenerator@@QAEXW4TConnectedFrom@@@Z @ 16  NONAME ; void CIRReportGenerator::UpdateConnectedFrom(enum TConnectedFrom)
-	?UpdateConnectionType@CIRReportGenerator@@QAEXABVTDesC16@@@Z @ 17  NONAME ; void CIRReportGenerator::UpdateConnectionType(class TDesC16 const &)
-	?UpdateCurrentBrowseNetwork@CIRReportGenerator@@QAEXH@Z @ 18  NONAME ; void CIRReportGenerator::UpdateCurrentBrowseNetwork(int)
-	?UpdateCurrentNetwork@CIRReportGenerator@@QAEXH@Z @ 19  NONAME ; void CIRReportGenerator::UpdateCurrentNetwork(int)
-	?UpdateHomeOperator@CIRReportGenerator@@QAEXH@Z @ 20  NONAME ; void CIRReportGenerator::UpdateHomeOperator(int)
-	?UpdateNmsChannelID@CIRReportGenerator@@QAEXH@Z @ 21  NONAME ; void CIRReportGenerator::UpdateNmsChannelID(int)
-	?UpdateNmsCurrentNetwork@CIRReportGenerator@@QAEXH@Z @ 22  NONAME ; void CIRReportGenerator::UpdateNmsCurrentNetwork(int)
-	?UpdateNmsHomeOperator@CIRReportGenerator@@QAEXH@Z @ 23  NONAME ; void CIRReportGenerator::UpdateNmsHomeOperator(int)
-	?UpdateNmsType@CIRReportGenerator@@QAEXABVTDesC16@@@Z @ 24  NONAME ; void CIRReportGenerator::UpdateNmsType(class TDesC16 const &)
-	?UpdateTerminatedBy@CIRReportGenerator@@QAEXW4TTerminationStatus@@@Z @ 25  NONAME ; void CIRReportGenerator::UpdateTerminatedBy(enum TTerminationStatus)
-	?WriteNmsLogtoXmlL@CIRReportGenerator@@QAEXXZ @ 26  NONAME ; void CIRReportGenerator::WriteNmsLogtoXmlL(void)
-
--- a/internetradio2.0/bwinscw/irsettingsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-EXPORTS
-	?GetStartingViewIdL@CIRSettings@@QBEKXZ @ 1  NONAME ; unsigned long CIRSettings::GetStartingViewIdL(void) const
-	?SetTimeOutL@CIRSettings@@QAEXH@Z @ 2  NONAME ; void CIRSettings::SetTimeOutL(int)
-	?SetPreferredQualityL@CIRSettings@@QAEXH@Z @ 3  NONAME ; void CIRSettings::SetPreferredQualityL(int)
-	?GetSilencePeriodStartL@CIRSettings@@QBEABVTDesC16@@XZ @ 4  NONAME ; class TDesC16 const & CIRSettings::GetSilencePeriodStartL(void) const
-	?SetStartingViewIdL@CIRSettings@@QAEXK@Z @ 5  NONAME ; void CIRSettings::SetStartingViewIdL(unsigned long)
-	?MaxPresetCount@CIRSettings@@QAEHXZ @ 6  NONAME ; int CIRSettings::MaxPresetCount(void)
-	?GetISDSBaseUrlL@CIRSettings@@QBEABVTDesC16@@XZ @ 7  NONAME ; class TDesC16 const & CIRSettings::GetISDSBaseUrlL(void) const
-	?IsUpdateAvailableL@CIRSettings@@QAEHXZ @ 8  NONAME ; int CIRSettings::IsUpdateAvailableL(void)
-	?GetIrappVersionL@CIRSettings@@QBEABVTDesC16@@XZ @ 9  NONAME ; class TDesC16 const & CIRSettings::GetIrappVersionL(void) const
-	?OpenL@CIRSettings@@SAPAV1@XZ @ 10  NONAME ; class CIRSettings * CIRSettings::OpenL(void)
-	?IsFlagTermsAndConditionsL@CIRSettings@@QAEHXZ @ 11  NONAME ; int CIRSettings::IsFlagTermsAndConditionsL(void)
-	?SetSongHisotryShowL@CIRSettings@@QAEXH@Z @ 12  NONAME ; void CIRSettings::SetSongHisotryShowL(int)
-	?SetSilencePeriodL@CIRSettings@@QAEXI@Z @ 13  NONAME ; void CIRSettings::SetSilencePeriodL(unsigned int)
-	?ReSetFlagTermsAndConditionsL@CIRSettings@@QAEXXZ @ 14  NONAME ; void CIRSettings::ReSetFlagTermsAndConditionsL(void)
-	?GetLogRunningNo@CIRSettings@@QBEHXZ @ 15  NONAME ; int CIRSettings::GetLogRunningNo(void) const
-	?SetMaxPresetCountL@CIRSettings@@QAEXH@Z @ 16  NONAME ; void CIRSettings::SetMaxPresetCountL(int)
-	?SetISDSBaseUrlL@CIRSettings@@QAEXABVTDesC16@@@Z @ 17  NONAME ; void CIRSettings::SetISDSBaseUrlL(class TDesC16 const &)
-	?SetTimeCorrectionL@CIRSettings@@QAEXH@Z @ 18  NONAME ; void CIRSettings::SetTimeCorrectionL(int)
-	?TimeCorrection@CIRSettings@@QBEHXZ @ 19  NONAME ; int CIRSettings::TimeCorrection(void) const
-	?SetFlagTermsAndConditionsL@CIRSettings@@QAEXXZ @ 20  NONAME ; void CIRSettings::SetFlagTermsAndConditionsL(void)
-	?GetSilencePeriodL@CIRSettings@@QBEIXZ @ 21  NONAME ; unsigned int CIRSettings::GetSilencePeriodL(void) const
-	?GetSongHistoryShow@CIRSettings@@QBEHXZ @ 22  NONAME ; int CIRSettings::GetSongHistoryShow(void) const
-	?PrivatePath@CIRSettings@@QBEABVTDesC16@@XZ @ 23  NONAME ; class TDesC16 const & CIRSettings::PrivatePath(void) const
-	?GetPreferredQuality@CIRSettings@@QBEHXZ @ 24  NONAME ; int CIRSettings::GetPreferredQuality(void) const
-	?GetGlobalAdvFlagL@CIRSettings@@QAEHXZ @ 25  NONAME ; int CIRSettings::GetGlobalAdvFlagL(void)
-	?GetVolumeSetting@CIRSettings@@QBEHXZ @ 26  NONAME ; int CIRSettings::GetVolumeSetting(void) const
-	?SetUpdateAvailableL@CIRSettings@@QAEXXZ @ 27  NONAME ; void CIRSettings::SetUpdateAvailableL(void)
-	?SetLogRunningNoL@CIRSettings@@QAEXXZ @ 28  NONAME ; void CIRSettings::SetLogRunningNoL(void)
-	?GetIRIDL@CIRSettings@@QBEABVTDesC16@@XZ @ 29  NONAME ; class TDesC16 const & CIRSettings::GetIRIDL(void) const
-	?SetSilencePeriodStartL@CIRSettings@@QAEXABVTDesC16@@@Z @ 30  NONAME ; void CIRSettings::SetSilencePeriodStartL(class TDesC16 const &)
-	?GetTimeOut@CIRSettings@@QBEHXZ @ 31  NONAME ; int CIRSettings::GetTimeOut(void) const
-	?SetVolumeSettingL@CIRSettings@@QAEXH@Z @ 32  NONAME ; void CIRSettings::SetVolumeSettingL(int)
-	?SetIRIDL@CIRSettings@@QAEXABVTDesC16@@@Z @ 33  NONAME ; void CIRSettings::SetIRIDL(class TDesC16 const &)
-	?ReSetUpdateAvailableL@CIRSettings@@QAEXXZ @ 34  NONAME ; void CIRSettings::ReSetUpdateAvailableL(void)
-	?GetManuallyInputtedStationNameL@CIRSettings@@QBEABVTDesC16@@XZ @ 35  NONAME ; class TDesC16 const & CIRSettings::GetManuallyInputtedStationNameL(void) const
-	?GetManuallyInputtedStationUrlL@CIRSettings@@QBEABVTDesC16@@XZ @ 36  NONAME ; class TDesC16 const & CIRSettings::GetManuallyInputtedStationUrlL(void) const
-	?SetManuallyInputtedStationUrlL@CIRSettings@@QAEXABVTDesC16@@@Z @ 37  NONAME ; void CIRSettings::SetManuallyInputtedStationUrlL(class TDesC16 const &)
-	?SetManuallyInputtedStationNameL@CIRSettings@@QAEXABVTDesC16@@@Z @ 38  NONAME ; void CIRSettings::SetManuallyInputtedStationNameL(class TDesC16 const &)
-
--- a/internetradio2.0/bwinscw/irsettingsviewu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-EXPORTS
-	??0CIRCommonSettingsContainer@@IAE@XZ @ 1 NONAME ; CIRCommonSettingsContainer::CIRCommonSettingsContainer(void)
-	??0CIRSettingsViewBase@@IAE@XZ @ 2 NONAME ; CIRSettingsViewBase::CIRSettingsViewBase(void)
-	??1CIRCommonSettingsContainer@@UAE@XZ @ 3 NONAME ; CIRCommonSettingsContainer::~CIRCommonSettingsContainer(void)
-	??1CIRSettingsViewBase@@UAE@XZ @ 4 NONAME ; CIRSettingsViewBase::~CIRSettingsViewBase(void)
-	?BaseConstructL@CIRCommonSettingsContainer@@IAEXXZ @ 5 NONAME ; void CIRCommonSettingsContainer::BaseConstructL(void)
-	?BaseConstructL@CIRSettingsViewBase@@IAEXXZ @ 6 NONAME ; void CIRSettingsViewBase::BaseConstructL(void)
-	?CreateSettingItemL@CIRCommonSettingsContainer@@MAEPAVCAknSettingItem@@H@Z @ 7 NONAME ; class CAknSettingItem * CIRCommonSettingsContainer::CreateSettingItemL(int)
-	?DoActivateL@CIRSettingsViewBase@@MAEXABVTVwsViewId@@VTUid@@ABVTDesC8@@@Z @ 8 NONAME ; void CIRSettingsViewBase::DoActivateL(class TVwsViewId const &, class TUid, class TDesC8 const &)
-	?DoDeactivate@CIRSettingsViewBase@@MAEXXZ @ 9 NONAME ; void CIRSettingsViewBase::DoDeactivate(void)
-	?EditItemL@CIRCommonSettingsContainer@@MAEXHH@Z @ 10 NONAME ; void CIRCommonSettingsContainer::EditItemL(int, int)
-	?GetCaptionL@CIRSettingsViewBase@@MBEXAAVTDes16@@@Z @ 11 NONAME ; void CIRSettingsViewBase::GetCaptionL(class TDes16 &) const
-	?GetHelpContext@CIRCommonSettingsContainer@@MBEXAAVTCoeHelpContext@@@Z @ 12 NONAME ; void CIRCommonSettingsContainer::GetHelpContext(class TCoeHelpContext &) const
-	?HandleCommandL@CIRSettingsViewBase@@MAEXH@Z @ 13 NONAME ; void CIRSettingsViewBase::HandleCommandL(int)
-	?HandleForegroundEventL@CIRSettingsViewBase@@UAEXH@Z @ 14 NONAME ; void CIRSettingsViewBase::HandleForegroundEventL(int)
-	?LoadResourcesL@CIRSettingsViewBase@@IAEXAAVRConeResourceLoader@@ABVTDesC16@@@Z @ 15 NONAME ; void CIRSettingsViewBase::LoadResourcesL(class RConeResourceLoader &, class TDesC16 const &)
-	?NewL@CIRCommonSettingsContainer@@SAPAV1@XZ @ 16 NONAME ; class CIRCommonSettingsContainer * CIRCommonSettingsContainer::NewL(void)
-	?ResolveDriveL@CIRSettingsViewBase@@QAEXABVRFs@@AAV?$TBuf@$0BAA@@@@Z @ 17 NONAME ; void CIRSettingsViewBase::ResolveDriveL(class RFs const &, class TBuf<256> &)
-	?SetTitleL@CIRSettingsViewBase@@QAEXH@Z @ 18 NONAME ; void CIRSettingsViewBase::SetTitleL(int)
-	?SizeChanged@CIRCommonSettingsContainer@@MAEXXZ @ 19 NONAME ; void CIRCommonSettingsContainer::SizeChanged(void)
-
--- a/internetradio2.0/bwinscw/irsonghistoryu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-EXPORTS
-	??1CIRSongHistoryEngine@@UAE@XZ @ 1  NONAME ; CIRSongHistoryEngine::~CIRSongHistoryEngine(void)
-	??1CIRSongHistoryInfo@@UAE@XZ @ 2  NONAME ; CIRSongHistoryInfo::~CIRSongHistoryInfo(void)
-	?ClearAllHistory@CIRSongHistoryEngine@@QAEHXZ @ 3  NONAME ; int CIRSongHistoryEngine::ClearAllHistory(void)
-	?GetAllHistoryL@CIRSongHistoryEngine@@QAEXAAV?$RPointerArray@VCIRSongHistoryInfo@@@@@Z @ 4  NONAME ; void CIRSongHistoryEngine::GetAllHistoryL(class RPointerArray<class CIRSongHistoryInfo> &)
-	?GetArtistInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 5  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetArtistInfo(void) const
-	?GetChannelDesc@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 6  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelDesc(void) const
-	?GetChannelId@CIRSongHistoryInfo@@QBEHXZ @ 7  NONAME ; int CIRSongHistoryInfo::GetChannelId(void) const
-	?GetChannelMusicStatus@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 8  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelMusicStatus(void) const
-	?GetChannelName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 9  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelName(void) const
-	?GetChannelType@CIRSongHistoryInfo@@QBEHXZ @ 10  NONAME ; int CIRSongHistoryInfo::GetChannelType(void) const
-	?GetHistoryCount@CIRSongHistoryEngine@@QAEHXZ @ 11  NONAME ; int CIRSongHistoryEngine::GetHistoryCount(void)
-	?GetSongInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 12  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetSongInfo(void) const
-	?GetStreamUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 13  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetStreamUrl(void) const
-	?HandleMetaDataReceivedL@CIRSongHistoryEngine@@QAEXABVCIRMetaData@@@Z @ 14  NONAME ; void CIRSongHistoryEngine::HandleMetaDataReceivedL(class CIRMetaData const &)
-	?NewL@CIRSongHistoryEngine@@SAPAV1@AAVMSongHistoryUINotifyHandler@@@Z @ 15  NONAME ; class CIRSongHistoryEngine * CIRSongHistoryEngine::NewL(class MSongHistoryUINotifyHandler &)
-	?NewL@CIRSongHistoryInfo@@SAPAV1@XZ @ 16  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewL(void)
-	?NewLC@CIRSongHistoryEngine@@SAPAV1@AAVMSongHistoryUINotifyHandler@@@Z @ 17  NONAME ; class CIRSongHistoryEngine * CIRSongHistoryEngine::NewLC(class MSongHistoryUINotifyHandler &)
-	?NewLC@CIRSongHistoryInfo@@SAPAV1@XZ @ 18  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC(void)
-	?SyncHistory@CIRSongHistoryEngine@@QAEHH@Z @ 19  NONAME ; int CIRSongHistoryEngine::SyncHistory(int)
-	?UpdateSongHistoryDb@CIRSongHistoryEngine@@QAEXHABVTDesC16@@00@Z @ 20  NONAME ; void CIRSongHistoryEngine::UpdateSongHistoryDb(int, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?GetBitrate@CIRSongHistoryInfo@@QBEHXZ @ 21  NONAME ; int CIRSongHistoryInfo::GetBitrate(void) const
-	?GetImageUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 22  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetImageUrl(void) const
-	?SetHistoryInfo@CIRSongHistoryInfo@@QAEXAAVRBuf16@@000HHH000@Z @ 23  NONAME ; void CIRSongHistoryInfo::SetHistoryInfo(class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, int, int, int, class RBuf16 &, class RBuf16 &, class RBuf16 &)
- 	?DeleteOneHistory@CIRSongHistoryEngine@@QAEHH@Z @ 24  NONAME ; int CIRSongHistoryEngine::DeleteOneHistory(int)
-	_E32Dll=__E32Dll	; Entry point for emulation
-
--- a/internetradio2.0/bwinscw/irstreamsourceu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-EXPORTS
-	?CancelRequest@CIRStreamSource@@QAEXXZ @ 1 NONAME ; void CIRStreamSource::CancelRequest(void)
-	?ConnectToServerL@CIRStreamSource@@QAEXABVTDesC16@@@Z @ 2 NONAME ; void CIRStreamSource::ConnectToServerL(class TDesC16 const &)
-	?ContentTypeL@CIRStreamSource@@QAEABVTDesC8@@XZ @ 3 NONAME ; class TDesC8 const & CIRStreamSource::ContentTypeL(void)
-	?FilltheBuffer@CIRStreamSource@@UAEXAAVTDes8@@@Z @ 4 NONAME ; void CIRStreamSource::FilltheBuffer(class TDes8 &)
-	?NewL@CIRStreamSource@@SAPAV1@AAVMIRStreamSourceObserver@@@Z @ 5 NONAME ; class CIRStreamSource * CIRStreamSource::NewL(class MIRStreamSourceObserver &)
-	?ReconnectL@CIRStreamSource@@QAEXABVTDesC16@@@Z @ 6 NONAME ; void CIRStreamSource::ReconnectL(class TDesC16 const &)
-	?DetectAsfChannel@CIRAsfPlayer@@SAHABVTDesC16@@@Z @ 7 NONAME ; int CIRAsfPlayer::DetectAsfChannel(class TDesC16 const &)
-	?MaxVolume@CIRAsfPlayer@@QBEHXZ @ 8 NONAME ; int CIRAsfPlayer::MaxVolume(void) const
-	?NewL@CIRAsfPlayer@@SAPAV1@AAVMIRStreamSourceObserver@@AAVMIRCtrlCmdObserver@@@Z @ 9 NONAME ; class CIRAsfPlayer * CIRAsfPlayer::NewL(class MIRStreamSourceObserver &, class MIRCtrlCmdObserver &)
-	?NewLC@CIRAsfPlayer@@SAPAV1@AAVMIRStreamSourceObserver@@AAVMIRCtrlCmdObserver@@@Z @ 10 NONAME ; class CIRAsfPlayer * CIRAsfPlayer::NewLC(class MIRStreamSourceObserver &, class MIRCtrlCmdObserver &)
-	?Play@CIRAsfPlayer@@QAEXXZ @ 11 NONAME ; void CIRAsfPlayer::Play(void)
-	?PlayL@CIRAsfPlayer@@QAEXABVTDesC16@@@Z @ 12 NONAME ; void CIRAsfPlayer::PlayL(class TDesC16 const &)
-	?SetVolume@CIRAsfPlayer@@QAEXH@Z @ 13 NONAME ; void CIRAsfPlayer::SetVolume(int)
-	?Stop@CIRAsfPlayer@@QAEXXZ @ 14 NONAME ; void CIRAsfPlayer::Stop(void)
-	?Volume@CIRAsfPlayer@@QBEHXZ @ 15 NONAME ; int CIRAsfPlayer::Volume(void) const
-
--- a/internetradio2.0/bwinscw/iruicontrolsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-EXPORTS
-	??0CIRAPListBox@@QAE@AAVCDesC16ArrayFlat@@@Z @ 1 NONAME ; CIRAPListBox::CIRAPListBox(class CDesC16ArrayFlat &)
-	??0CIRLaf@@QAE@ABVTRect@@@Z @ 2 NONAME ; CIRLaf::CIRLaf(class TRect const &)
-	??0CIRListBox@@QAE@PAVCIRLaf@@@Z @ 3 NONAME ; CIRListBox::CIRListBox(class CIRLaf *)
-	??0CIRSettingListBox@@QAE@PAVCIRLaf@@@Z @ 4 NONAME ; CIRSettingListBox::CIRSettingListBox(class CIRLaf *)
-	??0CIRSettingPopupListBox@@QAE@PAVCIRLaf@@@Z @ 5 NONAME ; CIRSettingPopupListBox::CIRSettingPopupListBox(class CIRLaf *)
-	??0CIconFileProvider@@QAE@XZ @ 6 NONAME ; CIconFileProvider::CIconFileProvider(void)
-	?ChangeColor@CIRStatusControlPane@@QAEXABVTRgb@@@Z @ 7 NONAME ; void CIRStatusControlPane::ChangeColor(class TRgb const &)
-	?ChangePanePosition@CIRStatusControlPane@@QAEXVTPoint@@@Z @ 8 NONAME ; void CIRStatusControlPane::ChangePanePosition(class TPoint)
-	?ChangeResolution@CIRLaf@@QAEXABVTRect@@@Z @ 9 NONAME ; void CIRLaf::ChangeResolution(class TRect const &)
-	?ClearAllFlags@CIRListBox@@QAEXXZ @ 10 NONAME ; void CIRListBox::ClearAllFlags(void)
-	?ConstructL@CIRAPListBox@@QAEXXZ @ 11 NONAME ; void CIRAPListBox::ConstructL(void)
-	?ConstructL@CIRListBox@@QAEXPBVCCoeControl@@@Z @ 12 NONAME ; void CIRListBox::ConstructL(class CCoeControl const *)
-	?ConstructL@CIRSettingListBox@@QAEXPBVCCoeControl@@@Z @ 13 NONAME ; void CIRSettingListBox::ConstructL(class CCoeControl const *)
-	?ConstructL@CIRSettingPopupListBox@@QAEXPBVCCoeControl@@@Z @ 14 NONAME ; void CIRSettingPopupListBox::ConstructL(class CCoeControl const *)
-	?CreateIconL@CIconFileProvider@@QBEPAVCFbsBitmap@@H@Z @ 15 NONAME ; class CFbsBitmap * CIconFileProvider::CreateIconL(int) const
-	?CreateIconL@CIconFileProvider@@QBEPAVCGulIcon@@HH@Z @ 16 NONAME ; class CGulIcon * CIconFileProvider::CreateIconL(int, int) const
-	?CurrentMultiSelectedList@CIRListBox@@QBE?AV?$RArray@H@@XZ @ 17 NONAME ; class RArray<int> CIRListBox::CurrentMultiSelectedList(void) const
-	?CurrentSelectedIndex@CIRAPListBox@@IBEHXZ @ 18 NONAME ; int CIRAPListBox::CurrentSelectedIndex(void) const
-	?CurrentSelectedIndex@CIRListBox@@QBEHXZ @ 19 NONAME ; int CIRListBox::CurrentSelectedIndex(void) const
-	?CurrentSelectedIndex@CIRSettingListBox@@QBEHXZ @ 20 NONAME ; int CIRSettingListBox::CurrentSelectedIndex(void) const
-	?CurrentSelectedIndex@CIRSettingPopupListBox@@QBEHXZ @ 21 NONAME ; int CIRSettingPopupListBox::CurrentSelectedIndex(void) const
-	?DisplayAccessPointLD@CIRAPListBox@@QAEHXZ @ 22 NONAME ; int CIRAPListBox::DisplayAccessPointLD(void)
-	?HandleMultiSelect@CIRListBox@@QAEXW4TIRHandleMultiSelection@1@@Z @ 23 NONAME ; void CIRListBox::HandleMultiSelect(enum CIRListBox::TIRHandleMultiSelection)
-	?LeftOptionText@CIRStatusControlPane@@QBEPBVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const * CIRStatusControlPane::LeftOptionText(void) const
-	?MarkingSelectedIndex@CIRListBox@@QAEXHH@Z @ 25 NONAME ; void CIRListBox::MarkingSelectedIndex(int, int)
-	?MiddleOptionText@CIRStatusControlPane@@QBEPBVTDesC16@@XZ @ 26 NONAME ; class TDesC16 const * CIRStatusControlPane::MiddleOptionText(void) const
-	?NewL@CIRStatusControlPane@@SAPAV1@ABVTRect@@AAVCIRLaf@@@Z @ 27 NONAME ; class CIRStatusControlPane * CIRStatusControlPane::NewL(class TRect const &, class CIRLaf &)
-	?NewL@CIconFileProvider@@SAPAV1@ABVTDesC16@@@Z @ 28 NONAME ; class CIconFileProvider * CIconFileProvider::NewL(class TDesC16 const &)
-	?NewLC@CIRStatusControlPane@@SAPAV1@ABVTRect@@AAVCIRLaf@@@Z @ 29 NONAME ; class CIRStatusControlPane * CIRStatusControlPane::NewLC(class TRect const &, class CIRLaf &)
-	?OfferKeyEventL@CIRAPListBox@@MAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 30 NONAME ; enum TKeyResponse CIRAPListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?OfferKeyEventL@CIRListBox@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 31 NONAME ; enum TKeyResponse CIRListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?OfferKeyEventL@CIRSettingListBox@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 32 NONAME ; enum TKeyResponse CIRSettingListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?OfferKeyEventL@CIRSettingPopupListBox@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 33 NONAME ; enum TKeyResponse CIRSettingPopupListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?OfferKeyEventL@CIRStatusControlPane@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 34 NONAME ; enum TKeyResponse CIRStatusControlPane::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?RightOptionText@CIRStatusControlPane@@QBEPBVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const * CIRStatusControlPane::RightOptionText(void) const
-	?SetCurrentChosenIndex@CIRSettingPopupListBox@@QAEXH@Z @ 36 NONAME ; void CIRSettingPopupListBox::SetCurrentChosenIndex(int)
-	?SetCurrentSelectedIndex@CIRListBox@@QAEXH@Z @ 37 NONAME ; void CIRListBox::SetCurrentSelectedIndex(int)
-	?SetCurrentSelectedIndex@CIRSettingListBox@@QAEXH@Z @ 38 NONAME ; void CIRSettingListBox::SetCurrentSelectedIndex(int)
-	?SetCurrentSelectedIndex@CIRSettingPopupListBox@@QAEXH@Z @ 39 NONAME ; void CIRSettingPopupListBox::SetCurrentSelectedIndex(int)
-	?SetDataArrayL@CIRListBox@@QAEXPBVMDesC16Array@@@Z @ 40 NONAME ; void CIRListBox::SetDataArrayL(class MDesC16Array const *)
-	?SetDataArrayL@CIRSettingListBox@@QAEXPBVMDesC16Array@@@Z @ 41 NONAME ; void CIRSettingListBox::SetDataArrayL(class MDesC16Array const *)
-	?SetDataArrayL@CIRSettingPopupListBox@@QAEXPBVMDesC16Array@@@Z @ 42 NONAME ; void CIRSettingPopupListBox::SetDataArrayL(class MDesC16Array const *)
-	?SetHeaderTextL@CIRStatusControlPane@@QAEXABVTDesC16@@@Z @ 43 NONAME ; void CIRStatusControlPane::SetHeaderTextL(class TDesC16 const &)
-	?SetIconArray@CIRListBox@@QAEXABV?$RPointerArray@VCGulIcon@@@@H@Z @ 44 NONAME ; void CIRListBox::SetIconArray(class RPointerArray<class CGulIcon> const &, int)
-	?SetLSKTextL@CIRStatusControlPane@@QAEXABVTDesC16@@@Z @ 45 NONAME ; void CIRStatusControlPane::SetLSKTextL(class TDesC16 const &)
-	?SetMSKTextL@CIRStatusControlPane@@QAEXABVTDesC16@@@Z @ 46 NONAME ; void CIRStatusControlPane::SetMSKTextL(class TDesC16 const &)
-	?SetRSKTextL@CIRStatusControlPane@@QAEXABVTDesC16@@@Z @ 47 NONAME ; void CIRStatusControlPane::SetRSKTextL(class TDesC16 const &)
-	?SetSettings@CIRListBox@@QAEXHHHH@Z @ 48 NONAME ; void CIRListBox::SetSettings(int, int, int, int)
-	?SetStatusTextL@CIRStatusControlPane@@QAEXABVTDesC16@@000@Z @ 49 NONAME ; void CIRStatusControlPane::SetStatusTextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?SizeChanged@CIRListBox@@UAEXXZ @ 50 NONAME ; void CIRListBox::SizeChanged(void)
-	?SizeChanged@CIRSettingListBox@@UAEXXZ @ 51 NONAME ; void CIRSettingListBox::SizeChanged(void)
-	?SizeChanged@CIRSettingPopupListBox@@UAEXXZ @ 52 NONAME ; void CIRSettingPopupListBox::SizeChanged(void)
-	?TitleText@CIRStatusControlPane@@QBEPBVTDesC16@@XZ @ 53 NONAME ; class TDesC16 const * CIRStatusControlPane::TitleText(void) const
-
--- a/internetradio2.0/bwinscw/irxmlparseru.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-EXPORTS
-	?NewL@CIRXMLContentHandler@@SAPAV1@AAVMIRParserObserver@@AAVMIRCacheObserver@@@Z @ 1 NONAME ; class CIRXMLContentHandler * CIRXMLContentHandler::NewL(class MIRParserObserver &, class MIRCacheObserver &)
-	?ParseXmlL@CIRXMLContentHandler@@QAEXABVTDesC16@@0ABVCIRHttpResponseData@@@Z @ 2 NONAME ; void CIRXMLContentHandler::ParseXmlL(class TDesC16 const &, class TDesC16 const &, class CIRHttpResponseData const &)
-
--- a/internetradio2.0/bwinscw/isdsclientinterfaceu.def	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-EXPORTS
-	?GetDataProvider@CIRIsdsClient@@QAEPAVCIRDataProvider@@XZ @ 1 NONAME ; class CIRDataProvider * CIRIsdsClient::GetDataProvider(void)
-	?GetMultiplePresetsL@CIRIsdsClient@@QAEXABV?$RArray@H@@AAH@Z @ 2 NONAME ; void CIRIsdsClient::GetMultiplePresetsL(class RArray<int> const &, int &)
-	?GetOtaStatusL@CIRIsdsClient@@QAEXAAH@Z @ 3 NONAME ; void CIRIsdsClient::GetOtaStatusL(int &)
-	?IRGetIRIDL@CIRIsdsClient@@QAEXXZ @ 4 NONAME ; void CIRIsdsClient::IRGetIRIDL(void)
-	?IRISDSCancelRequest@CIRIsdsClient@@QAEXXZ @ 5 NONAME ; void CIRIsdsClient::IRISDSCancelRequest(void)
-	?IRISDSMultiSearchL@CIRIsdsClient@@QAEXABVTDesC16@@000@Z @ 6 NONAME ; void CIRIsdsClient::IRISDSMultiSearchL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?IRISDSPostL@CIRIsdsClient@@QAEXAAV?$TBuf@$0BAA@@@@Z @ 7 NONAME ; void CIRIsdsClient::IRISDSPostL(class TBuf<256> &)
-	?IRISDSSearchL@CIRIsdsClient@@QAEXABVTDesC16@@@Z @ 8 NONAME ; void CIRIsdsClient::IRISDSSearchL(class TDesC16 const &)
-	?IRIsdsClientIntefaceL@CIRIsdsClient@@QAEHIW4TIRIsdsClientInterfaces@1@H@Z @ 9 NONAME ; int CIRIsdsClient::IRIsdsClientIntefaceL(unsigned int, enum CIRIsdsClient::TIRIsdsClientInterfaces, int)
-	?IRIsdsClientIntefaceL@CIRIsdsClient@@QAEHW4TIRIsdsclientInterfaceIDs@1@@Z @ 10 NONAME ; int CIRIsdsClient::IRIsdsClientIntefaceL(enum CIRIsdsClient::TIRIsdsclientInterfaceIDs)
-	?IRIsdsIsCategoryCachedL@CIRIsdsClient@@QAEHW4TIRIsdsclientInterfaceIDs@1@@Z @ 11 NONAME ; int CIRIsdsClient::IRIsdsIsCategoryCachedL(enum CIRIsdsClient::TIRIsdsclientInterfaceIDs)
-	?IRIsdsIsChannelCachedL@CIRIsdsClient@@QAEHI@Z @ 12 NONAME ; int CIRIsdsClient::IRIsdsIsChannelCachedL(unsigned int)
-	?NewL@CIRIsdsClient@@SAPAV1@AAVMIsdsResponseObserver@@ABVTDesC16@@@Z @ 13 NONAME ; class CIRIsdsClient * CIRIsdsClient::NewL(class MIsdsResponseObserver &, class TDesC16 const &)
-	?PurgeOtaInfoL@CIRIsdsClient@@QAEXXZ @ 14 NONAME ; void CIRIsdsClient::PurgeOtaInfoL(void)
-	?ReleaseResources@CIRIsdsClient@@QAEXXZ @ 15 NONAME ; void CIRIsdsClient::ReleaseResources(void)
-	?SyncPresetL@CIRIsdsClient@@QAEHHABVTDesC16@@@Z @ 16 NONAME ; int CIRIsdsClient::SyncPresetL(int, class TDesC16 const &)
-
--- a/internetradio2.0/cachemgmtinc/ircachecleanup.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +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 <e32base.h>
-
-//Max size in Bytes
-const TInt KCacheLimitSize = 8*1024*1024;
-
-class CIRCacheMgmt;
-
-NONSHARABLE_CLASS (CIRCacheCleanup):public CTimer
-	{
-	public:
-
-    /**
-     * Two-phased constructor.
-     * @return  The newly created object.
-     */
-    static CIRCacheCleanup* NewL(CIRCacheMgmt& aCacheDb);
-
-    /**
-     * Destructor.
-     */
-    ~CIRCacheCleanup();
-
-	private:
-
-    /**
-     * Default Constructor.
-     * @param CIRCacheMgmt refrerence
-     */
-    CIRCacheCleanup(CIRCacheMgmt& aCacheDb);
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     *CleanupCacheDbL()
-     * Cleansup routine
-     */
-    void CleanupCacheDbL();
-    
-    /**
-     *CheckStatusL()
-     * CheckStatus of CacheDb and do cleanup if necessary
-     */
-    void CheckStatusL();
-    
-
-    /**
-     * @see CTimer::RunL().
-     */
-    void RunL();
-    
-    /**
-     * GetCleanupInterval().
-     *gets the cleanup routine call interval based on the current cache size.
-     *formula derivation:
-	 *Timeinterval of cleanup (T) is inversely proportional to the cache size(S)
-	 *Minimum time interval for cleanup routine 2 min.
-	 *Maximum time interval for cleanup routine ~35mins.
-	 *timeintervalperbyte = (35-2)*60*1000000/1024*1024
-	 *TimeInterval = timeintervalperbyte*(MaxCacheLimit-CurrentCachesize)
-     */
-     TUint32 GetCleanupInterval();
-     
-	private:
-
-    /** The cache database. */
-    CIRCacheMgmt& iDatabase;
-	};
\ No newline at end of file
--- a/internetradio2.0/cachemgmtinc/ircachemgmt.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +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 CIRCACHEMGMT_H
-#define CIRCACHEMGMT_H
-
-#include <d32dbms.h>
-
-
-const TInt KMAXHEADER = 255;
-
-class CIRBrowseCatagoryItems;
-class CIRBrowseChannelItems;
-class CIRCacheCleanup;
-class CIRHttpResponseData;
-class CIRIsdsPreset;
-class CIROTAUpdate;
-class CIRSettings;
-class MIRCacheObserver;
-
-class CIRCacheMgmt : public CObject
-  	{
-  	
-public:
-
-	/**
-	*CIRCacheMgmt::OpenL()
-	*Standard two phased construction
-	*calls ConstructL()
-	*@param MIRCacheObserver &
-	*@return CIRCacheMgmt*
-	*/
-	IMPORT_C static CIRCacheMgmt* OpenL(MIRCacheObserver &aObserver);
-
-    /**
-     * Adds a cache observer
-     *
-     * @param aObserver The observer to be added
-     */
-    IMPORT_C void AddObserverL( MIRCacheObserver* aObserver );
-    
-    /**
-    * Removes a cache observer
-    *
-    * @param aObserver The observer to be removed
-    */
-    IMPORT_C void RemoveObserver( MIRCacheObserver* aObserver );
-	
-	/**
-	*CIRCacheMgmt::CheckCache()
-	*API Exposed to Isds Client to check and get the cached items.
-	*@ aType the type of items i.e category,channel or preset. aName is the file name(type,CategoryId,PresetId
-	*@return TInt,1 for a cache hit,0 for cache miss,-1 for invalid cache
-	*
-	*/
-	IMPORT_C void CheckCacheL(TInt aType,const TDesC& aName,TBool aForceGet,TInt& aReturn);
-
-	/**
-	*CIRCacheMgmt::CheckValidity()
-	*Checks the freshness of the cache
-	*@param universal time of file creation
-	*@return TBool 1 if fresh,0 if stale
-	*/ 
-	TBool CheckValidity(const TTime &aCreateTime,TInt aTrustPeriod) const;
-
-	
-	/**
-	*CIRCacheMgmt::CacheCategoryItems()
-	*Caches the category array of data.By externalizing it into a file.
-	*@param aPtrCategory the object array,aName the file name from which the information is to be written
-	*/ 
-	IMPORT_C  void CacheCategoryItemsL(CArrayPtrFlat<CIRBrowseCatagoryItems>& aPtrCategory,
-			const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders);
-
-	/**
-	*CIRCacheMgmt::CacheChannelItems()
-	*Caches the channel objects array of data.By externalizing it into a file.
-	*@param aPtrChannel the object array,aName the file name from which the information is to be written
-	*/
-	IMPORT_C  void CacheChannelItemsL(CArrayPtrFlat<CIRBrowseChannelItems>& aPtrChannel,
-		const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders);
-
-	/**
-	*CIRCacheMgmt::CachePresetItem()
-	*Caches the preset objects .By externalizing it into a file.
-	*Multiple presets can be cached.
-	*@param aPreset preset object,aName the file name from which the information is to be written
-	*/
-	IMPORT_C  void CachePresetItemL(
-		CArrayPtrFlat<CIRIsdsPreset>& aPtrPresets,
-		const TDesC& aName,const CIRHttpResponseData& aResponseHeaders);
-
-	/**
-	*Function : CIRCacheMgmt::CacheOtaInfoL()
-	* Caches the OTA information  .By externalizing it into a db.
-	*@param aOta otainfo object,aName the file name from which the information is to be written
-	*/
-	IMPORT_C void CacheOtaInfoL(const CIROTAUpdate& aOta,const TDesC& aName,
-								const CIRHttpResponseData& aResponseHeaders);
-								
-								
-	////////////////////////////////////////////////////////////////////////
-	// CacheLogoL() API is added newly for logo cache management          //
-	////////////////////////////////////////////////////////////////////////							
-	/**
-	*CIRCacheMgmt::CacheLogoL()
-	* Caches the logo data for a given logo url.
-	*@param aData --- logo data
-	*@param aUrl  --- logo url
-	*/								
-	IMPORT_C void CacheLogoL(const TDesC8& aData, const TDesC& aUrl,
-	                         const CIRHttpResponseData& aResponseHeaders);
-								
-								
-	/**
-	*CIRCacheMgmt::UpdateTrustPeriodL()
-	*Modifies the Trust period that comes with the 304 Not Modified responces from isds
-	*@ aType the type of items i.e category,channel or preset. aName is the file name(type,CategoryId,PresetId
-	*/		
-	IMPORT_C void UpdateTrustPeriodL(TInt aType, const TDesC& aName,
-						 CIRHttpResponseData& aResponseHeaders);
-
-   	/**
-	*CIRCacheMgmt::RemoveOtaInfoL()	
-	*removes any cached ota response in case it is invalid
-	*/
-	IMPORT_C void RemoveOtaInfoL();
-    
-	/**
-	*CIRCacheMgmt::CheckSizeL()
-	*checks the current size of cache against the max cache limit
-	*/	
-	void CheckSizeL();
-	/**
-	*CIRCacheMgmt::RemoveOldUnusedDataL()
-	*removes all unused data to bring the cache under the max cache size
-	*/	
-	void RemoveOldUnusedDataL();
-	/**
-	*CIRCacheMgmt::CacheSize()
-	*@return the cache size
-	*/	
-	TInt CacheSize();
-private:
-
-	/**
-	*CIRCacheMgmt::CIRCacheMgmt()
-	*Standard C++ constructor
-	*@param MIRCacheObserver &
-	*@return NA
-	*sets the trust period to 24hrs(default)
-	*/
-	CIRCacheMgmt(MIRCacheObserver &aObserver);
-		
-	/**
-	*CIRCacheMgmt::ConstructL()
-	*Standard two phased construction
-	*@param void
-	*@return void
-	*creates the folder paths if nonexistant
-	*/
-	void ConstructL();
-	
-	/**
-	*CIRCacheMgmt::~CIRCacheMgmt()
-	*Standard C++ destructor
-	*@param NA
-	*@return NA
-	*/
-	~CIRCacheMgmt();
-	
-	/**
-	*CIRCacheMgmt::CreateCacheTableL()
-	*Creates the cache table
-	*CacheTable
-	* -----------------------------------------------------------------------------------------------
-	*| RowIndex|DataType|DataId|TrustPeriod|LastModified  |LastAccessed|Created|ItemCount|CachedData|
-	*------------------------------------------------------------------------------------------------
-	*| auto    |TInt    |TDesC |TInt       |TDesC/DateTime|TTime       |Time   |TInt     | Streamed |
-	*|increment|0,1,2 !0| !0   |  !0       |              |            |       |         | Data     |
-	*------------------------------------------------------------------------------------------------
-	*/
-	void CreateCacheTableL();
-		
-	/**
-	*CIRCacheMgmt::CreateCacheIndexL()
-	*creates the indices for cache table
-	*/
-	void CreateCacheIndexL();
-	
-	void FetchCacheIfAvailableL(TInt aType,const TDesC& aId,TBool aForceGet,TInt& aReturnVal);
-	void FetchCachedDataL(TInt aType,TInt aCountItems,RDbView& aCacheView);
-	
-	void CloseDb();
-	TInt OpenCacheDb();
-	TInt CreateDb();
-	void CreateDbConditionalL();		
-	/**	
-	*CIRCacheMgmt::UpdateLastAccessedTime()	
-	*updates the last accessed field to aid in deletion of old data
-	*@param RDbView&,the view for which the update has to be made
-	*/
-	void UpdateLastAccessedTimeL(RDbView &aCacheView);
-	
-public:
-	//!Enumeration for type identification
-	enum TIRTypes
-		{
-		ECatagory = 0,
-		EChannels,
-		EPresets,
-		EOtaInfo,
-		ELogo		//added for logo cache management
-		};
-		
-	//!Enumeration for return types	    
-	enum TIRCacheStatus
-		{
-		ECacheNotValid = -1,
-		ENotCached,
-		ECacheUseable
-		};
-		
-	//! trust period for cache(24hrs by default)
-	TTimeIntervalSeconds iTrustPeriod;
-	
-	// Array of Pointers to PresetClass
-	//used to return an array of cached presets to the UI
-	CArrayPtrFlat<CIRIsdsPreset>* iPtrPreset;
-	
-	//! Array of Pointers to CategoryClass	
-	CArrayPtrFlat<CIRBrowseCatagoryItems>* iPtrCategory;
-	
-	//! Array of Pointers to BrowseCategoryClass
-	CArrayPtrFlat<CIRBrowseChannelItems>* iPtrChannel;
-	
-	//ota info holding object
-	CIROTAUpdate* iOTA;
-	//!Observer class for cache
-	MIRCacheObserver& iCacheObserver;
-	
-	//To store the logo data which is retrieved from the cache
-	RBuf8 iLogoData;
-	
-	//!time stamp string in HTTP format,used if cache is stale
- 	TTime iLastModified;
- 	
- 	//ETag header assaociated witht the logo data
- 	TBuf8< KMAXHEADER > iETag;
-	
-private:
-	/** 
-     * Array of cache observers
-     */
-    RPointerArray<MIRCacheObserver> iCacheObservers;
-    RDbNamedDatabase iCacheDb;
-    TBool iOpen;
-    //! fileserver session
-	RFs iFsSession;
-	TFileName iDatabaseFileName;
-	//central repository settings handle
-	CIRSettings* iSettings;
-	CIRCacheCleanup* iCleanup;
-	TInt iCacheDbSize;
-	};
-#endif //CIRCACHEMGMT_H
--- a/internetradio2.0/cachemgmtinc/ircacheobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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 MIRCACHEOBSERVER_H
-#define MIRCACHEOBSERVER_H
-
-#include <e32def.h>
-
-class MIRCacheObserver
-{
-    public:
- //!General error condition   
-    virtual void CacheError() = 0;
-//! If seeked data not in cache    
-    virtual void CacheFailed() = 0;
-//!If cached data is stale    
-    virtual void CacheInvalid() = 0;
-//!Data is valid and extracted into the structure    
-    virtual void CachedStructureL(TInt aChoice) = 0;
-                    
-};
-
-#endif //MIRCACHEOBSERVER_H
--- a/internetradio2.0/cachemgmtsrc/ircachecleanup.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +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 "ircachecleanup.h"
-#include "ircachemgmt.h"
-#include "irdebug.h"
-
-//Constant decided on the rate of data collection in cache in a high speed connection
-/* const TUint KConstantForCleanupFrequency = KCacheLimitSize*90; */
-//maximum time interval = 2147483648/KCacheLimitSize
-const TUint KIntervalPerByte =2048 ;
-//
-const TInt KMinCleanupInterval = 2*60*1000000;//2 mins
-const TInt KMaxCleanupInterval = 2147483647;//~36 mins for 1MB data
-
-// ---------------------------------------------------------------------------
-//Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-   	CIRCacheCleanup* CIRCacheCleanup::NewL(CIRCacheMgmt& aCacheDb)
-   		{
-   		IRLOG_DEBUG( "CIRCacheCleanup::NewL - Entering" );
-   		CIRCacheCleanup* self = new(ELeave)CIRCacheCleanup(aCacheDb);
-   		CleanupStack::PushL(self);
-   		self->ConstructL();
-   		CleanupStack::Pop(self);
-   		IRLOG_DEBUG( "CIRCacheCleanup::NewL - Exiting" );
-   		return self;
-   		}
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-    CIRCacheCleanup::~CIRCacheCleanup()
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::~CIRCacheCleanup - Entering" );
-    	Cancel();
-    	IRLOG_DEBUG( "CIRCacheCleanup::~CIRCacheCleanup - Exiting" );
-    	}
-
-// ---------------------------------------------------------------------------
-//Default Constructor
-// ---------------------------------------------------------------------------
-//
-    CIRCacheCleanup::CIRCacheCleanup(CIRCacheMgmt& aCacheDb):
-    CTimer( CActive::EPriorityLow ), iDatabase( aCacheDb )
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::CIRCacheCleanup - Entering" );
-    	CActiveScheduler::Add( this );
-    	IRLOG_DEBUG( "CIRCacheCleanup::CIRCacheCleanup - Exiting" );
-    	}
-
-// ---------------------------------------------------------------------------
-//Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-    void CIRCacheCleanup::ConstructL()
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::ConstructL - Entering" );
-    	CTimer::ConstructL(); 	
-    	CheckStatusL();
-    	IRLOG_DEBUG( "CIRCacheCleanup::ConstructL - Exiting" );
-    	}
-
-// ---------------------------------------------------------------------------
-//Cleanup CacheDb if necessary
-// ---------------------------------------------------------------------------
-//
-    void CIRCacheCleanup::CleanupCacheDbL()
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::CleanupCacheDbL - Entering" );
-    	iDatabase.CheckSizeL();
-    	IRLOG_DEBUG( "CIRCacheCleanup::CleanupCacheDbL - Exiting" );
-    	}
-    
-// ---------------------------------------------------------------------------
-//CheckStatus of CacheDb and do cleanup if necessary
-// ---------------------------------------------------------------------------
-//
-    void CIRCacheCleanup::CheckStatusL()
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::CheckStatusL - Entering" );
-    	TTimeIntervalMicroSeconds32  interval(GetCleanupInterval());
-    	After(interval);
-    	CleanupCacheDbL();
-    	IRLOG_DEBUG( "CIRCacheCleanup::CheckStatusL - Exiting" );
-    	}
-    
-// ---------------------------------------------------------------------------
-//  CIRCacheCleanup::RunL().
-// ---------------------------------------------------------------------------
-//
-    void CIRCacheCleanup::RunL()
-    	{
-    	IRLOG_DEBUG( "CIRCacheCleanup::RunL - Entering" );
-    	CheckStatusL();
-    	IRLOG_DEBUG( "CIRCacheCleanup::RunL - Exiting" );
-    	}
-    	
-// ---------------------------------------------------------------------------
-//  CIRCacheCleanup::GetCleanupInterval().
-// ---------------------------------------------------------------------------
-//
-TUint32 CIRCacheCleanup::GetCleanupInterval()
-	{
-	IRLOG_DEBUG( "CIRCacheCleanup::GetCleanupInterval - Entering" );
-	//formula derivation:
-	//Timeinterval of cleanup (T) is inversely proportional to the cache size(S)
-	//Minimum time interval for cleanup routine 2 min.
-	//Maximum time interval for cleanup routine ~35mins.
-	//timeintervalperbyte = (35-2)*60*1000000/1024*1024
-	//TimeInterval = timeintervalperbyte*(MaxCacheLimit-CurrentCachesize)
-	
-	TInt interval =KIntervalPerByte * (KCacheLimitSize - iDatabase.CacheSize());
-	//keep the value range bound
-	interval = Max(interval,KMinCleanupInterval);
-	interval = Min(interval,KMaxCleanupInterval);
-	IRLOG_DEBUG( "CIRCacheCleanup::GetCleanupInterval - Exiting" );
-	return interval;
-	}
--- a/internetradio2.0/cachemgmtsrc/ircachemgmt.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1506 +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 <bautils.h>
-
-#include "irbrowsecatagoryitems.h"
-#include "irbrowsechannelitems.h"
-#include "ircachecleanup.h"
-#include "ircachemgmt.h"
-#include "ircacheobserver.h"
-#include "irdebug.h"
-#include "irhttprequestdata.h"
-#include "irisdspreset.h"
-#include "irotaupdate.h"
-#include "irsettings.h"
-
-//Default trust period value.24 hrs in secs with which the object is to be initialised
-const TInt KDefaultInterval = 24*60*60;
-//granualarity for the arrays
-//the granualarity value is based on superficial observation of the amount of 
-//data recieved for a particular request
-const TInt KBrowseGranualarity = 32;
-const TInt KChannelArrayGranualarity = 32;
-const TInt KPresetGranualarity = 12;
-//http length format length
-// "Sun, 06 Nov 1994 08:49:37 GMT" format
-const TInt KHttpDateLength = 25;
-
-//Max size(critical size) in Bytes(90% of the max size)
-//critical size is the size that triggers cleanup action
-const TInt KCacheCriticalSizeLimit = KCacheLimitSize*9/10;
-
-//No of rows deleted will be one fourth of the total number of rows
-const TInt KPercentRowsDeleted = 4;  
-
-//The indexing size for the column DataId is set to 100 
-const TInt KDataIdIndexSize = 100;
-
-//database file name
-_LIT(KCacheDbFile,"cacheDb.db");
-
-//Table Name CacheTable
-_LIT(KCacheTable,"CacheTable");
-
-//CacheTable columns
-_LIT(KRowIndexCol,     "RowIndex");  
-_LIT(KDataTypeCol,     "DataType");            
-_LIT(KDataIdCol,       "DataId");       
-_LIT(KTrustPeriodCol,  "TrustPeriod");       
-_LIT(KLastModifiedCol, "LastModified"); 
-_LIT(KLastAccessedCol, "LastAccessed"); 
-_LIT(KTimeCreation,    "Created");
-_LIT(KItemCount,       "ItemCount");
-_LIT(KCachedDataCol,   "CachedData");
-_LIT(KETagHeader,      "ETagHeader"); 
-
-//Table Index Names
-_LIT(KRowIndexColIndex,     "IndexRowIndex");  
-_LIT(KDataTypeColIndex,     "IndexDataType");            
-_LIT(KDataIdColIndex,       "IndexDataId");  
-_LIT(KLastAccessedColIndex, "IndexLastAccessed"); 
-_LIT(KTimeCreationIndex,    "IndexCreated");
-//Field Lengths
-
-const TInt KIRObserverArrayGranularity( 2 );
-
-
-// ---------------------------------------------------------------------------
-// Function : OpenL
-// Standard two phased construction
-// calls ConstructL()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCacheMgmt* CIRCacheMgmt::OpenL(MIRCacheObserver &aObserver)
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::OpenL - Entering." );
-	CIRCacheMgmt* self = reinterpret_cast<CIRCacheMgmt*>(Dll::Tls());
-	
-	if (self)
-		{
-		User::LeaveIfError(self->Open());
-		}
-    else
-		{
-		self = new (ELeave) CIRCacheMgmt(aObserver);
-		CleanupClosePushL(*self);
-		self->ConstructL();
-		User::LeaveIfError(Dll::SetTls(self));
-		CleanupStack::Pop(self);
-		}
-	IRLOG_DEBUG( "IRCacheMgmt::OpenL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::~CIRCacheMgmt()
-// Standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRCacheMgmt::~CIRCacheMgmt() 
-	{	
-	IRLOG_DEBUG( "IRCacheMgmt::~CIRCacheMgmt - Entering." );
-	//array destruction
-	if (iPtrPreset)
-		{
-		iPtrPreset->ResetAndDestroy();
-        delete iPtrPreset;
-        iPtrPreset = NULL;
-		}
-    if (iPtrCategory)
-        {
-        iPtrCategory->ResetAndDestroy();
-        }
-
-    delete iPtrCategory;
-    iPtrCategory = NULL;
-    if (iPtrChannel)
-        {
-        iPtrChannel->ResetAndDestroy();
-        }
-
-    delete iPtrChannel;
-    iPtrChannel = NULL;
-    if (iSettings)
-        {
-        iSettings->Close();
-        }
-	if(iOTA)
-		{
-		delete iOTA;
-		iOTA = NULL;
-		}
-	iLogoData.Close();		
-    CloseDb();
-    iCacheDb.Close();
-    delete iCleanup;
-    iFsSession.Close();
-    iCacheObservers.Close();
-    Dll::FreeTls();
-    IRLOG_DEBUG( "IRCacheMgmt::~CIRCacheMgmt - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CIRCacheMgmt()
-// Standard C++ constructor
-// sets the trust period to 24hrs(default)
-// ---------------------------------------------------------------------------
-//
-CIRCacheMgmt::CIRCacheMgmt (MIRCacheObserver &aObserver)
-			:iCacheObserver(aObserver),
-			 iCacheObservers( KIRObserverArrayGranularity )
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CIRCacheMgmt - Entering." );
-	//default trust period initially set to 24 hrs
-	//to be fetched from central repository
-	iTrustPeriod = TTimeIntervalSeconds(KDefaultInterval);	
-	IRLOG_DEBUG( "IRCacheMgmt::CIRCacheMgmt - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::ConstructL()
-// Standard two phased construction
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::ConstructL() 
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::ConstructL - Entering." );
-	User::LeaveIfError(iFsSession.Connect());
-	//array construction
-	iPtrPreset = new (ELeave) CArrayPtrFlat<CIRIsdsPreset>(
-				KPresetGranualarity);
-    iPtrCategory = new (ELeave) CArrayPtrFlat<CIRBrowseCatagoryItems>(
-    	KBrowseGranualarity);
-	iPtrChannel = new (ELeave) CArrayPtrFlat<CIRBrowseChannelItems>(
-		KChannelArrayGranualarity);
-	iOTA = CIROTAUpdate::NewL();
-	iSettings = CIRSettings::OpenL();
-	iDatabaseFileName = iSettings->PrivatePath();
-	iDatabaseFileName.Append(KCacheDbFile);
-	CreateDbConditionalL();
-	iCleanup = CIRCacheCleanup::NewL(*this);
-	RemoveOtaInfoL();
-	IRLOG_DEBUG( "IRCacheMgmt::ConstructL - Exiting." );
-    }
-    
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CreateDbConditionalL(
-// Creates dbms conditionally(only if not yet created)
-// calls CreateDb()
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::CreateDbConditionalL()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CreateDbConditionalL - Entering." );
-	TInt err=KErrNone;
-	if(!BaflUtils::FileExists(iFsSession, iDatabaseFileName))
-		{
-		err=CreateDb();
-		if(KErrNone != err)
-			{
-			User::Leave(err);	
-			}
-		}
-	IRLOG_DEBUG( "IRCacheMgmt::CreateDbConditionalL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CreateDb()
-// Creates the tables
-// ---------------------------------------------------------------------------
-//
-TInt CIRCacheMgmt::CreateDb()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CreateDb - Entering." );
-	CloseDb();
-	TInt err=iCacheDb.Replace(iFsSession,iDatabaseFileName);
-	if((err!=0))
-		{
-		return err; //unable to create file	
-		}																		
-	TRAP(err,//trap start
-		CreateCacheTableL();
-		CreateCacheIndexL();
-		)//trap end
-		IRLOG_DEBUG( "IRCacheMgmt::CreateDb - Exiting." );
-	return err;
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::OpenCacheDb()
-// Opens both the databases 
-// ---------------------------------------------------------------------------
-//
-TInt CIRCacheMgmt::OpenCacheDb()
-	{
-	IRLOG_DEBUG( "CIRCacheMgmt::OpenCacheDb - Entering" );
-	CloseDb();
-	TInt error = KErrNone;
-	if(!BaflUtils::FileExists(iFsSession, iDatabaseFileName))
-	    {
-	    //if file doesn't exist function leaves with error code
-	    //KErrNotFound
-	     return KErrNotFound;
-	    }
-	//try and open the db	
-	error = iCacheDb.Open(iFsSession,iDatabaseFileName);
-	//return if error
-	if(KErrNone != error )
-		{
-		return error;
-		}
-	//check if damaged
-	if( iCacheDb.IsDamaged() )
-		{
-		//if data base is damaged then 
-		//try to recover
-		error = iCacheDb.Recover();
-		return error;
-		}
-				
-	iOpen = ETrue;
-	
-	IRLOG_DEBUG( "CIRCacheMgmt::OpenCacheDb - Exiting." );
-	return KErrNone;
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CloseDb()
-// Closes the database 
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::CloseDb()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CloseDb - Entering." );
-	iCacheDb.Close();
-	iOpen = EFalse;
-	IRLOG_DEBUG( "IRCacheMgmt::CloseDb - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CheckCache()
-// API Exposed to Isds Client to check and get the cached items. 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCacheMgmt::CheckCacheL(TInt aType,const TDesC& aName,
-					TBool aForceGet,TInt& aReturn)   
-	{
-	IRLOG_DEBUG( "CIRCacheMgmt::CheckCacheL - Entering" );
-	//opens the db if not open already
-	if(!iOpen)
-		{
-		TInt error = OpenCacheDb();
-		if(KErrNone != error)
-			{
-			aReturn = ENotCached;
-			return;	
-			}
-		}
-
-    //calls the function FetchCacheIfAvailable() passing the appropriate type and id
-    
-	switch(aType)
-	{
-	case ECatagory:	
-	case EChannels:
-	case EPresets:
-	case EOtaInfo:
-	case ELogo:
-		{
-		TRAP_IGNORE(FetchCacheIfAvailableL(aType,aName,aForceGet,aReturn))
-		break;	
-		}
-		
-	default:
-		{
-	    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-	        {
-	        iCacheObservers[i]->CacheFailed();
-	        }
-		aReturn = ENotCached;
-		break;	
-		}
-	}
-	CloseDb();
-	IRLOG_DEBUG( "CIRCacheMgmt::CheckCacheL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::FetchCacheIfAvailable()
-// Fetches the cache if available 
-// ---------------------------------------------------------------------------
-//
-//generic function to check the validity of the cache	
-void CIRCacheMgmt::FetchCacheIfAvailableL(TInt aType,const TDesC& aId,
-	TBool aForceGet,TInt& aReturnVal)
-	{
-	//Algo****
-	//1.check the cache table for a request type
-	//2.if the query returns a row,check for validity
-	//3.if invalid(stale) do a conditional get
-	//4.if valid use cache
-	IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - Entering" );
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = aType AND KDataIdCol=aId
-	_LIT( query, "SELECT * FROM %S WHERE %S = %d AND %S = '%S'" );
-	
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KCacheTable().Length() +
-								    KDataTypeCol().Length() + KDataIdCol().Length() +
-								    KDefaultRealWidth + aId.Length());
-								    
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,aType,&KDataIdCol,&aId);
-	
-	IRLOG_DEBUG2( "CIRCacheMgmt::FetchCacheIfAvailableL - Going to evaluate SQL query: %S", sqlQuery );
-	RDbView cacheView;
-	User::LeaveIfError(cacheView.Prepare(iCacheDb,*sqlQuery));
-	CleanupStack::PopAndDestroy(sqlQuery);
-	CleanupClosePushL(cacheView);
-    User::LeaveIfError( cacheView.EvaluateAll() );
-
-    //if no row match the query there is no cahche available for that particular 
-    //request
-    if(cacheView.IsEmptyL())
-	    {
-	    //Return ENotCached
-	    aReturnVal = ENotCached;
-	    }
-	else
-		{
-		cacheView.FirstL();
-		cacheView.GetL();
-		CDbColSet* columns = cacheView.ColSetL();
-		TTime creationTime = cacheView.ColTime(columns->ColNo( KTimeCreation));
-		TInt cacheValidityTime = cacheView.ColInt(columns->ColNo( KTrustPeriodCol));
-		TInt countItems=cacheView.ColInt(columns->ColNo( KItemCount));
-		IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - can check validity." );
-		//check if cache is valid
-		//get it any way if it is "forcedget"
-		if( aForceGet || CheckValidity(creationTime,cacheValidityTime))
-			{
-			//Fetch the cached data
-			//FetchCachedData(type,count,&view )
-			TRAPD(err,FetchCachedDataL(aType,countItems,cacheView));
-			if(err!=KErrNone)
-				{
-				//something goes wrong ,return not cached and fetch new data
-				aReturnVal = ENotCached;
-				}
-			else
-				{
-				//cache usable
-				aReturnVal = ECacheUseable;
-				}
-			}
-		else
-			{
-			iLastModified = cacheView.ColTime(columns->ColNo( KLastModifiedCol));
-			iETag = cacheView.ColDes8(columns->ColNo( KETagHeader ));			
-			aReturnVal = ECacheNotValid;
-			cacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CacheInvalid();
-		        }
-			}
-	    delete columns;	
-		}
-	CleanupStack::PopAndDestroy(&cacheView);
-	IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - Exiting." );
-	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::FetchCachedDataL()
-// fetches the cached data from the table into the cached structures
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::FetchCachedDataL(TInt aType,TInt aCountItems,RDbView& aCacheView)
-	{
-	//Algo****
-	//fetch the data and internalize into appropriate structure
-
-	IRLOG_DEBUG( "CIRCacheMgmt::FetchCachedDataL - Entering" );
-    CDbColSet* columns = aCacheView.ColSetL();
-    TInt columnNo = columns->ColNo( KCachedDataCol );
-    delete columns;
-	switch(aType)
-		{
-		case ECatagory:
-			{
-			//Internalize the category items into the CIRBrowseCatagoryItems array
-	        RDbColReadStream instream;
-	        instream.OpenLC( aCacheView, columnNo );
-			CIRBrowseCatagoryItems* ptr;
-			if (iPtrCategory)
-				{
-				iPtrCategory->ResetAndDestroy();
-				}
-			else
-			{
-				break;
-			}
-			for(TInt iter=0;iter<aCountItems;iter++)
-				{
-				ptr=CIRBrowseCatagoryItems::NewL();
-				CleanupStack::PushL(ptr);
-				instream>>*ptr;
-				iPtrCategory->AppendL(ptr);
-				CleanupStack::Pop(ptr);
-				}
-	        CleanupStack::PopAndDestroy( &instream );
-	        //update the last accessed time
-	        UpdateLastAccessedTimeL(aCacheView);
-	        aCacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CachedStructureL(ECatagory);
-		        }
-	        break;
-			}
-		case EChannels:
-			{
-			//Internalize the channel items into the CIRBrowseChannelItems array
-	        RDbColReadStream instream;
-	        instream.OpenLC( aCacheView, columnNo );
-	        if (iPtrChannel)
-				{
-				iPtrChannel->ResetAndDestroy();
-				}
-			CIRBrowseChannelItems *ptr;
-			for(TInt iter=0;iter<aCountItems;iter++)
-				{
-				ptr = CIRBrowseChannelItems::NewL();
-				CleanupStack::PushL(ptr);
-				instream>>*ptr;
-	            if (iPtrChannel)
-				    {				
-        		    iPtrChannel->AppendL(ptr);
-	        		}
-				CleanupStack::Pop(ptr);
-				}
-	        CleanupStack::PopAndDestroy( &instream );
-	        //update the last accessed time
-	        UpdateLastAccessedTimeL(aCacheView);
-	        aCacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CachedStructureL(EChannels);
-		        }
-	        break;
-			}
-		case EPresets:
-			{
-			//Internalize the preset  into the CIRIsdsPreset object
-	        RDbColReadStream instream;
-	        instream.OpenLC( aCacheView, columnNo );
-	        if(iPtrPreset)
-		        {
-		        iPtrPreset->ResetAndDestroy();
-		        }
-		    CIRIsdsPreset *ptr;
-		    for(TInt iter=0;iter<aCountItems;iter++)
-		    	{
-		    	ptr = CIRIsdsPreset::NewL();
-		    	CleanupStack::PushL(ptr);
-		    	instream>>*ptr;
-	            if(iPtrPreset)
-		            {		    	
-		    	    iPtrPreset->AppendL(ptr);
-		            }
-		    	CleanupStack::Pop(ptr);
-		        }
-	        CleanupStack::PopAndDestroy( &instream );
-	        //update the last accessed time
-	        UpdateLastAccessedTimeL(aCacheView);
-	        aCacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CachedStructureL(EPresets);
-		        }
-	        break;
-			}
-		case EOtaInfo:
-			{
-			//Internalize the ota info into the CIROTAUpdate object
-	        RDbColReadStream instream;
-	        instream.OpenLC( aCacheView, columnNo );
-	        if(iOTA)
-		        {
-		        delete iOTA;
-		        iOTA = NULL;
-		        iOTA = CIROTAUpdate::NewL();
-		        instream>>*iOTA;
-		        }
-		  
-	        CleanupStack::PopAndDestroy( &instream );
-	        //update the last accessed time
-	        UpdateLastAccessedTimeL(aCacheView);
-	        aCacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CachedStructureL(EOtaInfo);
-		        }
-	        break;
-			}
-		case ELogo:
-			{
-			//get the logo data from the cache
-			TInt logoSize = aCacheView.ColSize(columnNo);
-			iLogoData.Close();
-			iLogoData.Zero();
-			iLogoData.Create(logoSize);
-			
-			RDbColReadStream instream;
-			instream.OpenLC( aCacheView, columnNo );
-			instream.ReadL(iLogoData,aCacheView.ColLength(columnNo));
-			CleanupStack::PopAndDestroy( &instream );
-			//update the last accessed time
-	        UpdateLastAccessedTimeL(aCacheView);
-			aCacheView.Close();
-		    for (TInt i = 0 ; i < iCacheObservers.Count() ; i++ )
-		        {
-		        iCacheObservers[i]->CachedStructureL(ELogo);
-		        }
-	        break;
-			}
-		default:
-			{
-	        aCacheView.Close();
-			}
-		}
-	IRLOG_DEBUG( "CIRCacheMgmt::FetchCachedDataL - Exiting." );
-	}
-// ---------------------------------------------------------------------------
-//updates the last accessed field to aid in deletion of old unused data
-//
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::UpdateLastAccessedTimeL(RDbView &aCacheView)
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Entering." );
-	//update the last accessed col
-	CDbColSet* columns = aCacheView.ColSetL();
-    TInt updateColNo = columns->ColNo( KLastAccessedCol );
-    delete columns;
-    TTime currentTime;
-	currentTime.UniversalTime();
-    //update the current time value
-	aCacheView.GetL();
-	aCacheView.UpdateL();
-	aCacheView.SetColL(updateColNo,currentTime);
-	aCacheView.PutL();
-	IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CheckValidity()
-// Checks the freshness of the cache
-// ---------------------------------------------------------------------------
-//
-TBool CIRCacheMgmt::CheckValidity(const TTime& aCreateTime,TInt aTrustPeriod) const
-	{
-	//Algo****
-	//1.get the last creation time from the table for the request
-	//2.calculate creation-time + trust-period < current-time *
-	//3.if true the cache is valid
-	//4.else do conditional-get
-	IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Entering" );
-	TTimeIntervalSeconds trustPeriod(aTrustPeriod);
-	TTimeIntervalSeconds diff;
-	TTime currentDeviceTime;
-	currentDeviceTime.UniversalTime();
-	currentDeviceTime.SecondsFrom(aCreateTime,diff);
-	//Has the cache expired
-		if(diff<trustPeriod)
-			{
-			IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Exiting (1)." );
-			return  ETrue;
-			}
-		//Else return false
-		else
-			{
-			IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Exiting (2)." );
-			return	EFalse;	
-			}
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CacheCategoryItemsL()
-// Caches the category array of data.By externalizing it into a file.
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRCacheMgmt::CacheCategoryItemsL(
-					CArrayPtrFlat<CIRBrowseCatagoryItems>& aPtrCategory,
-					const TDesC& aName, const CIRHttpResponseData& aResponseHeaders)
-	{
-	//Algo****
-	//1.check if similar request is cached
-	//2.delete if similar request is already present
-	//3.prepare a view for insertion
-	//4.push in the requested data as serialized data
-	
-	IRLOG_DEBUG( "IRCacheMgmt::CacheCategoryItemsL - Entering" );
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-	
-	//clear similar data from the cache table before updating it with fresh data
-	//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDataIdCol().Length() +
-									KDefaultRealWidth + aName.Length());
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,ECatagory,&KDataIdCol,&aName);
-	iCacheDb.Begin();
-	//deletes a similar record if it existed.
-	//no problem if it did not exist
-	iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-	CleanupStack::PopAndDestroy(sqlQuery);
-	iCacheDb.Commit();
-	
-	//get the cached data view for preset column to update with fresh data.
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
-	_LIT(query1,"SELECT * FROM %S WHERE %S = %d");
-	HBufC* sqlQuery1 = HBufC::NewLC(query1().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDefaultRealWidth);
-	sqlQuery1->Des().Format(query1,&KCacheTable,&KDataTypeCol,ECatagory);
-	
-	RDbView cacheTableView;
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery1));
-	CleanupStack::PopAndDestroy(sqlQuery1);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());
-
-	//prepare insertion values
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	TInt countItems=aPtrCategory.Count();
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length() == 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	//write stream
-	RDbColWriteStream writeStream;
-	//start insertion into the view
-	//insert a new row
-	cacheTableView.InsertL();
-	//set values
-	cacheTableView.SetColL(columns->ColNo(KDataTypeCol), ECatagory);
-	cacheTableView.SetColL(columns->ColNo(KDataIdCol), aName);
-	cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-	cacheTableView.SetColL(columns->ColNo(KItemCount), countItems);
-	//to be set only if available
-	cacheTableView.SetColL(columns->ColNo(KLastModifiedCol),aResponseHeaders.iLastModified);
-	cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-	//open stream
-	writeStream.OpenLC(cacheTableView,columns->ColNo(KCachedDataCol));
-	for(TInt iter=0;iter<countItems;iter++)
-		{
-		aPtrCategory[iter]->ExternalizeL(writeStream);
-		}	
-	writeStream.CommitL();
-	CleanupStack::PopAndDestroy(&writeStream);
-	cacheTableView.PutL();
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "IRCacheMgmt::CacheCategoryItemsL - Exiting." );
-	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CacheChannelItemsL()
-// Caches the channel objects array of data.By externalizing it into a file..
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRCacheMgmt::CacheChannelItemsL(CArrayPtrFlat<CIRBrowseChannelItems>& aPtrChannel,
-											   const TDesC& aName,const CIRHttpResponseData& aResponseHeaders)
-	{
-	//Algo****
-	//1.check if similar request is cached
-	//2.delete if similar request is already present
-	//3.prepare a view for insertion
-	//4.push in the cached data request as serialized data
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheChannelItemsL - Entering" );
-
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-	
-	//convert the id information of descriptor to int value for comparision
-	//clear data from the cache table before updating it with fresh data
-	//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDataIdCol().Length() +
-									KDefaultRealWidth + aName.Length());
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,EChannels,&KDataIdCol,&aName);
-	iCacheDb.Begin();
-	//deletes a similar record if it existed.
-	//no problem if it did not exist
-	iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-	CleanupStack::PopAndDestroy(sqlQuery);
-	iCacheDb.Commit();
-	
-	//get the cached data view for preset column to update with fresh data.
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
-	_LIT(query1,"SELECT * FROM %S WHERE %S = %d");
-	HBufC* sqlQuery1 = HBufC::NewLC(query1().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDefaultRealWidth);
-	RDbView cacheTableView;
-	sqlQuery1->Des().Format(query1,&KCacheTable,&KDataTypeCol,EChannels);	
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery1));
-	CleanupStack::PopAndDestroy(sqlQuery1);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());
-
-	//prepare insertion values
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	TInt countItems=aPtrChannel.Count();
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length() == 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-	TBuf<KHttpDateLength>lastModified;
-
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	//write stream
-	RDbColWriteStream writeStream;
-	
-	//start insertion into the view
-	//insert a new row
-	cacheTableView.InsertL();
-	//set values
-	cacheTableView.SetColL(columns->ColNo(KDataTypeCol), EChannels);
-	cacheTableView.SetColL(columns->ColNo(KDataIdCol), aName);
-	cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-	cacheTableView.SetColL(columns->ColNo(KItemCount), countItems);
-	//to be set only if available
-	cacheTableView.SetColL(columns->ColNo(KLastModifiedCol),aResponseHeaders.iLastModified);
-	//
-	cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-	//open stream
-	writeStream.OpenLC(cacheTableView,columns->ColNo(KCachedDataCol));
-	for(TInt iter=0;iter<countItems;iter++)
-		{
-		aPtrChannel[iter]->ExternalizeL(writeStream);
-		}	
-	writeStream.CommitL();
-	CleanupStack::PopAndDestroy(&writeStream);
-	cacheTableView.PutL();
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheChannelItemsL - Exiting." );
-	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CachePresetItemL()
-// Caches the preset object .By externalizing it into a file.
-//multiple presets can be cached at one time
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRCacheMgmt::CachePresetItemL(CArrayPtrFlat<CIRIsdsPreset>& aPtrPresets,
-				const TDesC& aName,const CIRHttpResponseData& aResponseHeaders)
-	{
-	//Algo****
-	//1.check if similar request is cached
-	//2.delete if similar request is already present
-	//3.prepare a view for insertion
-	//4.push in the cached data request as serialized data
-	IRLOG_DEBUG( "CIRCacheMgmt::CachePresetItemL - Entering" );
-
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-	//convert the id information of descriptor to int value for comparision
-	//clear data from the cache table before updating it with fresh data
-	//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDataIdCol().Length() +
-									KDefaultRealWidth + aName.Length());
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,EPresets,&KDataIdCol,&aName);
-	iCacheDb.Begin();
-	//deletes a similar record if it existed.
-	//no problem if it did not exist
-	iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-	CleanupStack::PopAndDestroy(sqlQuery);
-	iCacheDb.Commit();
-	
-	//get the cached data view for preset column to update with fresh data.
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
-	_LIT(query1,"SELECT * FROM %S WHERE %S = %d");
-	HBufC* sqlQuery1 = HBufC::NewLC(query1().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDefaultRealWidth);
-	sqlQuery1->Des().Format(query1,&KCacheTable,&KDataTypeCol,EPresets);	
-	RDbView cacheTableView;
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery1));
-	CleanupStack::PopAndDestroy(sqlQuery1);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());
-
-	//prepare insertion values
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length()== 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-	TBuf<KHttpDateLength>lastModified;
-	//default time set to 24hrs
-	//use iTrustPeriod
-	//type set to EPresets
-	//id set to dataId
-	//last modified time kept null
-	//item count set to 1
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	//write stream
-	RDbColWriteStream writeStream;
-	TInt countItems;
-	countItems = aPtrPresets.Count();
-	//start insertion into the view
-	//insert a new row
-	cacheTableView.InsertL();
-	//set values
-	cacheTableView.SetColL(columns->ColNo(KDataTypeCol), EPresets);
-	cacheTableView.SetColL(columns->ColNo(KDataIdCol), aName);
-	cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-	cacheTableView.SetColL(columns->ColNo(KItemCount), countItems);
-	//to be set only if available
-	cacheTableView.SetColL(columns->ColNo(KLastModifiedCol),
-		aResponseHeaders.iLastModified);
-	//
-	cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-	//open stream
-	writeStream.OpenLC(cacheTableView,columns->ColNo(KCachedDataCol));
-	for(TInt iter=0;iter<countItems;iter++)
-		{
-		aPtrPresets[iter]->ExternalizeL(writeStream);
-		}
-	writeStream.CommitL();
-	CleanupStack::PopAndDestroy(&writeStream);
-	cacheTableView.PutL();
-		
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "CIRCacheMgmt::CachePresetItemL - Exiting." );
-	}
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CacheOtaInfoL()
-// Caches the OTA information  .By externalizing it into a db.
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRCacheMgmt::CacheOtaInfoL(const CIROTAUpdate& aOta,const TDesC& aName,
-										const CIRHttpResponseData& aResponseHeaders)
-	{
-	//Algo****
-	//1.check if similar request is cached
-	//2.delete if similar request is already present
-	//3.prepare a view for insertion
-	//4.push in the cached data request as serialized data
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheOtaInfoL - Entering" );
-
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-	//convert the id information of descriptor to int value for comparision
-	//clear data from the cache table before updating it with fresh data
-	//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDataIdCol().Length() +
-									KDefaultRealWidth + aName.Length());
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,EOtaInfo,&KDataIdCol,&aName);
-	User::LeaveIfError(iCacheDb.Begin());
-	//deletes a similar record if it existed.
-	//no problem if it did not exist
-	iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-	CleanupStack::PopAndDestroy(sqlQuery);
-	iCacheDb.Commit();
-	
-	//get the cached data view for preset column to update with fresh data.
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
-	_LIT(query1,"SELECT * FROM %S WHERE %S = %d");
-	HBufC* sqlQuery1 = HBufC::NewLC(query1().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDefaultRealWidth);
-	sqlQuery1->Des().Format(query1,&KCacheTable,&KDataTypeCol,EOtaInfo);	
-	RDbView cacheTableView;
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery1));
-	CleanupStack::PopAndDestroy(sqlQuery1);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());
-
-	//prepare insertion values
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length()== 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-	TBuf<KHttpDateLength>lastModified;
-	//default time set to 24hrs
-	//use iTrustPeriod
-	//type set to EPresets
-	//id set to dataId
-	//last modified time kept null
-	//item count set to 1
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	//write stream
-	RDbColWriteStream writeStream;
-	//start insertion into the view
-	//insert a new row
-	cacheTableView.InsertL();
-	//set values
-	cacheTableView.SetColL(columns->ColNo(KDataTypeCol), EOtaInfo);
-	cacheTableView.SetColL(columns->ColNo(KDataIdCol), aName);
-	cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-	cacheTableView.SetColL(columns->ColNo(KItemCount), 1);
-	//to be set only if available
-	cacheTableView.SetColL(columns->ColNo(KLastModifiedCol),
-		aResponseHeaders.iLastModified);
-	//
-	cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-	//open stream
-	writeStream.OpenLC(cacheTableView,columns->ColNo(KCachedDataCol));
-	aOta.ExternalizeL(writeStream);
-	writeStream.CommitL();
-	CleanupStack::PopAndDestroy(&writeStream);
-	cacheTableView.PutL();
-		
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheOtaInfoL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CacheLogoL()
-// Caches the logo data  .By externalizing it into a db.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCacheMgmt::CacheLogoL(const TDesC8& aData, const TDesC& aUrl,
-	                         const CIRHttpResponseData& aResponseHeaders)
-	{
-	//Algo****
-	//1.check if similar request is cached
-	//2.delete if similar request is already present
-	//3.prepare a view for insertion
-	//4.push in the cached data request as serialized data
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheLogoL - Entering" );
-	
-	
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-	//convert the id information of descriptor to int value for comparision
-	//clear data from the cache table before updating it with fresh data
-	//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDataIdCol().Length() +
-									KDefaultRealWidth + aUrl.Length());
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,ELogo,&KDataIdCol,&aUrl);
-	iCacheDb.Begin();
-	//deletes a similar record if it existed.
-	//no problem if it did not exist
-	iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-	CleanupStack::PopAndDestroy(sqlQuery);
-	iCacheDb.Commit();	
-	
-	//get the cached data view for preset column to update with fresh data.
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
-	_LIT(query1,"SELECT * FROM %S WHERE %S = %d");
-	HBufC* sqlQuery1 = HBufC::NewLC(query1().Length() + KDataTypeCol().Length() +
-									KCacheTable().Length() + KDefaultRealWidth);
-	sqlQuery1->Des().Format(query1,&KCacheTable,&KDataTypeCol,ELogo);	
-	RDbView cacheTableView;
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery1));
-	CleanupStack::PopAndDestroy(sqlQuery1);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());		
-	
-	//prepare insertion values
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length()== 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-	TBuf<KHttpDateLength>lastModified;
-	//default time set to 24hrs
-	//use iTrustPeriod
-	//type set to ELogo
-	//id set to dataId
-	//last modified time kept null
-	//item count set to 1
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	//write stream
-	//start insertion into the view
-	//insert a new row
-	cacheTableView.InsertL();
-	//set values
-	cacheTableView.SetColL(columns->ColNo(KDataTypeCol), ELogo);
-	cacheTableView.SetColL(columns->ColNo(KDataIdCol), aUrl);
-	cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-	cacheTableView.SetColL(columns->ColNo(KItemCount), 1);
-	//to be set only if available
-	cacheTableView.SetColL(columns->ColNo(KLastModifiedCol),
-		aResponseHeaders.iLastModified);
-	//
-	cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-	cacheTableView.SetColL(columns->ColNo(KCachedDataCol), aData);
-	
-	cacheTableView.SetColL(columns->ColNo(KETagHeader), 
-	    aResponseHeaders.iETag);
-	
-	cacheTableView.PutL();
-
-		
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "CIRCacheMgmt::CacheLogoL - Exiting." );					
-			
-	}
-	
-	
-	
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CreateCacheTableL()
-// creates the cache table
-// ---------------------------------------------------------------------------
-//
-//CacheTable
-// -----------------------------------------------------------------------------------------------------
-//| RowIndex|DataType|DataId|TrustPeriod|LastModified  |LastAccessed|Created|ItemCount|CachedData|
-//------------------------------------------------------------------------------------------------
-//| auto    |TInt    |DesC  |TInt       |TDesC/DateTime|TTime       |Time   |TInt     | Streamed |
-//|increment|0,1,2,NotNull|NotNull|  NotNull  |              |            |       |         | Data     |
-//------------------------------------------------------------------------------------------------------
-void CIRCacheMgmt::CreateCacheTableL()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CreateCacheTableL - Entering." );
-	//the row index column which autoincrements
-	TDbCol rowIndexCol(KRowIndexCol, EDbColInt32);   
-    rowIndexCol.iAttributes = TDbCol::EAutoIncrement;
-    
-    //the datatype column,to identify between 	ECatagory = 0,EChannels=1,EPresets=2
-    TDbCol dataTypeCol(KDataTypeCol, EDbColInt32);
-    dataTypeCol.iAttributes = TDbCol::ENotNull;
-     
-    //the dataID column,to uniquely identify the cached data
-    TDbCol dataId(KDataIdCol, EDbColLongText16);
-    dataId.iAttributes = TDbCol::ENotNull; 
-    
-    //the trust period column to calculate cache validity
-    TDbCol trustPeriodCol(KTrustPeriodCol, EDbColInt32);
-    
-    //the lastmodified column to fetch data conditionally
-    TDbCol lastModifiedCol(KLastModifiedCol, EDbColDateTime);
-
-    
-    //the last accessed column used for table clean-up
-    TDbCol creationTimeCol(KTimeCreation, EDbColDateTime);
-	    
-    //the time of creation saved to calculate the cache validity
-    TDbCol lastAccessedCol(KLastAccessedCol, EDbColDateTime);
-    
-	//the number of items in the data field
-    TDbCol itemCountCol(KItemCount, EDbColInt32);
-    
-    //the data column to store cached data
-    //The column stores a potentially large amount of Unicode text data.
-    TDbCol cachedDataCol(KCachedDataCol, EDbColLongText8);
-    
-    //the ETag header received along with the logo data
-    TDbCol etagHeader(KETagHeader, EDbColText8);
-    
-    //colset
-    CDbColSet* cacheTablerColSet = CDbColSet::NewLC();
-    //populate colset
-	 cacheTablerColSet->AddL(rowIndexCol);
-	 cacheTablerColSet->AddL(dataTypeCol);
-	 cacheTablerColSet->AddL(dataId);
-	 cacheTablerColSet->AddL(trustPeriodCol);
-	 cacheTablerColSet->AddL(lastModifiedCol);
-	 cacheTablerColSet->AddL(creationTimeCol);
-	 cacheTablerColSet->AddL(lastAccessedCol);
-	 cacheTablerColSet->AddL(itemCountCol);
-	 cacheTablerColSet->AddL(cachedDataCol);
-	 cacheTablerColSet->AddL(etagHeader);
-
-    // Create the CacheTable table
-    User::LeaveIfError(iCacheDb.CreateTable(KCacheTable, *cacheTablerColSet));
-    
-    CleanupStack::PopAndDestroy(cacheTablerColSet);	
-    IRLOG_DEBUG( "IRCacheMgmt::CreateCacheTableL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRCacheMgmt::CreateCacheIndexL()
-// creates the indices for cache table
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::CreateCacheIndexL()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CreateCacheIndexL - Entering." );
-	TDbKeyCol rowIndexCol(KRowIndexCol);
-	TDbKeyCol dataTypeCol(KDataTypeCol);
-	TDbKeyCol dataIdCol(KDataIdCol,KDataIdIndexSize);
-	TDbKeyCol timeCreationCol(KTimeCreation);
-	TDbKeyCol lastAccessedCol(KLastAccessedCol);
-	 
-	CDbKey* index;
-	//index on the auto increment row id
-	index = CDbKey::NewLC();   
-	index->AddL(rowIndexCol);
-	User::LeaveIfError(iCacheDb.CreateIndex(KRowIndexColIndex, KCacheTable,
-		 *index));
-	CleanupStack::PopAndDestroy(index);
-	
-	//index on the datatype column
-	index = CDbKey::NewLC();   
-	index->AddL(dataTypeCol);
-	User::LeaveIfError(iCacheDb.CreateIndex(KDataTypeColIndex, KCacheTable, 
-		*index));
-	CleanupStack::PopAndDestroy(index);
-	
-	//index on the data id column
-	index = CDbKey::NewLC();   
-	index->AddL(dataIdCol);
-	User::LeaveIfError(iCacheDb.CreateIndex(KDataIdColIndex, KCacheTable, 
-		*index));
-	CleanupStack::PopAndDestroy(index);
-	
-	//index on the time of record creation column
-	index = CDbKey::NewLC();   
-	index->AddL(timeCreationCol);
-	User::LeaveIfError(iCacheDb.CreateIndex(KTimeCreationIndex, KCacheTable, 
-		*index));
-	CleanupStack::PopAndDestroy(index);
-	
-	//index on the last accessed column
-	index = CDbKey::NewLC();   
-	index->AddL(lastAccessedCol);
-	User::LeaveIfError(iCacheDb.CreateIndex(KLastAccessedColIndex, KCacheTable,
-		 *index));
-	CleanupStack::PopAndDestroy(index);
-	IRLOG_DEBUG( "IRCacheMgmt::CreateCacheIndexL - Exiting." );
-	}
-// ---------------------------------------------------------------------------
-//void CIRCacheMgmt::UpdateTrustPeriod()
-//updates the trust period for a not-modified responce
-// ---------------------------------------------------------------------------
-
-//
-EXPORT_C void CIRCacheMgmt::UpdateTrustPeriodL(	TInt aType, const TDesC& aName,
-	CIRHttpResponseData& aResponseHeaders)
-	{	
-	IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriodL - Entering" );
-	TInt error = OpenCacheDb();
-	if(KErrNone != error)
-		{
-	    IRLOG_ERROR2( "IRCacheMgmt::UpdateTrustPeriodL - Error while opening cache DB (%d).", error );			
-		//no problems if this function returns here.
-		//normal flow won't get affected.
-		//only a particular request wont get cached
-		return;	
-		}
-
-	//SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
-	_LIT(query,"SELECT * FROM %S WHERE %S = %d AND %S = '%S'");
-	HBufC* sqlQuery = HBufC::NewLC(query().Length() + KCacheTable().Length() +
-		 KDataIdCol().Length() + KDataTypeCol().Length() + aName.Length()+
-		 KDefaultRealWidth );
-		 
-	sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,aType,&KDataIdCol,&aName);
-	//create view
-	RDbView cacheTableView;
-	User::LeaveIfError(cacheTableView.Prepare(iCacheDb,*sqlQuery));
-	CleanupStack::PopAndDestroy(sqlQuery);
-	CleanupClosePushL(cacheTableView);
-	
-	User::LeaveIfError(cacheTableView.EvaluateAll());
-	
-	//prepare the update data
-	//will go into last accessed aswell as the creation time fields
-	TTime currentTime;
-	currentTime.UniversalTime();
-	//get the new trust period from the headers
-	TInt maxAge;
-	if(aResponseHeaders.iMaxAge.Length() == 0)
-		{
-		maxAge=iTrustPeriod.Int();
-		}
-	else
-		{
-		TLex8 conv(aResponseHeaders.iMaxAge);
-		conv.Val(maxAge);	
-		maxAge = maxAge * KDefaultInterval;
-		}
-    CDbColSet* columns = cacheTableView.ColSetL();
-    CleanupStack::PushL(columns);
-	cacheTableView.FirstL();
-	if(cacheTableView.AtRow())
-		{
-		cacheTableView.UpdateL();
-		//update values
-		cacheTableView.SetColL(columns->ColNo(KTrustPeriodCol), maxAge);
-		cacheTableView.SetColL(columns->ColNo(KLastAccessedCol), currentTime);
-		cacheTableView.SetColL(columns->ColNo(KTimeCreation), currentTime);
-		cacheTableView.PutL();
-		}
-
-	CleanupStack::PopAndDestroy(columns);
-	CleanupStack::PopAndDestroy(&cacheTableView);
-	CloseDb();
-	IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Exiting." );	
-	}
-	
-// ---------------------------------------------------------------------------
-//  Used to dcontrol the cache table size by compacting and clearing up unused items
-// ---------------------------------------------------------------------------
-//
- void CIRCacheMgmt::CheckSizeL()
- 	{
- 	IRLOG_DEBUG( "IRCacheMgmt::CheckSizeL - Entering." );
- 	OpenCacheDb();
- 	RDbDatabase::TSize dbSize = iCacheDb.Size();
- 	iCacheDbSize = dbSize.iSize;
- 	TInt size = CacheSize();
- 	if( size >= KCacheCriticalSizeLimit )
- 		{
- 		RemoveOldUnusedDataL();
- 		OpenCacheDb();
- 		iCacheDb.Compact();
- 		//refresh the size information
- 		dbSize = iCacheDb.Size();
- 		iCacheDbSize = dbSize.iSize;
- 		}
-	CloseDb();
-	IRLOG_DEBUG( "IRCacheMgmt::CheckSizeL - Exiting." );
- 	}
-
-// ---------------------------------------------------------------------------
-// Used to control the cache table size by compacting and clearing up unused items
-// ---------------------------------------------------------------------------
-//
-void CIRCacheMgmt::RemoveOldUnusedDataL()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::RemoveOldUnusedDataL - Entering." );
-	OpenCacheDb();
-	RDbTable cacheTable;
-	//open the table in updatable mode
-	User::LeaveIfError(cacheTable.Open(iCacheDb, KCacheTable, cacheTable.EUpdatable));
-	CleanupClosePushL(cacheTable);
-	cacheTable.Reset();
-	//set index as the last accessed time
-	cacheTable.SetIndex(KLastAccessedCol);
-	//begin transaction
-	iCacheDb.Begin();
-	// no of rows deleted is one fourth of the total number of rows
-	TInt deleteRows = cacheTable.CountL()/KPercentRowsDeleted;
-	TInt inc = 0;
-	//delete incrementally
-	for(cacheTable.FirstL();((inc < deleteRows) && cacheTable.AtRow());inc++)
-		{
-		cacheTable.GetL();
-		cacheTable.DeleteL();
-		cacheTable.NextL();
-		}
-	//commit transaction
-	iCacheDb.Commit();
-	CleanupStack::PopAndDestroy(&cacheTable);
-	CloseDb();
-	IRLOG_DEBUG( "IRCacheMgmt::RemoveOldUnusedDataL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Used to get the cache table size
-// ---------------------------------------------------------------------------
-//
-TInt CIRCacheMgmt::CacheSize()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::CacheSize - Entering." );
-	OpenCacheDb();
- 	RDbDatabase::TSize dbSize = iCacheDb.Size();
- 	iCacheDbSize = dbSize.iSize;
- 	CloseDb();
- 	IRLOG_DEBUG( "IRCacheMgmt::CacheSize - Exiting." );
-	return iCacheDbSize;
-	}
-// ---------------------------------------------------------------------------
-//remove OTA info from cache if data is not valid any longer
-// ---------------------------------------------------------------------------
-EXPORT_C void CIRCacheMgmt::RemoveOtaInfoL()
-	{
-	IRLOG_DEBUG( "IRCacheMgmt::RemoveOtaInfoL - Entering." );
-	//check if the silence period param is set.
-	//if not set that means the cached ota info if present is not valid.
-	if(iSettings->GetSilencePeriodL() == 0)
-		{
-		TInt error = OpenCacheDb();
-		if(KErrNone != error)
-			{
-			//no problems if this function returns here.
-			//normal flow won't get affected.
-			//only a particular request wont get cached
-			return;	
-			}
-		//clear data from the cache table 
-		//DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE 
-		_LIT(query,"DELETE FROM %S WHERE %S = %d");
-		HBufC* sqlQuery = HBufC::NewLC(query().Length() + KDataTypeCol().Length() +
-										KCacheTable().Length() + KDataIdCol().Length());
-		sqlQuery->Des().Format(query,&KCacheTable,&KDataTypeCol,EOtaInfo);
-		User::LeaveIfError(iCacheDb.Begin());
-		//no problem if it did not exist
-		iCacheDb.Execute(*sqlQuery,EDbCompareNormal);
-		CleanupStack::PopAndDestroy(sqlQuery);
-		iCacheDb.Commit();
-        CloseDb();
-		}
-	IRLOG_DEBUG( "IRCacheMgmt::RemoveOtaInfoL - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// Adds a cache observer
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCacheMgmt::AddObserverL( MIRCacheObserver* aObserver )
-    {
-    IRLOG_DEBUG( "IRCacheMgmt::AddObserverL - Entering." );
-    iCacheObservers.AppendL( aObserver );
-    IRLOG_DEBUG( "IRCacheMgmt::AddObserverL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// Removes a cache observer
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCacheMgmt::RemoveObserver( MIRCacheObserver* aObserver )
-    {
-    IRLOG_DEBUG( "IRCacheMgmt::RemoveObserver - Entering." );
-    TInt objectIndex = iCacheObservers.Find( aObserver );
-    
-    if ( objectIndex != KErrNotFound )
-        {
-        iCacheObservers.Remove( objectIndex );
-        }
-    IRLOG_DEBUG( "IRCacheMgmt::RemoveObserver - Exiting." );
-    }
-
-
-
-
Binary file internetradio2.0/cenrep/2000b499.txt has changed
--- a/internetradio2.0/cenrep/cenrep_keys.pm	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1755 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-###################################################
-###################################################
-# This module contains common helper functions for 
-# handling excel sheets from perl.
-# Version 0.9
-#    - now checking that Int and Real values are really 
-#      numbers
-#    - rfs, cust config and backup are must fields for variant row
-#    - All rows, which have "Comment:" in the uid name are ignored.
-###################################################
-###################################################
-package cenrep_keys;
-
-##########################################
-# Libraries used
-##########################################
-use strict;
-use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
-use Exporter ();     # Needed to make constants available to caller.
-use excel_support;    # opening/closing workbook, etc.. functions.
-
-##########################################
-# Defining all the "global" variables, that we are using.
-##########################################
-use vars qw(
-            @ISA
-            @EXPORT
-            );
-
-@ISA = qw(Exporter); # Inherit from Exporter module (import method needed).
-# Define all the functions defined by this module
-use subs qw(
-	    hasValue
-	    addHash
-	    readCol
-	    readCentrepKeyInfo
-	    checkCentrepKeyInfo
-	    checkCentrepKeySheetName
-	    );
-
-##########################################
-# Define the exports from this module that can be used
-# Outside
-##########################################
-@EXPORT = qw(
-	     &addHash
-	     &readCol
-             &readCentrepKeyInfo
-	     &checkCentrepKeyInfo
-	     &checkCentrepKeySheetName
-             );
-
-
-my $globalMaxColCount = 43;
-my $globalMaxEmptyRowCount = 10;
-
-#######################################
-# Checks that the cell exists and has some value
-#
-# Params: refToWorkSheet,row,column
-#
-# Return: 1 if the cell had some value
-#         0 if the cell did not have a value
-#######################################
-sub hasValue
-{
-    my $refToWorksheet = shift;
-    my $row = shift;
-    my $col = shift;
-
-    if($col < 1)
-    {
-	return 0;
-    }
-    if(defined($$refToWorksheet->Cells( $row, $col  )->{ 'Value' }))
-    {
-	return 1;
-    }
-    if(!(defined($$refToWorksheet->Cells( $row, $col  ))  ||$$refToWorksheet->Cells( $row, $col  )->{ 'Value' }))
-    {
-	print "$row $col\n";
-	print $$refToWorksheet->Name,"\n";
-    }
-    if($$refToWorksheet->Cells( $row, $col  )->{ 'Value' } !~ /^\s*$/)
-    {
-	return 1;
-    }
-
-    return 0;
-}
-
-#######################################
-# Reads a cell value from given worksheet and given place.
-# If the value is empty then initializes teh return value to the
-# given default value
-#
-# Params: refToWorkSheet,row,column,defValue
-#
-# Return: the read value
-#######################################
-sub readCol
-{
-    my $refToWorksheet = shift;
-    my $row = shift;
-    my $col = shift;
-    my $defValue = shift;
-
-    my $retVal = undef;
-    if($col > 0)
-    {
-	$retVal = $$refToWorksheet->Cells( $row, $col  )->{ 'Value' };
-    }
-    if(!defined($retVal) || $retVal =~ /^\s*$/)
-    {
-	$retVal = $defValue;
-    }
-    
-    return $retVal;
-}
-#######################################
-# If there is no given key defined in the given hash, then
-# adds a key to point to a new hash
-#
-# Params: newKey,refToHash,refToHash
-#
-# Return: ref to added hash, or existing hash
-#######################################
-sub addHash
-{
-    my $key = shift;
-    my $refToHash = shift;
-    
-    if(! defined( $$refToHash{$key}))
-    {
-	my %newHash;
-	$$refToHash{$key} = \%newHash;
-    }
-
-    return $$refToHash{$key};
-}
-
-###########################################################################
-#
-###########################################################################
-sub addCapability
-{
-    my $refToRList = shift;
-    my $refToWList = shift;
-    my $capaColumnValue = shift;
-    my $capaName = shift;
-
-    if($capaColumnValue =~ /R/i)
-    {
-	push(@$refToRList,$capaName);
-    }
-    if($capaColumnValue =~ /W/i)
-    {
-	push(@$refToWList,$capaName);
-    }
-}
-
-###########################################################################
-#
-###########################################################################
-sub readIndexes
-{
-   my $refToWorksheet = shift;
-
-   my @retList;
-    
-   push(@retList,getIndexByColName($refToWorksheet,"Uid Name",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Uid Value",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Range From",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Range To",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Key Name",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Key Int",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Shared Data Name",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Removed",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Platform Release",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Variant Name",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Def Value",$globalMaxColCount));
-   my $index = getIndexByColName($refToWorksheet,"Read Only",$globalMaxColCount);
-   if($index  < 0)
-   {
-       $index = getIndexByColName($refToWorksheet,"Read  Only",$globalMaxColCount);
-   }
-   push(@retList,$index);
-   push(@retList,getIndexByColName($refToWorksheet,"Key Type",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Backup",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"RFS",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Cust Config",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"None",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"All",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"All - TCB",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"NetworkServices",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"LocalServices",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"ReadUserData",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"WriteUserData",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Location",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"ReadDeviceData",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"WriteDeviceData",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"ProtServ",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"DRM",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"SwEvent",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"PowerMgmt",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"AllFiles",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"DiskAdmin",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"NetworkControl",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"MultiMediaDD",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"CommDD",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"TCB",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"TrustedUI",$globalMaxColCount));
-
-   push(@retList,getIndexByColName($refToWorksheet,"AlwaysPass",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"UserEnvironment",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"SurroundingsDD",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"SID Read",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"SID Write",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Range From",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Range To",$globalMaxColCount));
-   push(@retList,getIndexByColName($refToWorksheet,"Owner",$globalMaxColCount));
-
-
-   return @retList;
-}
-
-###########################################################################
-# Function that reads all columns from the central repository sheet to the 
-# given hash.
-# The format of the returned hash is:
-#  {
-#  <uid> => 
-#    {
-#    "name" => <uidName>
-#    "uid_specific"  
-#           = > {
-#               <variant>
-#                   => {
-#                      <release> 
-#                          => { 
-#                              "R" => (<capa1ForReading>,<capa2ForReading>)
-#                              "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#                              "RSid" => (<sidForReading>)
-#                              "WSid" => (<sidForWriting>)
-#                              "owner" => <ownerSid>
-#                              "rfs"  => <0/1>
-#                              "backup"  => <0/1>
-#                              }
-#                      }
-#               }
-#    "ranges" 
-#           => {
-#              <rangeFrom> 
-#                => {                  
-#                   "common" => (   # == defined in range row
-#                                "removed" => <release> [optional, only if specified]
-#                                }
-#                   "to" => {
-#                          <rangeTo>
-#                            => {
-#                                <variant>
-#                                    => {
-#                                       <release> 
-#                                            => { 
-#                                               "R" => (<capa1ForReading>,<capa2ForReading>)
-#                                               "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#                                               "RSid" => (<sidForReading>)
-#                                               "WSid" => (<sidForWriting>)
-#                                               "rfs"  => <0/1>
-#                                               "backup"  => <0/1>
-#                                               }
-#                                        }
-#                                }
-#                             }   
-#                      }
-#                   }   
-#              } # ranges end                
-#    "keys" => {
-#              <keyInt> 
-#                   => {
-#                      "common" => (   # == defined in key row
-#                                  "name" => <keyName>
-#                                  "sheetName" => <eexcelSheetName, from which this key was read>
-#                                  "sd-name" => <sharedDataName> [optional, only if specified]
-#                                  "read-only" => <0/1>
-#                                  "key type" => <bin/int/str/bool>
-#                                  "removed" => <release> [optional, only if specified]
-#                                  "owner" => <ownerName>
-#                                  "entity" => <ownerEntity>
-#                                  }
-#                      "release"
-#                           => {
-#                              <variant>  # "default" is special case
-#                                 => {
-#                                    <release> 
-#                                        => { 
-#                                           "R" => (<capa1ForReading>,<capa2ForReading>)
-#                                           "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#                                           "RSid" => (<sidForReading>)
-#                                           "WSid" => (<sidForWriting>)
-#                                           "value" => <value>
-#                                           "rfs"  => <0/1>
-#                                           "backup"  => <0/1>
-#                                            }
-#                                    }
-#                              }
-#                       }
-#                } # keys
-#
-#
-#
-#
-# Params: referenceToWorksheet,refToHash
-#
-# Return: 0 on successfull reading
-#         1 on case, where the worksheet was not OK (for isntance name is 
-#                     not according to specification.
-###########################################################################
-sub readCentrepKeyInfo   
-{
-    my $refToWorksheet = shift;
-    my $refToHash = shift;
-    my $owner = shift;
-    my $entity = shift;
-    my $sheetName = shift;
-   
-    # ----------------------------------------------------------------  
-    # look to header information
-    # ----------------------------------------------------------------  
-    # Uid value
-    # Key name value
-    # Key value
-    # 
-    # 
-    # 
-    # 
-    # 
-    
-    my ($uidNameIndex,$uidValueIndex,$rangeFromIndex,$rangeToIndex,$keyNameValueIndex,$keyIntValueIndex,$sdNameIndex,$removedIndex,$releaseIndex,$variantNameIndex,$valueIndex,$readOnlyIndex,
-	$keyTypeIndex,$backupIndex,$rfsIndex,$custConfigIndex,$capaNoneIndex,$capaAllIndex,$capaAllMinusTcbIndex,$capaNetworkServicesIndex,
-	$capaLocalServicesIndex,$capaReadUserDataIndex,$capaWriteUserDataIndex,$capaLocationIndex,$capaReadDeviceDataIndex,
-	$capaWriteDeviceDataIndex,$capaProtServIndex,$capaDrmIndex,$capaSwEventIndex,$capaPowerMgmtIndex,$capaAllFilesIndex,
-	$capaDiskAdminIndex,$capaNetworkControlIndex,$capaMultiMediaDDIndex,$capaCommDDIndex,
-	$capaTCBIndex,$capaTrustedUIIndex,$capaAlwaysPassIndex,$capaUserEnvIndex,$capaSurroundingsDDIndex,
-	$capaSidReadIndex,$capaSidWriteIndex,$rangeFromIndex,$rangeToIndex,$ownerIndex) = readIndexes($refToWorksheet);
-
-    if( $uidValueIndex < 0)
-    {
-	return;
-    }
-
-    my $row = 1;
-    my $emptyRowCount = 0;
-
-    ######################################################################
-    # Loop row by row until we have found $globalMaxEmptyRowCount of rows
-    # empty one after each other.
-    ######################################################################
-    my $currUid = "";
-    my $currUidKeysHash;
-    my $currUidRangesHash;
-    my $currUidSpecificHash;
-    my $currRangeHash = undef;
-    my $currKey = "";
-    my $currKeyReleaseHash;  # the ref to has that is found from "release"
-    my $lastActiveRowType = 0;   # 0 = not defined, 1 = uid, 2 = range, 3 = key
-
-    for( $row = 2;; $row++ ) 
-    {	         
-	#------------------------------------------------------------
-	# We only allow $globalMaxEmptyRowCount empty rows, before we stop
-	# handling the specific sheet
-	#------------------------------------------------------------
-	if(! (   hasValue($refToWorksheet,$row, $uidValueIndex )
-	      || hasValue($refToWorksheet,$row, $keyIntValueIndex )	
-	      || hasValue($refToWorksheet,$row, $valueIndex )	
-	      || hasValue($refToWorksheet,$row, $releaseIndex )	
-	      || hasValue($refToWorksheet,$row, $rangeFromIndex )	
-	      || hasValue($refToWorksheet,$row, $rangeToIndex )	
-	     ))
-	{
-	    $emptyRowCount++;
-	    if($emptyRowCount > $globalMaxEmptyRowCount)
-	    {
-		last;
-	    }
-	    next;
-	}
-	else
-	{
-	    # Was not empty line, reset counter.
-	    $emptyRowCount = 0;
-	}
-		
-	#------------------------------------------------------------
-	# Read the needed rows from the row
-	#------------------------------------------------------------
-	my $uidName             = readCol($refToWorksheet,$row,$uidNameIndex,"");
-	my $uid                 = readCol($refToWorksheet,$row,$uidValueIndex,"");
-	my $keyName             = readCol($refToWorksheet,$row,$keyNameValueIndex,"");
-	my $key                 = readCol($refToWorksheet,$row,$keyIntValueIndex,"");
-	my $sdName              = readCol($refToWorksheet,$row,$sdNameIndex,"");
-	my $removed             = readCol($refToWorksheet,$row,$removedIndex,"");
-	my $release             = readCol($refToWorksheet,$row,$releaseIndex,"");
-	my $variant             = readCol($refToWorksheet,$row,$variantNameIndex,"");
-	my $value               = readCol($refToWorksheet,$row,$valueIndex,"");
-	my $ro                  = readCol($refToWorksheet,$row,$readOnlyIndex,"");
-	my $keyType             = readCol($refToWorksheet,$row,$keyTypeIndex,"");
-	my $backup              = readCol($refToWorksheet,$row,$backupIndex,"");
-	my $rfs                 = readCol($refToWorksheet,$row,$rfsIndex,"");
-	my $custConfig          = readCol($refToWorksheet,$row,$custConfigIndex,"");
-	my $capaNone            = readCol($refToWorksheet,$row,$capaNoneIndex,"");         
-	my $capaAll             = readCol($refToWorksheet,$row,$capaAllIndex,"");         
-	my $capaAllMinusTcb     = readCol($refToWorksheet,$row,$capaAllMinusTcbIndex,"");
-	my $capaNetworkServices = readCol($refToWorksheet,$row,$capaNetworkServicesIndex,"");
-	my $capaLocalServices   = readCol($refToWorksheet,$row,$capaLocalServicesIndex,"");
-	my $capaReadUserData    = readCol($refToWorksheet,$row,$capaReadUserDataIndex,"");  
-	my $capaWriteUserData   = readCol($refToWorksheet,$row,$capaWriteUserDataIndex,"");
-	my $capaLocation        = readCol($refToWorksheet,$row,$capaLocationIndex,"");  
-	my $capaReadDeviceData  = readCol($refToWorksheet,$row,$capaReadDeviceDataIndex,"");
-	my $capaWriteDeviceData = readCol($refToWorksheet,$row,$capaWriteDeviceDataIndex,"");
-	my $capaProtServ        = readCol($refToWorksheet,$row,$capaProtServIndex,"");
-	my $capaDrm             = readCol($refToWorksheet,$row,$capaDrmIndex,"");
-	my $capaSwEvent         = readCol($refToWorksheet,$row,$capaSwEventIndex,"");
-	my $capaPowerMgmt       = readCol($refToWorksheet,$row,$capaPowerMgmtIndex,"");
-	my $capaAllFiles        = readCol($refToWorksheet,$row,$capaAllFilesIndex,"");
-	my $capaDiskAdmin       = readCol($refToWorksheet,$row,$capaDiskAdminIndex,"");
-	my $capaNetworkControl  = readCol($refToWorksheet,$row,$capaNetworkControlIndex,"");
-	my $capaMultiMediaDD    = readCol($refToWorksheet,$row,$capaMultiMediaDDIndex,"");
-	my $capaCommDD          = readCol($refToWorksheet,$row,$capaCommDDIndex,"");
-	my $capaTCB             = readCol($refToWorksheet,$row,$capaTCBIndex,"");
-	my $capaTrustedUI       = readCol($refToWorksheet,$row,$capaTrustedUIIndex,"");
-
-	my $capaAlwaysPass      = readCol($refToWorksheet,$row,$capaAlwaysPassIndex,"");
-	my $capaUserEnv         = readCol($refToWorksheet,$row,$capaUserEnvIndex,"");
-	my $capaSurroundingsDD  = readCol($refToWorksheet,$row,$capaSurroundingsDDIndex,"");
-	my $capaSidRead         = readCol($refToWorksheet,$row,$capaSidReadIndex,"");
-	my $capaSidWrite        = readCol($refToWorksheet,$row,$capaSidWriteIndex,"");
-	my $rangeFrom           = readCol($refToWorksheet,$row,$rangeFromIndex,"");
-	my $rangeTo             = readCol($refToWorksheet,$row,$rangeToIndex,"");
-	my $uidOwner            = readCol($refToWorksheet,$row,$ownerIndex,"");
-
-	if($uidName =~ /^\s*Comment:/i)
-	{
-	    # comment rows are ignored
-	    next;
-	}
-
-	#------------------------------------------------------------
-	# Handle UID row
-	#------------------------------------------------------------
-	if($uid !~ /^\s*$/)
-	{
-	    $currUid = $uid;
-	    $currKey = "";
-	    $lastActiveRowType = 1;
-	    my $tmpRefToHash = addHash($uid,$refToHash);
-	    $currUidKeysHash = addHash("keys",$tmpRefToHash);
-	    $$tmpRefToHash{"name"} = $uidName;
-	    $currUidRangesHash = addHash("ranges",$tmpRefToHash);
-	    $currUidSpecificHash = addHash("uid_specific",$tmpRefToHash);
-	}
-	#------------------------------------------------------------
-	# Handle range row
-	#------------------------------------------------------------
-	elsif($rangeFrom !~ /^\s*$/ || $rangeTo !~ /^\s*$/)
-	{
-	    $currRangeHash = addHash($rangeFrom,$currUidRangesHash);
-	    my $commonHash = addHash("common",$currRangeHash);
-	    $currRangeHash = addHash("to",$currRangeHash);
-	    $currRangeHash = addHash($rangeTo,$currRangeHash);
-
-	    $$commonHash{"removed"} = $removed;
-	    $lastActiveRowType = 2;
-	}
-	#------------------------------------------------------------
-	# Handle key row
-	#------------------------------------------------------------
-	elsif($key !~ /^\s*$/)
-	{
-	    $currKey = $key;
-	    $lastActiveRowType = 3;
-	    my $keyHash = addHash($key,$currUidKeysHash);
-	    ######################################################
-            #   "common" => (
-	    #               "name" => <someName>
-	    #               "sheetName" => <someNameWithoutPath>
-	    #               "sd-name" => <someName>  [optional]
-            #               "read-only" => <0/1>
-            #               "key type" => <bin/int/str/bool>
-	    #               "removed" => <release>
-	    #               "owner" => <ownerName>
-	    #               "entity" => <entity>
-            #               }
-	    ######################################################
-	    my $commonHash = addHash("common",$keyHash);
-
-	    $$commonHash{"owner"} = $owner;
-	    $$commonHash{"entity"} = $entity;
-	    $$commonHash{"name"} = $keyName;
-	    $$commonHash{"sheetName"} = $sheetName;
-	    
-            # read-only attribute is set always from the "key row". 
-	    # It can't be overwritten
-	    $$commonHash{"read-only"} = 0;
-	    if($ro =~ /^\s*yes\s*$/i)
-	    {
-		$$commonHash{"read-only"} = 1;
-	    }
-	    # key type attribute is set always from the "key row". It can't be overwritten
-	    $$commonHash{"key type"} = $keyType;
-
-	    # removed [ optional, we only defined, if specified]
-	    if($removed !~ /^\s*$/)
-	    {
-		$$commonHash{"removed"} = $removed;
-	    }
-
-	    # shared data name [ optional, we only defined, if specified]
-	    if($sdName !~ /^\s*$/)
-	    {
-		$$commonHash{"sd-name"} = $sdName;
-	    }
-	    
-	    ######################################################
-            #   "release" => {
-	    #                ....
-            #                }     
-	    # information to this has in filled later on.
-	    ######################################################
-	    $currKeyReleaseHash = addHash("release",$keyHash);	    
-	}
-	#------------------------------------------------------------
-	# Handle variant row
-	#------------------------------------------------------------
-	elsif($release !~ /^\s*$/)
-	{
-	    # harmonize the release syntax
-	    if($variant =~ /^\s*$/)
-	    {
-		$variant = "default";
-	    }
-	    my $relHashRef;
-	    if($lastActiveRowType == 3)
-	    {
-		$relHashRef = addHash($variant,$currKeyReleaseHash);
-	    }
-	    elsif($lastActiveRowType == 2)
-	    {
-		$relHashRef = addHash($variant,$currRangeHash);
-	    }
-	    elsif($lastActiveRowType == 1)
-	    {
-		$relHashRef = addHash($variant,$currUidSpecificHash);
-	    }
-	    ######################################################
-            #  <release>
-            #      => { 
-            #         "R" => (<capa1ForReading>,<capa2ForReading>)
-            #         "W" => (<capa1ForWriting>,<capa2ForWriting>)
-            #         "RSid" => (<sidForReading>)
-            #         "WSid" => (<sidForWriting>)
-            #         "value" => <value>             # only if this is for keys
-            #         "owner" => <uid>               # only if this is for uid
-            #         "rfs"  => <0/1>
-            #         "backup"  => <0/1>
-            #         }
-	    ######################################################
-	    $release =~ /s([0-9]+)\s+([0-9]+\.[0-9]+)/i;
-	    my $usedRel = "S$1 $2";
-	    my $refToVarHash = addHash($usedRel,$relHashRef);
-	    # Value and owner are specific only to some variant row types.
-	    if($lastActiveRowType == 3)   # This variant row is for a key
-	    {
-		$$refToVarHash{"value"} = $value;
-	    }
-	    elsif($lastActiveRowType == 1) # This variant row is for the uid
-	    {
-		$$refToVarHash{"owner"} = $uidOwner;
-	    }
-	    $$refToVarHash{"rfs"} = 0;
-	    if($rfs =~ /^\s*yes\s*$/i)
-	    {
-		$$refToVarHash{"rfs"} = 1;
-	    }
-	    $$refToVarHash{"backup"} = 0;
-	    if($backup =~ /^\s*yes\s*$/i)
-	    {
-		$$refToVarHash{"backup"} = 1;
-	    }
-	    if(!defined($$refToVarHash{"W"}))
-	    {
-		my @list;
-		$$refToVarHash{"W"} = \@list;
-	    }
-	    if(!defined($$refToVarHash{"R"}))
-	    {
-		my @list;
-		$$refToVarHash{"R"} = \@list;
-	    }
-
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaNone,"AlwaysPass");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaAlwaysPass,"AlwaysPass");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaNetworkServices,"NetworkServices");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaLocalServices,"Local Services");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaReadUserData,"ReadUserData");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaWriteUserData,"WriteUserData");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaLocation,"Location");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaReadDeviceData,"ReadDeviceData");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaWriteDeviceData,"WriteDeviceData");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaProtServ,"ProtServ");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaDrm,"DRM");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaSwEvent,"SwEvent");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaPowerMgmt,"PowerMgmt");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaAllFiles,"AllFiles");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaDiskAdmin,"DiskAdmin");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaNetworkControl,"NetworkControl");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaMultiMediaDD,"MultiMediaDD");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaCommDD,"CommDD");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaTCB,"TCB");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaTrustedUI,"TrustedUI");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaUserEnv,"UserEnvironment");
-	    addCapability($$refToVarHash{"R"},$$refToVarHash{"W"},$capaSurroundingsDD,"SurroundingsDD");
-	    
-	    my @list1;
-	    $$refToVarHash{"RSid"} = \@list1;
-	    if($capaSidRead !~ /^\s*$/)
-	    {
-		push(@list1,$capaSidRead);
-	    }
-	    my @list2;
-	    $$refToVarHash{"WSid"} = \@list2;
-	    if($capaSidWrite !~ /^\s*$/)
-	    {
-		push(@list2,$capaSidWrite);
-	    }
-	}
-    }
-
-    return $refToHash;
-}
-
-
-###########################################################################
-#
-###########################################################################
-sub checkRelease
-{
-    my $row = shift;
-    my $value = shift;
-    my $columnName = shift;
-
-    if($value !~ /^\s*S60\s+[1-9]+\.[0-9]+\s*$/ && $value !~ /^\s*$/)
-    {
-	print "Row $row: $columnName -column has wrong release syntax. (should be for instance \"S60 3.0\"\n";
-	return 1;
-    }
-    return 0;
-}
-
-###########################################################################
-#
-###########################################################################
-sub checkCapability
-{
-    my $row = shift;
-    my $value = shift;
-    my $columnName = shift;
-    
-    if($value !~ /^\s*$/ &&
-      $value !~ /^R$/ &&
-      $value !~ /^W$/ &&
-      $value !~ /^RW$/ 
-      )
-    {
-	print "Row $row: The $columnName -column has invalid value \"$value\".\n";
-	return 1;
-    }    
-    return 0;
-}
-
-###########################################################################
-# Makes syntax checks to the given worksheet
-#
-#
-# Params: referenceToWorksheet
-#
-###########################################################################
-sub checkCentrepKeyInfo   
-{
-    my $refToWorksheet = shift;
-    my $ignoreWarnings = shift;
-
-    # ----------------------------------------------------------------  
-    # look to header information
-    # ----------------------------------------------------------------      
-    my ($uidNameIndex,$uidValueIndex,$rangeFromIndex,$rangeToIndex,
-	$keyNameValueIndex,$keyIntValueIndex,$sdNameIndex,$removedIndex,$releaseIndex,$variantNameIndex,
-	$valueIndex,$readOnlyIndex,
-	$keyTypeIndex,$backupIndex,$rfsIndex,$custConfigIndex,$capaNoneIndex,$capaAllIndex,$capaAllMinusTcbIndex,$capaNetworkServicesIndex,
-	$capaLocalServicesIndex,$capaReadUserDataIndex,$capaWriteUserDataIndex,$capaLocationIndex,$capaReadDeviceDataIndex,
-	$capaWriteDeviceDataIndex,$capaProtServIndex,$capaDrmIndex,$capaSwEventIndex,$capaPowerMgmtIndex,$capaAllFilesIndex,
-	$capaDiskAdminIndex,$capaNetworkControlIndex,$capaMultiMediaDDIndex,$capaCommDDIndex,
-	$capaTCBIndex,$capaTrustedUIIndex,$capaAlwaysPassIndex,$capaUserEnvIndex,$capaSurroundingsDDIndex,
-	$capaSidReadIndex,$capaSidWriteIndex,$rangeFromIndex,$rangeToIndex,$ownerIndex) = readIndexes($refToWorksheet);
-    if( $uidValueIndex < 0)
-    {
-	return;
-    }
-
-    my $row = 1;
-    my $emptyRowCount = 0;
-
-    ######################################################################
-    # Loop row by row until we have found $globalMaxEmptyRowCount of rows
-    # empty one after each other.
-    ######################################################################
-    my $currUid = "";
-    my $currRange = "";
-    my $lastActiveRowType = 0;   # 0 = not defined, 1 = uid, 2 = range, 3 = key
-    my $variantRowCount = 0;
-    my $errorCount = 0;
-    my $currentKeyType = "";
-    my $currentKeyReadOnly = "";
-    for( $row = 2;; $row++ ) 
-    {	         
-	#------------------------------------------------------------
-	# We only allow $globalMaxEmptyRowCount empty rows, before we stop
-	# handling the specific sheet
-	#------------------------------------------------------------
-	if(! (   hasValue($refToWorksheet,$row, $uidValueIndex )
-	      || hasValue($refToWorksheet,$row, $uidNameIndex )
-	      || hasValue($refToWorksheet,$row, $keyNameValueIndex )	
-	      || hasValue($refToWorksheet,$row, $keyIntValueIndex )	
-	      || hasValue($refToWorksheet,$row, $releaseIndex )	
-	      || hasValue($refToWorksheet,$row, $rangeFromIndex )	
-	      || hasValue($refToWorksheet,$row, $rangeToIndex )	
-	     ))
-	{
-	    $emptyRowCount++;
-	    if($emptyRowCount > $globalMaxEmptyRowCount)
-	    {
-		if($variantRowCount == 0)
-		{
-		    if($lastActiveRowType == 1)
-		    {
-			print "Row $row: There were no variants defined for previous UID.\n";
-			print "          This means among other things that default access is alwaysFail.\n";	    
-			$errorCount++;
-		    }
-		    elsif($lastActiveRowType == 2)
-		    {
-			print "Row $row: There were no variants defined for previous range => range will not appear in ini-file.\n";
-			$errorCount++;
-		    }
-		    elsif($lastActiveRowType == 3)
-		    {
-			print "Row $row: There were no variants defined for previous key => key will not appear in ini-file.\n";
-			$errorCount++;
-		    }
-		}
-		last;
-	    }
-	    next;
-	}
-	else
-	{
-	    # Was not empty line, reset counter.
-	    $emptyRowCount = 0;
-	}
-		
-	#------------------------------------------------------------
-	# Read the needed rows from the row
-	#------------------------------------------------------------
-	my $uidName             = readCol($refToWorksheet,$row,$uidNameIndex,"");
-	my $uid                 = readCol($refToWorksheet,$row,$uidValueIndex,"");
-	my $rangeFrom           = readCol($refToWorksheet,$row,$rangeFromIndex,"");
-	my $rangeTo             = readCol($refToWorksheet,$row,$rangeToIndex,"");
-	my $keyName             = readCol($refToWorksheet,$row,$keyNameValueIndex,"");
-	my $key                 = readCol($refToWorksheet,$row,$keyIntValueIndex,"");
-	my $removed             = readCol($refToWorksheet,$row,$removedIndex,"");
-	my $release             = readCol($refToWorksheet,$row,$releaseIndex,"");
-	my $variant             = readCol($refToWorksheet,$row,$variantNameIndex,"");
-	my $value               = readCol($refToWorksheet,$row,$valueIndex,"");
-	my $ro                  = readCol($refToWorksheet,$row,$readOnlyIndex,"");
-	my $keyType             = readCol($refToWorksheet,$row,$keyTypeIndex,"");
-	my $backup              = readCol($refToWorksheet,$row,$backupIndex,"");
-	my $rfs                 = readCol($refToWorksheet,$row,$rfsIndex,"");
-	my $custConfig          = readCol($refToWorksheet,$row,$custConfigIndex,"");         
-	my $capaNone            = readCol($refToWorksheet,$row,$capaNoneIndex,"");         
-	my $capaAll             = readCol($refToWorksheet,$row,$capaAllIndex,"");         
-	my $capaAllMinusTcb     = readCol($refToWorksheet,$row,$capaAllMinusTcbIndex,"");
-	my $capaNetworkServices = readCol($refToWorksheet,$row,$capaNetworkServicesIndex,"");
-	my $capaLocalServices   = readCol($refToWorksheet,$row,$capaLocalServicesIndex,"");
-	my $capaReadUserData    = readCol($refToWorksheet,$row,$capaReadUserDataIndex,"");  
-	my $capaWriteUserData   = readCol($refToWorksheet,$row,$capaWriteUserDataIndex,"");
-	my $capaLocation        = readCol($refToWorksheet,$row,$capaLocationIndex,"");  
-	my $capaReadDeviceData  = readCol($refToWorksheet,$row,$capaReadDeviceDataIndex,"");
-	my $capaWriteDeviceData = readCol($refToWorksheet,$row,$capaWriteDeviceDataIndex,"");
-	my $capaProtServ        = readCol($refToWorksheet,$row,$capaProtServIndex,"");
-	my $capaDrm             = readCol($refToWorksheet,$row,$capaDrmIndex,"");
-	my $capaSwEvent         = readCol($refToWorksheet,$row,$capaSwEventIndex,"");
-	my $capaPowerMgmt       = readCol($refToWorksheet,$row,$capaPowerMgmtIndex,"");
-	my $capaAllFiles        = readCol($refToWorksheet,$row,$capaAllFilesIndex,"");
-	my $capaDiskAdmin       = readCol($refToWorksheet,$row,$capaDiskAdminIndex,"");
-	my $capaNetworkControl  = readCol($refToWorksheet,$row,$capaNetworkControlIndex,"");
-	my $capaMultiMediaDD    = readCol($refToWorksheet,$row,$capaMultiMediaDDIndex,"");
-	my $capaCommDD          = readCol($refToWorksheet,$row,$capaCommDDIndex,"");
-	my $capaTCB             = readCol($refToWorksheet,$row,$capaTCBIndex,"");
-	my $capaTrustedUI       = readCol($refToWorksheet,$row,$capaTrustedUIIndex,"");
-
-	my $capaAlwaysPass      = readCol($refToWorksheet,$row,$capaAlwaysPassIndex,"");
-	my $capaUserEnv         = readCol($refToWorksheet,$row,$capaUserEnvIndex,"");
-	my $capaSurroundingsDD  = readCol($refToWorksheet,$row,$capaSurroundingsDDIndex,"");
-	my $capaSidRead         = readCol($refToWorksheet,$row,$capaSidReadIndex,"");
-	my $capaSidWrite        = readCol($refToWorksheet,$row,$capaSidWriteIndex,"");
-	my $rangeFrom           = readCol($refToWorksheet,$row,$rangeFromIndex,"");
-	my $rangeTo             = readCol($refToWorksheet,$row,$rangeToIndex,"");
-	my $uidOwner            = readCol($refToWorksheet,$row,$ownerIndex,"");
-
-	if($uidName =~ /^\s*Comment:/)
-	{
-	    # comment rows are ignored
-	    print "Warning: Row $row ignored, since it is a comment row\n" if not $ignoreWarnings;
-	    next;
-	}
-
-	#------------------------------------------------------------
-	# Common checks
-	#------------------------------------------------------------
-	if($uidName !~ /^\s*$/ && $uid =~ /^\s*$/)
-	{
-	    # both uid and uidname have to be defined in the same row
-	    print "Row $row: Uid Name-column has value, but not the Uid Value-column\n";
-	    $errorCount++;
-	}
-	if($keyName !~ /^\s*$/ && $key =~ /^\s*$/)
-	{
-	    # both key int and keyname have to be defined in the same row
-	    print "Row $row: Key Name-column has value, but not the Key Int-column\n";
-	    $errorCount++;
-	}
-	if($rangeTo !~ /^\s*$/ && $rangeFrom =~ /^\s*$/)
-	{
-	    # if range to is defined, then also range from has to be defined.
-	    print "Row $row: Range To-column has value, but not the Range From-column\n";
-	    $errorCount++;
-	}
-	if($rangeTo =~ /^\s*$/ && $rangeFrom !~ /^\s*$/)
-	{
-	    # if range from is defined, then also range to  has to be defined.
-	    print "Row $row: Range From-column has value, but not the Range To-column\n";
-	    $errorCount++;
-	}
-	#------------------------------------------------------------
-	# Handle UID row
-	#------------------------------------------------------------
-	if($uid !~ /^\s*$/)
-	{
-	    $currUid = $uid;
-	    # Make sure that last uid/key/range had some variant rows
-	    if($variantRowCount == 0)
-	    {
-		if($lastActiveRowType == 1)
-		{
-		    print "Row $row: There were no variants defined for previous UID.\n";
-		    print "          This means among other things that default access is alwaysFail.\n";	    
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 2)
-		{
-		    print "Row $row: There were no variants defined for previous range => range will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 3)
-		{
-		    print "Row $row: There were no variants defined for previous key => key will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-	    }
-	    $lastActiveRowType = 1;
-	    $variantRowCount = 0;
-	    #######################################
-            # Check: In the uid row the only allowed
-	    #          columns are "uid name", "uid value", "purpose"
-	    #######################################
-	    if($rangeFrom !~ /^\s*$/)
-	    {
-		print "Row $row: Range From-column is not allowed for uid row\n";
-		$errorCount++;
-	    }	    
-	    if($rangeTo !~ /^\s*$/)
-	    {
-		print "Row $row: Range To-column is not allowed for uid row\n";
-		$errorCount++;
-	    }	    
-	    if($uidOwner !~ /^\s*$/)
-	    {
-		print "Row $row: Owner-column is not allowed for uid row\n";
-		$errorCount++;
-	    }	    
-	    if($key !~ /^\s*$/)
-	    {
-		print "Row $row: Key Int-column is not allowed for uid row\n";
-		$errorCount++;
-	    }	    
-	    if($value !~ /^\s*$/)
-	    {
-		print "Row $row: Def value-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    if($rfs !~ /^\s*$/)
-	    {
-		print "Row $row: RFS-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    if($ro !~ /^\s*$/)
-	    {
-		print "Row $row: Read Only-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    if($keyType !~ /^\s*$/)
-	    {
-		print "Row $row: Key Type-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    if($backup !~ /^\s*$/)
-	    {
-		print "Row $row: Backup-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    if($custConfig !~ /^\s*$/)
-	    {
-		print "Row $row: Cust Config-column is not allowed for uid row\n";
-		$errorCount++;
-	    }
-	    #######################################
-            # Check: Check that uid is in hex format 
-	    #######################################
-	    if($uid != /^\s*0x/)
-	    {
-		print "Row $row: The Uid value has to be a hex value (starting with 0x)\n";
-		$errorCount++;
-	    }
-	    elsif(length($uid) != 10)
-	    {
-		print "Row $row: The Uid length is not correct. Are you sure that the Uid is correct ?\n";
-		$errorCount++;
-	    }
-	    #######################################
-            # Check: Check that no capas defined
-	    #######################################
-	    if( $capaNone            !~ /^\s*$/ ||
-		$capaAll             !~ /^\s*$/ ||
-		$capaAllMinusTcb     !~ /^\s*$/ ||
-		$capaNetworkServices !~ /^\s*$/ ||
-		$capaLocalServices   !~ /^\s*$/ ||
-		$capaReadUserData    !~ /^\s*$/ ||
-		$capaWriteUserData   !~ /^\s*$/ ||
-		$capaLocation        !~ /^\s*$/ ||
-		$capaReadDeviceData  !~ /^\s*$/ ||
-		$capaWriteDeviceData !~ /^\s*$/ ||
-		$capaProtServ        !~ /^\s*$/ ||
-		$capaDrm             !~ /^\s*$/ ||
-		$capaSwEvent         !~ /^\s*$/ ||
-		$capaPowerMgmt       !~ /^\s*$/ ||
-		$capaAllFiles        !~ /^\s*$/ ||
-		$capaDiskAdmin       !~ /^\s*$/ ||
-		$capaNetworkControl  !~ /^\s*$/ ||
-		$capaMultiMediaDD    !~ /^\s*$/ ||
-		$capaCommDD          !~ /^\s*$/ ||
-		$capaTCB             !~ /^\s*$/ ||
-		$capaTrustedUI       !~ /^\s*$/ ||
-		$capaAlwaysPass      !~ /^\s*$/ ||    
-		$capaUserEnv         !~ /^\s*$/ ||       
-		$capaSurroundingsDD  !~ /^\s*$/ ||
-		$capaSidRead         !~ /^\s*$/ ||
-		$capaSidWrite        !~ /^\s*$/
-		)
-	    {
-		print "Row $row: Capabilities are not allowed to be defined in UID row.\n";
-		    $errorCount++;
-	    }
-	}
-	#------------------------------------------------------------
-	# Handle range row
-	#------------------------------------------------------------
-	elsif($rangeFrom !~ /^\s*$/)
-	{
-	    # Make sure that last uid/key/range had some variant rows
-	    if($variantRowCount == 0)
-	    {
-		if($lastActiveRowType == 1)
-		{
-		    print "Row $row: There were no variants defined for previous UID.\n";
-		    print "          This means among other things that default access is alwaysFail.\n";	    
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 2)
-		{
-		    print "Row $row: There were no variants defined for previous range => range will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 3)
-		{
-		    print "Row $row: There were no variants defined for previous key => key will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-	    }
-	    $variantRowCount = 0;
-	    $lastActiveRowType = 2;
-
-	    if($rangeTo =~ /^\s*$/)
-	    {
-		print "Row $row: You have to specify both Range To and Range From in the range row.\n";
-		$errorCount++;
-	    }	    
-	    #######################################
-            # Check: There has to be uid defined before any ranges 
-	    #######################################
-	    if($currUid =~ /^\s*$/)
-	    {
-		print "Row $row: Before any ranges are defined, an UID has to be defined\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: In the range row the only allowed
-	    #          columns are "range from", "range to", "purpose", "removed"
-	    #######################################
-	    if($uid !~ /^\s*$/)
-	    {
-		print "Row $row: Uid-column is not allowed for range row\n";
-		$errorCount++;
-	    }	    
-	    if($uidName !~ /^\s*$/)
-	    {
-		print "Row $row: Uid Name-column is not allowed for uid row\n";
-		$errorCount++;
-	    }	    
-	    if($uidOwner !~ /^\s*$/)
-	    {
-		print "Row $row: Owner-column is not allowed for range row\n";
-		$errorCount++;
-	    }	    
-	    if($key !~ /^\s*$/)
-	    {
-		print "Row $row: Key Int-column is not allowed for range row\n";
-		$errorCount++;
-	    }	    
-	    if($value !~ /^\s*$/)
-	    {
-		print "Row $row: Def value-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    if($rfs !~ /^\s*$/)
-	    {
-		print "Row $row: RFS-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    if($ro !~ /^\s*$/)
-	    {
-		print "Row $row: Read Only-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    if($keyType !~ /^\s*$/)
-	    {
-		print "Row $row: Key Type-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    if($backup !~ /^\s*$/)
-	    {
-		print "Row $row: Backup-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    if($custConfig !~ /^\s*$/)
-	    {
-		print "Row $row: Cust Config-column is not allowed for range row\n";
-		$errorCount++;
-	    }
-	    #######################################
-            # Check: Check that range from and range to are in hex format 
-	    #######################################
-	    if($rangeFrom != /^\s*0x/)
-	    {
-		print "Row $row: The range from value has to be a hex value (starting with 0x)\n";
-		$errorCount++;
-	    }
-	    elsif(length($rangeFrom) != 10)
-	    {
-		print "Row $row: The range from-length is not correct. Are you sure that the range is correct ?\n";
-		$errorCount++;
-	    }
-	    if($rangeTo != /^\s*0x/)
-	    {
-		print "Row $row: The range to- value has to be a hex value (starting with 0x)\n";
-		$errorCount++;
-	    }
-	    elsif(length($rangeTo) != 10)
-	    {
-		print "Row $row: The range to-length is not correct. Are you sure that the range is correct ?\n";
-		$errorCount++;
-	    }
-	    #######################################
-            # Check: Check that no capas defined
-	    #######################################
-	    if( $capaNone            !~ /^\s*$/ ||
-		$capaAll             !~ /^\s*$/ ||
-		$capaAllMinusTcb     !~ /^\s*$/ ||
-		$capaNetworkServices !~ /^\s*$/ ||
-		$capaLocalServices   !~ /^\s*$/ ||
-		$capaReadUserData    !~ /^\s*$/ ||
-		$capaWriteUserData   !~ /^\s*$/ ||
-		$capaLocation        !~ /^\s*$/ ||
-		$capaReadDeviceData  !~ /^\s*$/ ||
-		$capaWriteDeviceData !~ /^\s*$/ ||
-		$capaProtServ        !~ /^\s*$/ ||
-		$capaDrm             !~ /^\s*$/ ||
-		$capaSwEvent         !~ /^\s*$/ ||
-		$capaPowerMgmt       !~ /^\s*$/ ||
-		$capaAllFiles        !~ /^\s*$/ ||
-		$capaDiskAdmin       !~ /^\s*$/ ||
-		$capaNetworkControl  !~ /^\s*$/ ||
-		$capaMultiMediaDD    !~ /^\s*$/ ||
-		$capaCommDD          !~ /^\s*$/ ||
-		$capaTCB             !~ /^\s*$/ ||
-		$capaTrustedUI       !~ /^\s*$/ ||
-		$capaAlwaysPass      !~ /^\s*$/ ||    
-		$capaUserEnv         !~ /^\s*$/ ||       
-		$capaSurroundingsDD  !~ /^\s*$/ ||
-		$capaSidRead         !~ /^\s*$/ ||
-		$capaSidWrite        !~ /^\s*$/
-		)
-	    {
-		print "Row $row: Capabilities are not allowed to be defined in range row.\n";
-		    $errorCount++;
-	    }
-	}
-	#------------------------------------------------------------
-	# Handle key row
-	#------------------------------------------------------------
-	elsif($key !~ /^\s*$/)
-	{
-	    # Make sure that last uid/key/range had some variant rows
-	    if($variantRowCount == 0)
-	    {
-		if($lastActiveRowType == 1)
-		{
-		    print "Row $row: There were no variants defined for previous UID.\n";
-		    print "          This means among other things that default access is alwaysFail.\n";	    
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 2)
-		{
-		    print "Row $row: There were no variants defined for previous range => range will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-		elsif($lastActiveRowType == 3)
-		{
-		    print "Row $row: There were no variants defined for previous key => key will not appear in ini-file.\n";
-		    $errorCount++;
-		}
-	    }
-	    $variantRowCount = 0;
-	    $lastActiveRowType = 3;
-
-	    $currentKeyType = $keyType;
-	    # Store the ro value into the variable (we need this to handle the key variant rows
-	    $currentKeyReadOnly = $ro;
-
-	    #######################################
-            # Check: There has to be uid defined before any keys 
-	    #######################################
-	    if($currUid =~ /^\s*$/)
-	    {
-		print "Row $row: Before any keys are defined an UID has to be defined\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: Check that key int is in hex format 
-	    #######################################
-	    if($key !~ /^\s*0x/)
-	    {
-		print "Row $row: The Key Int  has to be a hex value (starting with 0x)\n";
-		$errorCount++;
-	    }
-	    elsif(length($key) != 10)
-	    {
-		print "Row $row: The Key int length is not correct. Are you sure that the hex value is correct ?\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: Check that key type and read only are defined
-	    #######################################
-	    if($keyType =~  /^\s*$/)
-	    {
-		print "Row $row: The Key Type-column has to be defined in row, where key is defined.\n";
-		$errorCount++;
-	    }
-	    if($ro =~  /^\s*$/)
-	    {
-		print "Row $row: The Read Only-column has to be defined in row, where key is defined.\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: key type column
-	    #######################################
- 	    if($keyType !~ /^Int$/ &&
-	       $keyType !~ /^Real$/ &&
-	       $keyType !~ /^Str$/ &&
-	       $keyType !~ /^Bin$/
-	       )
-	    {
-		print "Row $row: The Key type-column has invalid value.\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: Removed column syntax
-	    #######################################
-	    $errorCount += checkRelease($row,$removed,"Removed");
-
-	    #######################################
-            # Check: columns that should not be in key row
-	    #######################################
-	    if($rangeFrom !~ /^\s*$/)
-	    {
-		print "Row $row: Range From-column is not allowed for key row\n";
-		$errorCount++;
-	    }	    
-	    if($rangeTo !~ /^\s*$/)
-	    {
-		print "Row $row: Range To-column is not allowed for key row\n";
-		$errorCount++;
-	    }	    
-	    if($uidOwner !~ /^\s*$/)
-	    {
-		print "Row $row: Owner-column is not allowed for key row\n";
-		$errorCount++;
-	    }	    
-	    if($release !~ /^\s*$/)
-	    {
-		print "Row $row: Platform Release-column is not allowed for key row\n";
-		$errorCount++;
-	    }
-	    if($value !~ /^\s*$/)
-	    {
-		print "Row $row: Def value-column is not allowed for key row\n";
-		$errorCount++;
-	    }
-	    if($rfs !~ /^\s*$/)
-	    {
-		print "Row $row: RFS-column is not allowed for key row\n";
-		$errorCount++;
-	    }
-	    if($backup !~ /^\s*$/)
-	    {
-		print "Row $row: Backup-column is not allowed for key row\n";
-		$errorCount++;
-	    }
-	    if($custConfig !~ /^\s*$/)
-	    {
-		print "Row $row: Cust Config-column is not allowed for key row\n";
-		$errorCount++;
-	    }
-	    #######################################
-            # Check: Check that no capas defined
-	    #######################################
-	    if( $capaNone            !~ /^\s*$/ ||
-		$capaAll             !~ /^\s*$/ ||
-		$capaAllMinusTcb     !~ /^\s*$/ ||
-		$capaNetworkServices !~ /^\s*$/ ||
-		$capaLocalServices   !~ /^\s*$/ ||
-		$capaReadUserData    !~ /^\s*$/ ||
-		$capaWriteUserData   !~ /^\s*$/ ||
-		$capaLocation        !~ /^\s*$/ ||
-		$capaReadDeviceData  !~ /^\s*$/ ||
-		$capaWriteDeviceData !~ /^\s*$/ ||
-		$capaProtServ        !~ /^\s*$/ ||
-		$capaDrm             !~ /^\s*$/ ||
-		$capaSwEvent         !~ /^\s*$/ ||
-		$capaPowerMgmt       !~ /^\s*$/ ||
-		$capaAllFiles        !~ /^\s*$/ ||
-		$capaDiskAdmin       !~ /^\s*$/ ||
-		$capaNetworkControl  !~ /^\s*$/ ||
-		$capaMultiMediaDD    !~ /^\s*$/ ||
-		$capaCommDD          !~ /^\s*$/ ||
-		$capaTCB             !~ /^\s*$/ ||
-		$capaTrustedUI       !~ /^\s*$/ ||
-		$capaAlwaysPass      !~ /^\s*$/ ||    
-		$capaUserEnv         !~ /^\s*$/ ||       
-		$capaSurroundingsDD  !~ /^\s*$/ ||
-		$capaSidRead         !~ /^\s*$/ ||
-		$capaSidWrite        !~ /^\s*$/
-		)
-	    {
-		print "Row $row: Capabilities are not allowed to be defined in Key row.\n";
-		    $errorCount++;
-	    }
-	}
-	#------------------------------------------------------------
-	# Handle variant row
-	#------------------------------------------------------------
-	elsif($release !~ /^\s*$/)
-	{
-	    $variantRowCount++;
-	    #######################################
-            # Check: Variant row should not contain removed, keyType or Read only column
-	    #######################################
-	    if($keyType !~  /^\s*$/)
-	    {
-		print "Row $row: The Key Type-column can't be defined in variant-row.\n";
-		$errorCount++;
-	    }
-	    if($ro !~  /^\s*$/)
-	    {
-		print "Row $row: The Read Only-column can't be defined in variant-row.\n";
-		$errorCount++;
-	    }
-	    if($removed !~  /^\s*$/)
-	    {
-		print "Row $row: The Removed-column can't be defined in variant-row.\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: Platform release column syntax
-	    #######################################
-	    $errorCount += checkRelease($row,$release,"Platform Release");
-
-	    #######################################
-            # Check: Owner value only allowed for uid variant row
-	    #######################################
- 	    if( $lastActiveRowType == 1)
-	    {
-		if($uidOwner =~ /^\s*$/)
-		{
-		    print "Row $row: No owner defined for the uid variant row.\n";
-		    $errorCount++;		    
-		}
-	    }
- 	    elsif( $lastActiveRowType != 1)
-	    {
-		if($uidOwner !~ /^\s*$/)
-		{
-		    print "Row $row: Owner-column is only valid for the uid variant row.\n";
-		    $errorCount++;		    
-		}
-	    }
-	    #######################################
-            # Check: Variant name column
-	    #######################################
-	    if($variant !~ /^\s*$/ &&
-	       $variant !~ /^elaf$/ &&
-	       $variant !~ /^apac$/ &&
-	       $variant !~ /^thai$/ &&
-	       $variant !~ /^japan$/ &&
-	       $variant !~ /^gsm$/ &&
-	       $variant !~ /^low_cost$/
-	       )
-	    {
-		print "Row $row: The Variant name-column has invalid value.\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: def value column
-	    # (empty value only allowed in case of str and binary)
-	    # Checks only valid, if the row is key's variant row.
-	    # for other we check that the column is not filled.
-	    #######################################
- 	    if( $lastActiveRowType == 3)
-	    {
-		if($currentKeyType !~ /^Str$/ && $currentKeyType !~ /^Bin$/ && $value =~ /^\s*$/)
-		{		
-		    print "Row $row: The Def value-column has to have some value.\n";
-		    $errorCount++;
-		}
-		if($currentKeyType =~ /^Int$/ && $value !~ /^\-*[0-9]+$/)
-		{
-		    print "Row $row: The Def value-column has to be a number, since type is Int.\n";
-		    $errorCount++;
-		}
-		if($currentKeyType =~ /^Real$/ && $value !~ /^\-*[0-9\.]+$/)
-		{
-		    print "Row $row: The Def value-column has to be a number, since type is Real.\n";
-		    $errorCount++;
-		}
-	    }
-	    elsif($value !~ /^\s*$/)
-	    {
-		    print "Row $row: The Def value-column should not be defined for ";
-		    if($lastActiveRowType ==1)
-		    {
-			print "Uid variant row\n";
-		    }
-		    elsif($lastActiveRowType ==2)
-		    {
-			print "range variant row\n";
-		    }
-		    $errorCount++;		
-	    }
-
-	    #######################################
-            # Check: backup and rfs columns
-	    #######################################
-	    if($backup =~ /^\s*$/)
-	    {
-		print "Row $row: The Backup-column has to be specified in variant row.\n";
-		$errorCount++;
-	    }
-	    elsif($backup !~ /^Yes$/ &&
-		  $backup !~ /^No$/
-		  )
-	    {
-		print "Row $row: The Backup-column has invalid value.\n";
-		$errorCount++;
-	    }
-	    if($release !~ /^\s*$/ && $lastActiveRowType == 3 && $currentKeyReadOnly =~ /yes/i && $backup =~ /^Yes$/)
-	    {
-		print "Row $row: A readonly key should not be backed up.\n";
-		$errorCount++;		
-	    }
-
-	    if($rfs =~ /^\s*$/)
-	    {
-		print "Row $row: The RFS-column has to have value in the variant row.\n";
-		$errorCount++;
-	    }
-	    elsif($rfs !~ /^Yes$/ &&
-		  $rfs !~ /^No$/
-		  )
-	    {
-		print "Row $row: The RFS-column has invalid value.\n";
-		$errorCount++;
-	    }
-	    if($release !~ /^\s*$/ && $lastActiveRowType == 3 && $currentKeyReadOnly =~ /yes/i && $rfs =~ /^Yes$/)
-	    {
-		print "Row $row: A readonly key should not have RFS as yes.\n";
-		$errorCount++;		
-	    }
-
-	    #######################################
-            # Check: customer config column
-	    #    Only allowed for key variant row
-	    #######################################
-	    if( $lastActiveRowType == 3)
-	    {		
-		if($custConfig =~ /^\s*$/)
-		{
-		    print "Row $row: The Cust Config-column has to have value in the variant row.\n";
-		    $errorCount++;
-		}
-		elsif($custConfig !~ /^Yes$/ &&
-		      $custConfig !~ /^No$/ &&
-		      $custConfig !~ /^Must$/
-		      )
-		{
-		    print "Row $row: The Cust config-column has invalid value.\n";
-		    $errorCount++;
-		}
-	    }
-	    elsif($custConfig !~ /^\s*$/)
-	    {
-		    print "Row $row: The Cust Config-column should not be defined in ";
-		    if($lastActiveRowType ==1)
-		    {
-			print "Uid variant row.\n";
-		    }
-		    elsif($lastActiveRowType ==2)
-		    {
-			print "range variant row.\n";
-		    }
-		    $errorCount++;		
-	    }
-	    #######################################
-            # Check: at least one capability needs to be specified if release is specified
-	    #######################################
-	    if($release !~ /^\s*$/)
-	    {
-		if( $capaNone            =~ /^\s*$/ &&
-		    $capaAll             =~ /^\s*$/ &&
-		    $capaAllMinusTcb     =~ /^\s*$/ &&
-		    $capaNetworkServices =~ /^\s*$/ &&
-		    $capaLocalServices   =~ /^\s*$/ &&
-		    $capaReadUserData    =~ /^\s*$/ &&
-		    $capaWriteUserData   =~ /^\s*$/ &&
-		    $capaLocation        =~ /^\s*$/ &&
-		    $capaReadDeviceData  =~ /^\s*$/ &&
-		    $capaWriteDeviceData =~ /^\s*$/ &&
-		    $capaProtServ        =~ /^\s*$/ &&
-		    $capaDrm             =~ /^\s*$/ &&
-		    $capaSwEvent         =~ /^\s*$/ &&
-		    $capaPowerMgmt       =~ /^\s*$/ &&
-		    $capaAllFiles        =~ /^\s*$/ &&
-		    $capaDiskAdmin       =~ /^\s*$/ &&
-		    $capaNetworkControl  =~ /^\s*$/ &&
-		    $capaMultiMediaDD    =~ /^\s*$/ &&
-		    $capaCommDD          =~ /^\s*$/ &&
-		    $capaTCB             =~ /^\s*$/ &&
-		    $capaTrustedUI       =~ /^\s*$/ &&
-		    $capaAlwaysPass      =~ /^\s*$/ &&    
-		    $capaUserEnv         =~ /^\s*$/ &&       
-		    $capaSurroundingsDD  =~ /^\s*$/ &&
-		    $capaSidRead         =~ /^\s*$/ &&
-		    $capaSidWrite        =~ /^\s*$/
-		    )
-		{
-		    print "Row $row: At least some capability colums has to have some value, since Platform Release-column is defined.\n";
-		    $errorCount++;
-		}
-	    }	   
-
-	    #######################################
-            # Check: if this is variant row for key, then if the key is read-only key, then
-	    #        there should be no "W" defined
-	    #######################################
-	    if($release !~ /^\s*$/ && $lastActiveRowType == 3 && $currentKeyReadOnly =~ /yes/i)
-	    {
-		if( $capaNone            =~ /W/i ||
-		    $capaAll             =~ /W/i ||
-		    $capaAllMinusTcb     =~ /W/i ||
-		    $capaNetworkServices =~ /W/i ||
-		    $capaLocalServices   =~ /W/i ||
-		    $capaReadUserData    =~ /W/i ||
-		    $capaWriteUserData   =~ /W/i ||
-		    $capaLocation        =~ /W/i ||
-		    $capaReadDeviceData  =~ /W/i ||
-		    $capaWriteDeviceData =~ /W/i ||
-		    $capaProtServ        =~ /W/i ||
-		    $capaDrm             =~ /W/i ||
-		    $capaSwEvent         =~ /W/i ||
-		    $capaPowerMgmt       =~ /W/i ||
-		    $capaAllFiles        =~ /W/i ||
-		    $capaDiskAdmin       =~ /W/i ||
-		    $capaNetworkControl  =~ /W/i ||
-		    $capaMultiMediaDD    =~ /W/i ||
-		    $capaCommDD          =~ /W/i ||
-		    $capaTCB             =~ /W/i ||
-		    $capaTrustedUI       =~ /W/i ||
-		    $capaAlwaysPass      =~ /W/i ||    
-		    $capaUserEnv         =~ /W/i ||       
-		    $capaSurroundingsDD  =~ /W/i ||
-		    $capaSidRead         =~ /W/i ||
-		    $capaSidWrite        =~ /W/i
-		    )
-		{
-		    print "Row $row: Since the key is read-only, there should be no W-capa defined.\n";
-		    $errorCount++;
-		}
-	    }	   
-	    #######################################
-            # Check: checking the usage of the "R"-capa.
-	    #######################################
-	    if($release !~ /^\s*$/ && $lastActiveRowType == 3)
-	    {
-		# You should not use R-capa with the below capabilities
-		if( $capaWriteUserData   =~ /R/i ||
-		    $capaWriteDeviceData =~ /R/i ||
-		    $capaSidWrite        =~ /R/i
-		    )
-		{
-		    print "Row $row: R-capa should not be used with association of Write-related capas.\n";
-		    $errorCount++;
-		}
-		
-		# In 99% cases you should allow R-to be always "alwayspass". Thus we report this as an error.
-		if( $capaNone            =~ /R/i ||
-		    $capaAll             =~ /R/i ||
-		    $capaAllMinusTcb     =~ /R/i ||
-		    $capaNetworkServices =~ /R/i ||
-		    $capaLocalServices   =~ /R/i ||
-		    $capaReadUserData    =~ /R/i ||
-		    $capaWriteUserData   =~ /R/i ||
-		    $capaLocation        =~ /R/i ||
-		    $capaReadDeviceData  =~ /R/i ||
-		    $capaWriteDeviceData =~ /R/i ||
-		    $capaProtServ        =~ /R/i ||
-		    $capaDrm             =~ /R/i ||
-		    $capaSwEvent         =~ /R/i ||
-		    $capaPowerMgmt       =~ /R/i ||
-		    $capaAllFiles        =~ /R/i ||
-		    $capaDiskAdmin       =~ /R/i ||
-		    $capaNetworkControl  =~ /R/i ||
-		    $capaMultiMediaDD    =~ /R/i ||
-		    $capaCommDD          =~ /R/i ||
-		    $capaTCB             =~ /R/i ||
-		    $capaTrustedUI       =~ /R/i ||
-		    $capaUserEnv         =~ /R/i ||       
-		    $capaSurroundingsDD  =~ /R/i ||
-		    $capaSidRead         =~ /R/i ||
-		    $capaSidWrite        =~ /R/i
-		    )
-		{
-		    print "Row $row: NOTE: only sensitive data (passwords and alike) should be protected for reading.\n";
-		    print "          In normal case read should be allowed for everyone (== AlwaysPass-capa).\n";
-			print "          Depending on the mening of key this is/is not an error (99% of cases this is an error).\n";
-		    $errorCount++;
-		}
-	    }	   
-	    #######################################
-            # Check: capability colums
-	    #######################################
-	    $errorCount += checkCapability($row,$capaNone,"None");
-	    $errorCount += checkCapability($row,$capaAll,"All");
-	    $errorCount += checkCapability($row,$capaAllMinusTcb,"All - TCB");
-	    $errorCount += checkCapability($row,$capaNetworkServices,"NetworkServices");
-	    $errorCount += checkCapability($row,$capaLocalServices,"Local Services");
-	    $errorCount += checkCapability($row,$capaReadUserData,"ReadUserData");
-	    $errorCount += checkCapability($row,$capaWriteUserData,"WriteUserData");
-	    $errorCount += checkCapability($row,$capaLocation,"Location");
-	    $errorCount += checkCapability($row,$capaReadDeviceData,"ReadDeviceData");
-	    $errorCount += checkCapability($row,$capaWriteDeviceData,"WriteDeviceData");
-	    $errorCount += checkCapability($row,$capaProtServ,"ProtServ");
-	    $errorCount += checkCapability($row,$capaDrm,"DRM");
-	    $errorCount += checkCapability($row,$capaSwEvent,"SwEvent");
-	    $errorCount += checkCapability($row,$capaPowerMgmt,"PowerMgmt");
-	    $errorCount += checkCapability($row,$capaAllFiles,"AllFiles");
-	    $errorCount += checkCapability($row,$capaDiskAdmin,"DiskAdmin");
-	    $errorCount += checkCapability($row,$capaNetworkControl,"NetworkControl");
-	    $errorCount += checkCapability($row,$capaMultiMediaDD,"MultiMediaDD");
-	    $errorCount += checkCapability($row,$capaCommDD,"CommDD");
-	    $errorCount += checkCapability($row,$capaTCB,"TCB");
-	    $errorCount += checkCapability($row,$capaAlwaysPass,"AlwaysPass");
-	    $errorCount += checkCapability($row,$capaUserEnv,"UserEnvironment");
-	    $errorCount += checkCapability($row,$capaSurroundingsDD,"SurroundingsDD");
-	    if($capaSidRead !~ /^\s*$/ && $capaSidRead !~ /^0x[0-9]{8}$/)
-	    {
-		print "Row $row: the Sid Read-column has invalid value. Only 1 sid is allowed in hex format.\n";
-		$errorCount++;
-	    }
-	    if($capaSidWrite !~ /^\s*$/ && $capaSidWrite !~ /^0x[0-9]{8}$/)
-	    {
-		print "Row $row: the Sid Write-column has invalid value. Only 1 sid is allowed in hex format.\n";
-		$errorCount++;
-	    }
-
-	    #######################################
-            # Check: capability colums limitations
-	    # max capability checks are:
-	    #  7 capabilities
-	    #  1 sid and 3 capabilities
-	    #######################################
-	    my @rList;
-	    my @wList;
-	    addCapability(\@rList,\@wList,$capaNone,"AlwaysPass");
-	    addCapability(\@rList,\@wList,$capaAlwaysPass,"AlwaysPass");
-	    addCapability(\@rList,\@wList,$capaNetworkServices,"NetworkServices");
-	    addCapability(\@rList,\@wList,$capaLocalServices,"Local Services");
-	    addCapability(\@rList,\@wList,$capaReadUserData,"ReadUserData");
-	    addCapability(\@rList,\@wList,$capaWriteUserData,"WriteUserData");
-	    addCapability(\@rList,\@wList,$capaLocation,"Location");
-	    addCapability(\@rList,\@wList,$capaReadDeviceData,"ReadDeviceData");
-	    addCapability(\@rList,\@wList,$capaWriteDeviceData,"WriteDeviceData");
-	    addCapability(\@rList,\@wList,$capaProtServ,"ProtServ");
-	    addCapability(\@rList,\@wList,$capaDrm,"DRM");
-	    addCapability(\@rList,\@wList,$capaSwEvent,"SwEvent");
-	    addCapability(\@rList,\@wList,$capaPowerMgmt,"PowerMgmt");
-	    addCapability(\@rList,\@wList,$capaAllFiles,"AllFiles");
-	    addCapability(\@rList,\@wList,$capaDiskAdmin,"DiskAdmin");
-	    addCapability(\@rList,\@wList,$capaNetworkControl,"NetworkControl");
-	    addCapability(\@rList,\@wList,$capaMultiMediaDD,"MultiMediaDD");
-	    addCapability(\@rList,\@wList,$capaCommDD,"CommDD");
-	    addCapability(\@rList,\@wList,$capaTCB,"TCB");
-	    addCapability(\@rList,\@wList,$capaTrustedUI,"TrustedUI");
-	    addCapability(\@rList,\@wList,$capaUserEnv,"UserEnvironment");
-	    addCapability(\@rList,\@wList,$capaSurroundingsDD,"SurroundingsDD");
-
-	    my $rSidDefined = 0;
-	    if($capaSidRead !~ /^\s*$/)
-	    {
-		$rSidDefined = 4;
-	    }
-	    my $wSidDefined = 0;
-	    if($capaSidWrite !~ /^\s*$/)
-	    {
-		$wSidDefined = 4;
-	    }
-	    
-	    if((scalar(@rList) + $rSidDefined) > 7)
-	    {
-		print "Row $row: To many Read capability checks defined. Allowed max amounts are:\n";
-		print "          (7 capabilities) or (1 sid and 3 capabilities)\n";  
-		$errorCount++;
-	    }
-	    if((scalar(@wList) + $wSidDefined) > 7)
-	    {
-		print "Row $row: To many Write capability checks defined. Allowed max amounts are:\n";
-		print "          (7 capabilities) or (1 sid and 3 capabilities)\n";  
-		$errorCount++;
-		
-	    }
-	}	
-    }
-    
-    if($errorCount < 1)
-    {
-	print "No content errors\n";
-    }
-}
-
-
-###########################################################################
-# Makes syntax checks that the given name is according to specification
-#
-#
-# Params: file name
-#
-###########################################################################
-sub checkCentrepKeySheetName
-{
-    my $name = shift;
-   
-    # ----------------------------------------------------------------  
-    # check name syntax
-    # ----------------------------------------------------------------      
-    if($name =~ /[A-Z]/)
-    {
-	print "Sheet: $name, no capital letters allowed\n";
-    }
-    if($name !~ /^[a-z0-9\_\.]+$/)
-    {
-	print "Sheet: $name, non valid characters in the name. (0-9 a-z _ and . are allowed\n";
-    }
-    if($name !~ /^keys_[a-z0-9\_]+\.xls$/)
-    {
-	print "Sheet: \"$name\", syntax should be \"keys_<modulename>.xls\"\n";
-    }
-	
-}
-
-1;
-
-
-
-
--- a/internetradio2.0/cenrep/cenrep_keys_syntax_checker.pl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-#####################################
-# Run with -h to get help
-######################################
-use strict;
-use lib   ".";
-use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
-use Cwd;
-use Getopt::Long;
-use File::Basename;
-use excel_support;  # Own perl module that contains the reading of memory-sheets
-use cenrep_keys;  # Own perl module that contains the reading of memory-sheets
-
-###########################################################################
-# Function that gets a dir as parameter and reads the list of excel files from the
-# given directory.
-#
-# Params: a directory name
-#
-# Return value: a reference to a list of filenames.
-###########################################################################
-sub getExcelFilesFromDir
-{
-    my $dir = shift;
-    
-    # the given dir should be relative to the dir, where the script is executed.
-    if($dir !~ /^[\\\/]/ && $dir !~ /^[A-Za-z]:/)
-    {
-	$dir =  cwd . "\\$dir"; 
-    }
-    my @files;
-    @files = <$dir\\*.xls >;
-   
-    return \@files;
-}
-
-
-###################################################
-# Function that reads the file names from the given file.
-# THe information is read from Column A and 1st empty row indicates
-# end of input.
-#
-# Params: fileNameRead, refToExcelApp
-###################################################
-sub getExcelFilesFromFile
-{
-    my $file = shift;
-    my $refToExcel = shift;
-    
-    my @fileList;
-    # ----------------------------------------------------------------  
-    # Open the file and get the worksheet
-    # ----------------------------------------------------------------  
-    my $refToWb =  openWorkbook( $file,$refToExcel);
-    my $refToWorkSheet = getWorkSheet( $refToWb,"Info");
-    
-    #------------------------------------------------------------
-    # Read the needed rows from the row, until empty row found
-    #------------------------------------------------------------
-    my $row;
-    for( $row = 1;; $row++ ) 
-    {	         
-	my $fileName = $$refToWorkSheet->Cells( $row, 1  )->{ 'Value' };
-	
-	if(!defined($fileName) || $fileName =~ /^\s*$/)
-	{
-	    last;
-	}
-
-	push(@fileList,$fileName);
-    }
-	
-    return \@fileList;
-}
-
-###########################################################################
-# Main function, 
-###########################################################################
-sub main
-{
-    my $refToExcelFiles = shift;
-    my $refToExcel = shift;
-    my $ignoreWarnings = shift;
-
-    my %reshHash;
-    my $refToWorkSheet;
-    
-    my $errorsFound = 0;
-
-    # Loop through each found excel sheet. This will open one file after each other
-    # and parse information into the hashes defined above.
-    foreach my $file ( @{$refToExcelFiles} ) 
-    {
-	$file =~ /[\\\/]([a-zA-Z0-9\-_\.\s\&]+\.xls)/;
-	print "\n--------------------------------------------\nReading: $1\n";
-
-	my ($name,$path,$suffix) = fileparse($file,qr{\.xls});
-	checkCentrepKeySheetName("$name$suffix");
-	# ----------------------------------------------------------------  
-	# Open the file
-	# ----------------------------------------------------------------  
-	my $refToWb = openWorkbook( $file,$refToExcel);
-	
-	# ----------------------------------------------------------------  
-	# Read the information from the worksheets
-	# ----------------------------------------------------------------
-	for( my $i = 0; $i < $$refToWb->Worksheets->Count; $i++)
-	{
-	    my $workSheet = $$refToWb->WorkSheets($i + 1);
-	    $refToWorkSheet = getWorkSheet( $refToWb,$workSheet->Name);
-	    if(checkCentrepKeyInfo( $refToWorkSheet,$ignoreWarnings))
-	    {
-		$errorsFound = 1;
-	    }
-	}
-	# "delete" the workbooks, this closes the excel application	    
-	$$refToWb->Close(0);
-	undef $$refToWb;
-	undef $refToWb;
-    }
-
-    return $errorsFound;
-}
-
-###########################################################################
-# Shows help.
-#
-# Params: -
-#
-# Return: -
-#
-###########################################################################
-sub usage
-{
-    print "\n";
-    print "\n";
-    print "This script reads all the cenrep keys sheets from the given\n";
-    print "directory and makes a syntax check for them.\n";
-    print "\n";
-    print "Usage:\n";
-    print "  $0 [-h|-help] (-d <cenrepSheetDir> | -f <excelSheetName>) \n";
-    print "\n";
-    print "Options:\n";
-    print "  -h                  : Show this help\n";
-    print "  -help               : Show this help\n";
-    print "  -d <sheetDir>       : relative path from the dir where this script is run\n";
-    print "                        to the directory where the cenrep-sheets exist.\n";
-    print "  -e <excelSheetName> : name of the sheet, that specifies the read excel sheet names in the column A.\n";
-    print "                        No empty rows allowed, reading is stopped, when the 1st empty row is found.\n";	
-    print "                        The sheet name defining the files inside Workbook has to be \"Info\".\n";	
-    print "                        Also no header expected for the column (reading starts from row 1)\n";
-    print "  -w                  : Ignores warning messages\n";
-    print "  -h                  : Show this help\n";
-    print "\n";
-    print "You have specify either -d or -e, but not both at the same time.\n";
-    print "\n";
-    print "Example usage:\n";
-    print "    perl $0  -d cenrep\n"; 
-    print "\n";
-    print "Known issues:\n";
-    print "   - The script will give an error, if directory names in the path contain spaces\n";
-    print "\n";
-    print "\n";
-
-    exit(0);
-}
-###########################################################################
-# Parses the command line parameters from ARGV
-#
-# Params: -
-#
-# Return: -		    
-#
-###########################################################################
-sub parseCmdLine
-{
-    my $dir = "";
-    my $file = "";
-    my $sheetFile = "";
-    my $ignoreWarnings = 0;
-    
-    if( ! GetOptions('d:s'      => \$dir,
-		     's:s'      => \$sheetFile,
-		     'f:s'      => \$file,
-		     'h'        => \&usage,
-		     'w'        => \$ignoreWarnings,
-		     'help'     => \&usage,
-		     '<>'       => \&usage))
-    {
-	exit(1);
-    }
-    
-    if($dir ne "" and $file ne "" )
-    {
-	print "\nError: The file and directory arguments can't be specified at the same time.\n";
-	exit(1);
-    }
-    elsif($dir eq "" and $file eq "" )
-    {
-	usage;
-	print "\n\nError: You have to specify either the  -d or -f argument.\n";
-	exit(1);
-    }
-    
-    
-    return ($dir,$file,$sheetFile,$ignoreWarnings);
-}
-
-
-###################################################
-# Actual program
-###################################################
-my $sheetDir;
-my $file;
-my $sheetFile;
-my $ignoreWarnings;
-
-($sheetDir,$file,$sheetFile,$ignoreWarnings) = parseCmdLine;
-
-# ----------------------------------------------------------------  
-# Get excel application
-# ----------------------------------------------------------------  
-my $refToExcel = getExcelApp();
-
-#-----------------------------------------------------------------
-# There are 2 options how the user can give the if-sheet names handled:
-# 1) He gives the directory where all files are located
-# 2) He gives an excel sheet, which contains all the files in column A.
-#-----------------------------------------------------------------
-my $refToExcelFilesList;
-
-if($sheetFile !~ /^\s*$/)
-{
-    my @list;
-    push(@list,$sheetFile);
-    $refToExcelFilesList =  \@list;
-}
-if($sheetDir !~ /^\s*$/)
-{
-    # Read the filenames from the directory given
-    $refToExcelFilesList = getExcelFilesFromDir $sheetDir;
-}
-else
-{
-    # Read the filenames from the excel file given
-     $refToExcelFilesList = getExcelFilesFromFile $file, $refToExcel;
-}
-
-#-----------------------------------------------------------------
-# The main function that parses the information
-#-----------------------------------------------------------------
-
-my $errors = main $refToExcelFilesList,$refToExcel,$ignoreWarnings;
-
-#-----------------------------------------------------------------
-# quit excel and "delete" the instances.
-#-----------------------------------------------------------------
-quitExcelApp($refToExcel);
-
-exit $errors;
-
-
-
-
-
-
-
-
-
-
-
Binary file internetradio2.0/cenrep/cenrep_start.ini has changed
--- a/internetradio2.0/cenrep/excel_support.pm	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-###################################################
-###################################################
-# This module contains common helper functions for 
-# handling excel sheets from perl.
-###################################################
-###################################################
-package excel_support;
-
-##########################################
-# Libraries used
-##########################################
-use strict;
-use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
-use Exporter ();     # Needed to make constants available to caller.
-
-##########################################
-# Defining all the "global" variables, that we are using.
-##########################################
-use vars qw(
-            @ISA
-            @EXPORT
-            );
-
-
-@ISA = qw(Exporter); # Inherit from Exporter module (import method needed).
-
-# Define all the functions defined by this module
-use subs qw(
-	    getExcelApp
-	    quitExcelApp
-	    openWorkbook
-	    getWorkSheet
-	    getIndexByColName
-	    );
-
-##########################################
-# Define the exports from this module that can be used
-# Outside
-##########################################
-@EXPORT = qw(
-             &getExcelApp
-	     &quitExcelApp
-	     &openWorkbook
-	     &getWorkSheet
-	     &getIndexByColName
-             );
-
-
-###########################################################################
-# Function that creates an excel application and returns a reference to it.
-#
-# Params: -
-#
-# Return value: a reference to a excel application
-###########################################################################
-sub getExcelApp
-{
-    # get already active Excel application or open new
-    my $excel = Win32::OLE->GetActiveObject('Excel.Application') || 
-      Win32::OLE->new('Excel.Application', 'Quit');
-    
-    return \$excel;									    
-}
-
-###########################################################################
-# Function that deletes an excel application given
-#
-# Params: refToExcelApp
-#
-# Return value: a reference to a excel application
-###########################################################################
-sub quitExcelApp
-{
-    my $refToExcelApp = shift;
-
-    $$refToExcelApp->Quit();
-    # For some reason this needs to be done twice inorder to close the excel.
-    undef $$refToExcelApp;
-    undef $refToExcelApp;
-}
-
-###########################################################################
-# Function opens the given filename as workbook
-#
-# Params: Filename, referenceToExcelApp
-#
-# Return: reference to a workbook object 
-###########################################################################
-sub openWorkbook
-{
-    my $filename = shift;
-    my $refToExcel = shift;
-
-    # Open the workbook as read only
-    my $workBook = ${$refToExcel}->Workbooks->Open( { FileName => $filename, ReadOnly=> xlReadOnly } );
-    die "$filename: cannot open file\n" unless (defined $workBook );
-
-    return \$workBook;
-}
-
-###########################################################################
-# Function finds the wanted worksheet from the given workbook
-#
-# Params: referenceToWorkbook,wantedSheetName
-#
-# Return: reference to a worksheet object 
-###########################################################################
-sub getWorkSheet
-{
-    my $refToWb = shift;
-    my $wantedSheetName = shift;
-    
-    my $workSheet;
-
-    # Loop through all the workbooks and find a matching name.
-    for( my $i = 0; $i < $$refToWb->WorkSheets->Count; $i++)
-    {
-	# The index is from 1-> and the counter starts from 0 => +1.
-	$workSheet = $$refToWb->WorkSheets($i + 1);
-        if( $workSheet->Name eq $wantedSheetName ) 
-        {
-	    # match found, return reference to the found worksheet
-	    return \$workSheet;
-	}
-    }
-
-    # No match found, error, thus return undef.
-    return undef;
-}           
-
-
-###########################################################################
-# Function that finds the index of the column based on given name
-#
-# Params: referenceToWorksheet,
-#         wantedColName   (== the wanted column name)
-#         maxcolCount     (== how many columns are checked for the given name) 
-#
-# Return: index to Column, 
-#         -1, if no match found
-###########################################################################
-sub getIndexByColName
-{
-    my $refToWorksheet = shift;
-    my $colName = shift;
-    my $maxColCount = shift;
-    
-    my %i;
-    # loop through columns to find the index, which 
-    # matches to the given column name.
-    for( my $i = 1; $i < $maxColCount; $i++ )
-    {
-	# The headers are always in row 1.
-	my $colNameFromSheet = $$refToWorksheet->Cells( 1, $i  )->{ 'Value' };
-
-	# check the name against the given name. If same then return the index.
-        if($colName eq $colNameFromSheet)
-	{
-	    return $i;
-	}	       
-    }
-
-    # No match found, return -1 as an error.
-    return -1;
-}
-
-
-1;
--- a/internetradio2.0/cenrep/gather_cenrep_to_storable.pl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-#####################################
-# Run with -h to get help
-######################################
-use strict;
-use lib   ".";
-use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
-use Cwd;
-use Getopt::Long;
-use File::Copy;
-use excel_support;  # Own perl module that contains the reading of cenrep key-sheets
-use cenrep_keys;  # Own perl module that contains the reading of cenrep key-sheets
-use Storable qw(nstore_fd);
-use Data::Dumper;
-
-
-###########################################################################
-# Function that gets a dir as parameter and reads the list of excel files from the
-# given directory.
-#
-# Params: a directory name
-#
-# Return value: a reference to a list of filenames.
-###########################################################################
-sub getExcelFilesFromDir
-{
-    my $dir = shift;
-    
-    # the given dir should be relative to the dir, where the script is executed.
-    if($dir !~ /^[\\\/]/ && $dir !~ /^[A-Za-z]:/)
-    {
-	$dir =  cwd . "\\$dir"; 
-    }
-    my @files;
-    @files = <$dir\\*.xls >;
-   
-    return \@files;
-}
-
-
-###################################################
-# Function that reads the file names from the given file.
-# THe information is read from Column A and 1st empty row indicates
-# end of input.
-#
-# Params: fileNameRead, refToExcelApp
-###################################################
-sub getExcelFilesFromFile
-{
-    my $file = shift;
-    
-    my @fileList;
-    # ----------------------------------------------------------------  
-    # Open the file
-    # ----------------------------------------------------------------  
-    open(IN,$file) || die "Unable to open: $file";
-
-    #------------------------------------------------------------
-    # Read file line by line
-    #------------------------------------------------------------
-    while(<IN>)
-    {
-	my $fileWithPath = $_;
-	chomp($fileWithPath);
-
-	if(! -f $fileWithPath)
-	{
-	    print STDERR "Warning: input file not found: $fileWithPath\n";
-	}
-	else
-	{
-	    push(@fileList,$fileWithPath);
-	}
-    }
-	
-    return \@fileList;
-}
-
-
-###########################################################################
-# Main function, 
-###########################################################################
-sub readConfig
-{
-    my $refToExcelFiles = shift;
-    my $refToExcel = shift;
-    
-    my %reshHash;
-    my $refToWorkSheet;
-    
-    # Loop through each found excel sheet. This will open one file after each other
-    # and parse information into the hashes defined above.
-    foreach my $file ( @{$refToExcelFiles} ) 
-    {
-	print "   Reading: $file\n";
-
-	# ----------------------------------------------------------------  
-	# Open the file
-	# ----------------------------------------------------------------  
-	my $refToWb = openWorkbook( $file,$refToExcel);
-
-	# ----------------------------------------------------------------  
-	# Check, that the template version is the one we support. If not
-	# the file is skipped and warning is written to user.
-	# ----------------------------------------------------------------  
-#  	if( isSupported($refToWb) == 0)
-#  	{
-#  	    # "delete" the workbooks, this closes the excel application
-#  	    undef $$refToWb;
-#  	    undef $refToWb;
-#  	    print STDERR "Warning: Unsupported template version in file: $file\n";
-#  	    next;
-#  	}
-
-	
-	# ----------------------------------------------------------------  
-	# Read the information from the worksheets
-	# ----------------------------------------------------------------
-	$refToWorkSheet = getWorkSheet( $refToWb,"Key values");
-	readCentrepKeyInfo( $refToWorkSheet,\%reshHash,undef,undef,$file);
-
-#  	for( my $i = 0; $i < $$refToWb->Worksheets->Count; $i++)
-#  	{
-#  	    my $workSheet = $$refToWb->WorkSheets($i + 1);
-#  	    $refToWorkSheet = getWorkSheet( $refToWb,$workSheet->Name);
-#  	    readCentrepKeyInfo( $refToWorkSheet,\%reshHash);
-#  	}
-	# "delete" the workbooks, this closes the excel application
-	$$refToWb->Close(0);
-	undef $$refToWb;
-	undef $refToWb;
-    }
-
-#    $Data::Dumper::Indent = 1;
-#     print Dumper(%reshHash);
-#      exit 1;
-
-    return \%reshHash;
-}
-
-###########################################################################
-# Shows help.
-#
-# Params: -
-#
-# Return: -
-#
-###########################################################################
-sub usage
-{
-    $0 =~ /([0-9a-zA-Z\_\.]+)$/;
-    my $filename = $1;
-    print "\n";
-    print "\n";
-    print "This script is intended to be used to generate ini-files for Central Repository\n";
-    print "based on the information in the cenrep key excel-sheet(s). These sheets define\n";
-    print "the content of the ini-files.\n";
-    print "\n";
-    print "Rough discruption on how the values for the ini-files are determinated:\n";
-    print "1) Content of sheets identified by -d or -s are read.\n";
-    print "2) From sheets read in step 1 the information is parsed based on the\n";
-    print "   information specified by -p, -r and -v\n";
-    print "3) [optional] Default values specified by the steps 1 and 2 can be\n";
-    print "    overriden by defining information in other sheets, specified by parameters\n";
-    print "    -vd,-vs and -vv\n";
-    print "\n";
-    print "\n";
-    print "Usage:\n";
-    print "  $filename [-h|-help]\n";
-    print "                (-d <dirName> | -s <sourceFilename>)\n";
-    print "                [ -f <resultFile>]\n";
-    print "\n";
-    print "Options:\n";
-    print " -h                  : Show this help\n";
-    print " -help               : Show this help\n";
-    print " -f <resultFile>     : The storable file name.\n";
-    print " -d <dirName>        : The dir, which contains the sheets, which are read. Relative path to the\n";
-    print "                       current dir or absoluth path. NOTE: the dir name can't contain any spaces.\n";
-    print " -s <sourceFilename>       : The text filename, which contains sheet name with absoluth\n";
-    print "                             path names (1/row)\n";
-    print "                              (see rough description above) Optional.\n";
-    print "\n";
-    print "\n";
-    print "You have specify either -d or -s, but not both at the same time.\n";
-    print "\n";
-    print "\n";
-    print "\n";
-}
-###########################################################################
-# Parses the command line parameters from ARGV
-#
-# Params: -
-#
-# Return: -		    
-#
-###########################################################################
-sub parseCmdLine
-{
-    my $sheetDirname = "";
-    my $sheetFilename = "";
-    my $resultFilename = "";
-    my $showHelp = 0;
-
-    if( ! GetOptions('d:s'      => \$sheetDirname,
-		     's:s'      => \$sheetFilename,
-		     'f:s'      => \$resultFilename,
-		     'h'        => \$showHelp,
-		     'help'     => \$showHelp,
-		     '<>'       => \&usage))
-    {
-	usage();
-	exit(1);
-    }
-    
-    my $error = 0;
-    if($sheetDirname ne "" and $sheetFilename ne "")
-    {
-	print "\nError: The -s and -d arguments can't be specified at the same time.\n";
-	$error = 1;
-    }
-    elsif($sheetDirname eq "" and $sheetFilename eq "")
-    {
-	print "\n\nError: You have to specify either the -d or -s argument.\n";
-	$error = 1;
-    }
-
-    if($resultFilename eq "")
-    {
-	print "\nError: You have to specify -rf parameter.\n";
-	$error = 1;
-    }
-    
-    if($error)
-    {
-	usage();
-	exit(1);
-    }
-    elsif($showHelp)
-    {
-	usage();
-    }
-    
-    return ($sheetDirname,$sheetFilename,$resultFilename);
-}
-
-
-###########################################################################
-# reads either default config or variant config into the result hash.
-# Note that the variant hash can't delete any keys, just override them.
-###########################################################################
-sub readSingleConfig
-{
-    my $refToExcel      = shift;
-    my $sheetDirname    = shift;
-    my $sheetFilename   = shift;
-    
-    #-----------------------------------------------------------------
-    # There are 2 options how the user can give the if-sheet names handled:
-    # 1) He gives the directory where all files are located
-    # 2) He gives an excel sheet, which contains all the files in column A.
-    #-----------------------------------------------------------------
-    my $refToExcelFilesList;
-
-    if($sheetDirname !~ /^\s*$/)
-    {
-	# Read the filenames from the directory given
-	$refToExcelFilesList = getExcelFilesFromDir $sheetDirname;
-    }
-    elsif($sheetFilename !~ /^\s*$/)
-    {
-	# Read the filenames from the excel file given
-	$refToExcelFilesList = getExcelFilesFromFile $sheetFilename;
-    }
-    else
-    {
-	# nothing to do, just exit function
-	return;
-    }
-    #-----------------------------------------------------------------
-    # The main function that parses the information from sheets
-    #-----------------------------------------------------------------
-
-    return readConfig($refToExcelFilesList,$refToExcel);
-}
-
-###################################################
-# Actual program
-###################################################
-my($sheetDirname,$sheetFilename,$resultFilename) = parseCmdLine;
-
-# ----------------------------------------------------------------  
-# Get excel application
-# ----------------------------------------------------------------  
-my $refToExcel = getExcelApp();
-
-#-----------------------------------------------------------------
-# read the default configuration hash
-#-----------------------------------------------------------------
-my $refToResultHash = readSingleConfig($refToExcel,$sheetDirname,$sheetFilename);
-
-#-----------------------------------------------------------------
-# quit excel and "delete" the instances.
-#-----------------------------------------------------------------
-quitExcelApp($refToExcel);
-
-
-open OUT, ">$resultFilename" or die "Unable to open $resultFilename: $!";
-binmode OUT;
-nstore_fd $refToResultHash, \*OUT;
-close OUT;
-
--- a/internetradio2.0/cenrep/generate_cenrep_inifile.pl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1478 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-######################################
-# Run with -h to get help
-######################################
-use strict;
-use lib   ".";
-use open OUT => ':raw';
-use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
-use Cwd;
-use Getopt::Long;
-use File::Copy;
-use Storable qw(fd_retrieve);
-use excel_support;  # Own perl module that contains the reading of memory-sheets
-use cenrep_keys;  # Own perl module that contains the reading of memory-sheets
-
-
-use Data::Dumper;
-
-# this is the bit mask that is put into the metadata in the ini-file, when
-# backup is set on.
-my $globalBackupValue = 0x01000000;
-
-###########################################################################
-###########################################################################
-sub printStr
-{
-    my $to = shift;
-    my $str = shift;
-
-    for (my $i = 0; $i < length($str); $i++) 
-    {
-	printf $to "%s\0", substr($str,$i, 1);
-    }
-}
-
-###########################################################################
-###########################################################################
-sub printNewLine
-{
-    my $to = shift;
-    my $fileName = shift;
-    
-    print $to "\x0D\x00\x0A\x00";
-
-    return;
-}
-#      # We need to close the file temporarely so that we can
-#      # write a new line into it differently. It seems that
-#      # unicode file name writing is somehow wrong in the 
-#      # used perl versio (ActivePerl 5.8.4)
-    
-#      close $to;
-#      # Writing the new line into the end of the line
-#      open $to,">>$fileName";
-#      binmode OUT;
-#      print OUT chr(13);
-#      print OUT chr(0);
-#      print OUT chr(10);
-#      print OUT chr(0);
-#      close OUT;
-    
-#      # Opening the file again to
-#  #    open(OUT,">>:encoding(UTF-16LE)",$fileName) || die "unable to open $fileName";
-#      open(OUT,">>$fileName") || die "unable to open $fileName";
-#  }
-
-###########################################################################
-# Function that gets a dir as parameter and reads the list of excel files from the
-# given directory.
-#
-# Params: a directory name
-#
-# Return value: a reference to a list of filenames.
-###########################################################################
-sub getExcelFilesFromDir
-{
-    my $dir = shift;
-    
-    # the given dir should be relative to the dir, where the script is executed.
-    if($dir !~ /^[\\\/]/ && $dir !~ /^[A-Za-z]:/)
-    {
-	$dir =  cwd . "\\$dir"; 
-    }
-    my @files;
-    @files = <$dir\\*.xls >;
-   
-    return \@files;
-}
-
-
-###################################################
-# Function that reads the file names from the given file.
-# THe information is read from Column A and 1st empty row indicates
-# end of input.
-#
-# Params: fileNameRead, refToExcelApp
-###################################################
-sub getExcelFilesFromFile
-{
-    my $file = shift;
-    
-    my @fileList;
-    # ----------------------------------------------------------------  
-    # Open the file
-    # ----------------------------------------------------------------  
-    open(IN,$file) || die "Unable to open: $file";
-
-    #------------------------------------------------------------
-    # Read file line by line
-    #------------------------------------------------------------
-    while(<IN>)
-    {
-	my $fileWithPath = $_;
-	chomp($fileWithPath);
-
-	if(! -f $fileWithPath)
-	{
-	    print STDERR "Warning: input file not found: $fileWithPath\n";
-	}
-	else
-	{
-	    push(@fileList,$fileWithPath);
-	}
-    }
-	
-    return \@fileList;
-}
-
-###################################################
-###################################################
-sub isRemoved
-{
-    my $platId = shift;
-    my $platRel = shift;
-    my $removed = shift;
-
-    # If not defined => not removed
-    if(! defined($removed))
-    {
-	return 0;
-    }
-   
-    if($removed =~ /$platId\s+([0-9]+\.[0-9]+)/i)
-    {
-	my $rel = $1;
-	if($rel <= $platRel)
-	{
-	    return 1;
-	}
-    }
-    return 0;    
-}
-###################################################
-# returns the official capa name from internal name.
-# this is implemented since the capa names in cenrep keys
-# migth not be the same as official names in the ini-file.
-###################################################
-sub getCapaValue
-{
-    my $formatNbr      = shift; # not used at the moment.
-    my $refToCapaList  = shift;
-
-    #########################
-    # official way, caps as strings
-    #########################
-
-#      my $retVal = "";
-#      my $isFirst = 1;
-#      foreach my $capa (@$refToCapaList)
-#      {
-#  	next if($capa =~ /^\s*$/);
-#  	if(!$isFirst)
-#  	{
-#  	    $retVal .= ",";
-#  	}
-#  	$retVal .= $capa;
-
-#  	$isFirst = 0;
-#      }
-
-    #########################
-    # Caps as strings
-    #########################
-    my $retVal = "";
-    my @capaList;
-    foreach my $capa (@$refToCapaList)
-    {
-	next if($capa =~ /^\s*$/);
-
-	if( $capa =~ /ReadUserData/)
-	{
-	    push(@capaList,"ReadUserData"); 
-	}
-	elsif($capa =~ /WriteUserData/)
-	{
-	    push(@capaList,"WriteUserData");
-	}
-	elsif( $capa =~ /ReadDeviceData/)
-	{
-	    push(@capaList,"ReadDeviceData");
-	}
-	elsif($capa =~ /WriteDeviceData/)
-	{
-	    push(@capaList,"WriteDeviceData");
-	}
-	elsif($capa =~ /NetworkControl/)
-	{
-	    push(@capaList,"NetworkControl");
-	}
-	elsif($capa =~ /NetworkServices/)
-	{
-	    push(@capaList,"NetworkServices");
-	} 
-	elsif($capa =~ /Local Services/)
-	{
-	    push(@capaList,"LocalServices");
-	} 
-	elsif($capa =~ /Location/)
-	{
-	    push(@capaList,"Location");
-	} 
-	elsif($capa =~ /ProtServ/)
-	{
-	    push(@capaList,"ProtServ");
-	} 
-	elsif($capa =~ /DRM/)
-	{
-	    push(@capaList,"DRM");
-	} 
-	elsif($capa =~ /SwEvent/)
-	{
-	    push(@capaList,"SwEvent");
-	} 
-	elsif($capa =~ /PowerMgmt/)
-	{
-	    push(@capaList,"PowerMgmt");
-	} 
-	elsif($capa =~ /AllFiles/)
-	{
-	    push(@capaList,"AllFiles");
-	} 
-	elsif($capa =~ /DiskAdmin/)
-	{
-	    push(@capaList,"DiskAdmin");
-	} 
-	elsif($capa =~ /MultiMediaDD/)
-	{
-	    push(@capaList,"MultimediaDD");
-	} 
-	elsif($capa =~ /CommDD/)
-	{
-	    push(@capaList,"CommDD");
-	} 
-	elsif($capa =~ /TrustedUI/)
-	{
-	    push(@capaList,"TrustedUI");
-	} 
-	elsif($capa =~ /TCB/)
-	{
-	    push(@capaList,"TCB");
-	} 
-	elsif($capa =~ /AlwaysPass/  || $capa =~ /None/)
-	{
-	    push(@capaList,"alwayspass");
-	} 
-	elsif($capa =~ /UserEnvironment/)
-	{
-	    push(@capaList,"UserEnvironment");
-	} 
-	elsif($capa =~ /SurroundingsDD/)
-	{
-	    push(@capaList,"SurroundingsDD");
-	} 
-    }
-    
-    return join(",",@capaList);
-
-}
-###################################################
-# 3rd param syntax:
-# <release> 
-#     => { 
-#        "R" => (<capa1ForReading>,<capa2ForReading>)
-#        "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#        "value" => <value>
-#        "rfs"  => <0/1>
-#        "backup"  => <0/1>
-#         }
-#  
-###################################################
-sub getConfig
-{
-    my $platId = shift;
-    my $platRel = shift;
-    my $refToHash = shift;
-
-    my $currRel = "0";
-    my $currRef = undef;
-    foreach my $plat (sort keys %$refToHash)
-    {
-	if($plat =~ /$platId\s+([0-9]+\.[0-9]+)/i)
-	{
-	    my $tentativeRel = $1;
-	    if($tentativeRel > $currRel && $tentativeRel <= $platRel)
-	    {
-		$currRel = $tentativeRel;
-		$currRef = $$refToHash{$plat};
-	    }
-	}
-    }
-#      if($currRel > 0)
-#      {
-#  	print $$refToHash{$currRel}, "a\n";
-#  	return $$refToHash{$currRel};
-#      }
-    return $currRef;
-}
-
-###########################################################################
-# Main function, 
-###########################################################################
-sub readConfig
-{
-    my $refToExcelFiles = shift;
-    my $refToExcel = shift;
-    
-    my %reshHash;
-    my $refToWorkSheet;
-    
-    # Loop through each found excel sheet. This will open one file after each other
-    # and parse information into the hashes defined above.
-    foreach my $file ( @{$refToExcelFiles} ) 
-    {
-	print "   Reading: $file\n";
-
-	# ----------------------------------------------------------------  
-	# Open the file
-	# ----------------------------------------------------------------  
-	my $refToWb = openWorkbook( $file,$refToExcel);
-
-	# ----------------------------------------------------------------  
-	# Check, that the template version is the one we support. If not
-	# the file is skipped and warning is written to user.
-	# ----------------------------------------------------------------  
-#  	if( isSupported($refToWb) == 0)
-#  	{
-#  	    # "delete" the workbooks, this closes the excel application
-#  	    undef $$refToWb;
-#  	    undef $refToWb;
-#  	    print STDERR "Warning: Unsupported template version in file: $file\n";
-#  	    next;
-#  	}
-
-	
-	# ----------------------------------------------------------------  
-	# Read the information from the worksheets
-	# ----------------------------------------------------------------
-	for( my $i = 0; $i < $$refToWb->Worksheets->Count; $i++)
-	{
-	    my $workSheet = $$refToWb->WorkSheets($i + 1);
-	    $refToWorkSheet = getWorkSheet( $refToWb,$workSheet->Name);
-	    readCentrepKeyInfo( $refToWorkSheet,\%reshHash);
-	}
-	# "delete" the workbooks, this closes the excel application
-	$$refToWb->Close(0);
-	undef $$refToWb;
-	undef $refToWb;
-    }
-    return \%reshHash;
-}
-###########################################################################
-###########################################################################
-sub getKeyType
-{
-    my $key = shift;
-
-    return "string" if($key =~ /str/i);
-    return "int" if($key =~ /int/i);
-    return "real" if($key =~ /real/i);
-    return "binary" if($key =~ /bin/i);
-
-    return "unknown_type";
-}
-
-
-###########################################################################
-# Prints the Key and key type into the given output.
-# The format in which the key is printed is format specific.
-###########################################################################
-sub printKey
-{
-    my $to = shift;
-    my $formatNbr = shift;
-    my $key = shift;
-    my $keyType = shift;
-
-    $key =~ s/0x(0*)/0x/g;
-    # Add 0 if the key value is "0x" (cases, where the id == 0)
-    $key .= "0" if $key =~ /0x\s*$/;
-    printStr $to, $key . " " . $keyType . " ";
-
-    return;
-}
-
-###########################################################################
-# Prints the capabilities into the given output.
-# The format in which the capabilities are printed is format specific.
-###########################################################################
-sub printCapa
-{
-    my $to = shift;
-    my $formatNbr = shift;
-    my $refToCapaList = shift;
-    my $prefix = shift;
-    my $alwaysFail = shift;
-
-    if($formatNbr > 1)
-    {
-	if($alwaysFail && $formatNbr > 3)
-	{
-	    printStr \*OUT, " $prefix=alwaysfail";
-	}
-	elsif(defined($refToCapaList) && scalar(@$refToCapaList) > 0)
-	{
-	    my $capaStr = getCapaValue($formatNbr,$refToCapaList);
-	    printStr \*OUT, " $prefix=$capaStr" if($capaStr);
-	}
-    }
-}
-
-###########################################################################
-# Prints the Sid  capabilities into the given output.
-# The format in which the capabilities are printed is format specific.
-###########################################################################
-sub printSidCapa
-{
-    my $to = shift;
-    my $formatNbr = shift;
-    my $refToCapaList = shift;
-    my $prefix = shift;
-
-    if($formatNbr > 1)
-    {
-	if(defined($refToCapaList) && scalar(@$refToCapaList) > 0)
-	{
-	    # Only 1 SID is allowed
-	    printStr \*OUT, " $prefix=$$refToCapaList[0]";
-	}
-    }
-}
-
-###########################################################################
-# Prints the information about ranges
-###########################################################################
-sub printPlatSec
-{
-    my $to = shift;
-    my $formatNbr = shift;
-    my $refToUidSpecificHash = shift;
-    my $refToRangesHash = shift;
-    my $fileName = shift;
-    my $addDefCaps = shift;
-
-    #-------------------------------
-    # UID specific (default capabilities)
-    #-------------------------------
-    # we need to know if write / read was specified.
-    # if not and addDefCaps is defined => then be add the 
-    # default alwayspass to the file
-    my $readSpecified = 0;
-    my $writeSpecified = 0;
-
-    ###############################
-    # RSid-capa writing (format specific)
-    ###############################
-    my $refToCapaList = $$refToUidSpecificHash{"RSid"};
-    printSidCapa($to,$formatNbr,$refToCapaList,"sid_rd");
-    $readSpecified += scalar(@$refToCapaList) if defined($refToCapaList);
-    
-    ###############################
-    # R-capa writing (format specific)
-    ###############################
-    $refToCapaList = $$refToUidSpecificHash{"R"};
-    printCapa($to,$formatNbr,$refToCapaList,"cap_rd",0);
-    $readSpecified = scalar(@$refToCapaList) if defined($refToCapaList);
-    
-    # Add def caps if no caps were defined
-    if($addDefCaps > 0 && $readSpecified < 1)
-    {
-	printStr \*OUT, " cap_rd=alwayspass";
-
-    }
-
-    ###############################
-    # WSid-capa writing (format specific)
-    ###############################
-    $refToCapaList = $$refToUidSpecificHash{"WSid"};
-    printSidCapa($to,$formatNbr,$refToCapaList,"sid_wr");
-    $writeSpecified += scalar(@$refToCapaList) if defined($refToCapaList);
-    
-    ###############################
-    # W-capa writing (format specific)
-    ###############################
-    $refToCapaList = $$refToUidSpecificHash{"W"};
-    printCapa($to,$formatNbr,$refToCapaList,"cap_wr",0);
-    $writeSpecified = scalar(@$refToCapaList) if defined($refToCapaList);
-    
-    # Add def caps if no caps were defined
-    if($addDefCaps > 0 && $writeSpecified < 1)
-    {
-	printStr \*OUT, " cap_wr=alwayspass";
-
-    }
-
-    printNewLine($to,$fileName);
-    
-    #-------------------------------
-    # Ranges
-    #-------------------------------
-    foreach my $rangeFrom (keys %$refToRangesHash)
-    {
-	my $refToRangeFromHash = $$refToRangesHash{$rangeFrom};
-
-	foreach my $rangeTo (keys %$refToRangeFromHash)
-	{
-	    my $refToRangeToHash = $$refToRangeFromHash{$rangeTo};
-
-	    printStr $to, $rangeFrom . " " .$rangeTo;
-	    
-	    ###############################
-	    # RSid-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToRangeToHash{"RSid"};
-	    printSidCapa($to,$formatNbr,$refToCapaList,"sid_rd");
-	    
-	    ###############################
-	    # R-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToRangeToHash{"R"};
-	    printCapa($to,$formatNbr,$refToCapaList,"cap_rd",0);
-	
-	    ###############################
-	    # WSid-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToRangeToHash{"WSid"};
-	    printSidCapa($to,$formatNbr,$refToCapaList,"sid_wr");
-	    
-	    ###############################
-	    # W-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToRangeToHash{"W"};
-	    printCapa($to,$formatNbr,$refToCapaList,"cap_wr",0);
-	    
-	    printNewLine($to,$fileName);
-	}
-    }    
-}
-
-###########################################################################
-# Prints the information about metadata
-###########################################################################
-sub printMetadata
-{
-    my $to = shift;
-    my $formatNbr = shift;
-    my $refToUidSpecificHash = shift;
-    my $refToRangesHash = shift;
-    my $fileName = shift;
-
-    #-------------------------------
-    # UID specific metadata
-    #-------------------------------
-
-    my $metaData = 0;
-    if($$refToUidSpecificHash{"backup"})
-    {
-	$metaData += $globalBackupValue;
-    }
-    printStr $to, " $metaData";
-    printNewLine($to,$fileName);
-
-    
-    #-------------------------------
-    # Ranges
-    #-------------------------------
-    foreach my $rangeFrom (keys %$refToRangesHash)
-    {
-	my $refToRangeFromHash = $$refToRangesHash{$rangeFrom};
-
-	foreach my $rangeTo (keys %$refToRangeFromHash)
-	{
-	    my $refToRangeToHash = $$refToRangeFromHash{$rangeTo};
-
-	    printStr $to, $rangeFrom . " " .$rangeTo;
-
-	    my $metaData2 = 0;
-	    if($$refToRangeToHash{"backup"})
-	    {
-		$metaData2 += $globalBackupValue;
-	    }
-	    printStr $to, " $metaData2";
-	    printNewLine($to,$fileName);
-	}    
-    }
-}
-
-###########################################################################
-# Function that generates a text file for the Restore factory settings.
-# This file 
-###########################################################################
-sub generateRfsFile
-{
-    my $reshHash = shift;
-    my $rfsFileWithPath = shift;
-
-    open(OUT,">$rfsFileWithPath") || die "unable to open $rfsFileWithPath for writing";
-    print OUT "\xFF\xFE";
-
-    foreach my $uid (keys %$reshHash)
-    {
-	my $refToUidHash = $$reshHash{$uid};
-	$uid =~ s/^0x0*//g;
-	$uid = 0 if $uid =~ /^$/;
-	my $refToUidSpecificHash = $$refToUidHash{"uid_specific"};
-
-	# Uid specific rfs overwrites the key specific values
-	# Thus if this is set to yes => we can skip key specific values
-	if($$refToUidSpecificHash{"rfs"})
-	{	    
-	    printStr \*OUT, "CR $uid";
-	    printNewLine(\*OUT,$rfsFileWithPath);
-	    next;
-	}
-
-	# If we get here => uid was not set to yes for RFS.
-	# now we loop through each ke
-	########################
-	# print each key into the file.
-	########################
-	my $refToKeysHash = $$refToUidHash{"keys"};
-	my $isFirstInUid = 1;
-	foreach my $key (sort keys %$refToKeysHash)
-	{		
-	    my $refToKeyHash = $$refToKeysHash{$key};
-
-	    # Check, if the key was restored in RFS. 	    
-	    if($$refToKeyHash{"rfs"})
-	    {
-		# If this is the 1st key for this UI, then
-		# we print the keyword (CR) and the uid into the
-		# file.
-		if($isFirstInUid)
-		{
-		    $isFirstInUid = 0;
-		    printStr \*OUT, "CR $uid";
-		    
-		}
-		
-		# print the key into the file (after some modifications)
-		$key =~ s/^0x0*//g;
-		$key = 0 if $key =~ /^$/;
-		printStr \*OUT, " $key";
-	    }
-	}
-	# Print a newline if (and only if) there was keys that had rfs-flag
-	# on.
-	if(! $isFirstInUid)
-	{
-	    printNewLine(\*OUT,$rfsFileWithPath);
-	}
-    }  
-    close OUT;
-}
-
-###########################################################################
-# Function that generates all the ini (txt)-files for the central repository.
-# There are multiple formats, which are supported at the moment, since the
-# development in ongoing and syntax is still a little but unknown.
-###########################################################################
-sub generateIniFiles
-{
-    my $reshHash = shift;
-    my $dirname = shift;
-    my $formatNbr = shift;
-    my $addDefCaps = shift;
-
-    my $iniFileCount = 0;
-    my $keyCount = 0;
-
-    foreach my $uid (keys %$reshHash)
-    {
-	my $refToHash = $$reshHash{$uid};
-	$refToHash = $$refToHash{"keys"};
-	my $refToRangeHash = $$refToHash{"ranges"};
-	if(scalar(keys %$refToHash) < 1 && scalar(keys %$refToRangeHash))
-	{
-	    # Skip uid, if no keys and ranges
-	    next;
-	}
-	$iniFileCount++;
-
-	##################################
-	# Filename syntax is "uid.txt" without the 0x in the begining 
-	##################################
-	my $fileName = "$uid.txt";
-	$fileName =~ s/^0x//i;
-			     
-	# Add dir name into the filename. 
-	if($dirname !~ /^\s*$/)
-	{
-	    my $tmpFileName = $fileName;
-	    $fileName = $dirname;
-	    if($dirname !~ /[\\\/]$/)
-	    {
-		$fileName .=  "\\";
-	    }
-	    $fileName .= $tmpFileName;
-	}
-
-	########################
-        # Copy the start of the file into the new name
-	# (note that this migth become format specific, 
-	#  but is not at the moment).
-	########################
-	my $templateName = "cenrep_start.ini";
-	    
-	copy($templateName,$fileName) or die "Copy failed: $! : $fileName";
-	open(OUT,">>$fileName") || die "unable to open $fileName";
-	########################
-	# Print the [owner] section
-	########################
-	if($formatNbr > 2)
-	{
-	    my $refToUidHash = $$reshHash{$uid};
-	    my $refToUidSpecificHash = $$refToUidHash{"uid_specific"};
-
-	    if($$refToUidSpecificHash{"owner"} !~ /^\s*$/)
-	    {
-		printStr \*OUT, "[owner]";
-		printNewLine(\*OUT,$fileName);
-		printStr \*OUT, $$refToUidSpecificHash{"owner"};
-		printNewLine(\*OUT,$fileName);
-	    }	    
-	}
-
-	########################
-	# Print the [defaultmeta] section
-        # Note that depending on the format
-        # nbr the metadata has to be before or after
-        # platsec-section.
-	########################
-	if($formatNbr > 3 )
-	{
-	    printStr \*OUT, "[defaultmeta]";
-	    printNewLine(\*OUT,$fileName);
-
-	    my $refToUidHash = $$reshHash{$uid};
-	    printMetadata(\*OUT,$formatNbr,$$refToUidHash{"uid_specific"},
-			  $$refToUidHash{"ranges"},$fileName);
-	}
-        
-	########################
-	# Print the [PlatSec] section
-	########################
-	if($formatNbr > 1)
-	{
-	    printStr \*OUT, "[platsec]";
-	    printNewLine(\*OUT,$fileName);
-    
-	    my $refToUidHash = $$reshHash{$uid};
-	    printPlatSec(\*OUT,$formatNbr,$$refToUidHash{"uid_specific"},
-			$$refToUidHash{"ranges"},$fileName,$addDefCaps);
-	}
-	########################
-	# Print the [metadata] section
-	########################
-	if($formatNbr eq 3)
-	{
-	    printStr \*OUT, "[metadata]";
-	    printNewLine(\*OUT,$fileName);
-
-	    my $refToUidHash = $$reshHash{$uid};
-	    printMetadata(\*OUT,$formatNbr,$$refToUidHash{"uid_specific"},
-			  $$refToUidHash{"ranges"},$fileName);
-	}
-
-	########################
-	# Print the [Main] section
-	########################
-	if($formatNbr > 0)
-	{
-	    printStr \*OUT, "[Main]";
-	    printNewLine(\*OUT,$fileName);
-	}
-
-	########################
-	# print each key into the file.
-	########################
-	foreach my $key (sort keys %$refToHash)
-	{		
-	    $keyCount++;
-	    my $refToHash2 = $$refToHash{$key};
-
-	    ###############################
-	    # Writing the key and key type. 
-	    # This is format specific.
-	    ###############################
-	    printKey(\*OUT,$formatNbr,$key,getKeyType($$refToHash2{"key type"}));
-
-	    ###############################
-	    # Write the value into the file
-	    ###############################
-
-	    # Strings are always enclosed with \". Also empty binary value is also enclosed
-	    # such way
- 	    if($$refToHash2{"key type"} =~ /str/i ) 
-	    {
-		printStr \*OUT, "\"";
-	    }
-	    printStr \*OUT, $$refToHash2{"value"}; 
- 	    if($$refToHash2{"key type"} =~ /str/i) 
-	    {
-		printStr \*OUT, "\"";
-	    }
-
-            if ($$refToHash2{"key type"} =~ /bin/i && $$refToHash2{"value"} =~ /^\s*$/)
-            {
-                printStr \*OUT, "00";
-            }
-
-	    ###############################
-	    # Generating the metadata and adding it into the file
-	    ###############################
-	    my $metaData = 0;
-	    if($$refToHash2{"backup"})
-	    {
-		$metaData += $globalBackupValue;
-	    }
-	    printStr \*OUT, " $metaData";
-
-	    # Note, according to the cenrep specification, then read access has to be
-	    # before the write access.
-
-	    ###############################
-	    # RSid-capa writing (format specific)
-	    ###############################
-	    my $refToCapaList = $$refToHash2{"RSid"};
-	    printSidCapa(\*OUT,$formatNbr,$refToCapaList,"sid_rd");
-
-	    ###############################
-	    # R-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToHash2{"R"};
-	    printCapa(\*OUT,$formatNbr,$refToCapaList,"cap_rd",0);
-
-	    ###############################
-	    # WSid-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToHash2{"WSid"};
-	    printSidCapa(\*OUT,$formatNbr,$refToCapaList,"sid_wr");
-
-	    ###############################
-	    # W-capa writing (format specific)
-	    ###############################
-	    $refToCapaList = $$refToHash2{"W"};
-	    printCapa(\*OUT,$formatNbr,$refToCapaList,"cap_wr",$$refToHash2{"read-only"});
-
-	    ##########################################
-	    ##########################################
-	    ##########################################
-	    ##########################################
-	    printNewLine(\*OUT,$fileName);
-	}
-	close OUT;
-    }
-
-    print "Ini file count = $iniFileCount\n";
-    print "Key count      = $keyCount\n";
-}
-
-###########################################################################
-# Shows help.
-#
-# Params: -
-#
-# Return: -
-#
-###########################################################################
-sub usage
-{
-    $0 =~ /([0-9a-zA-Z\_\.]+)$/;
-    my $filename = $1;
-    print "\n";
-    print "\n";
-    print "\n";
-    print "This script is intended to be used to generate ini-files for Central Repository\n";
-    print "based on the information in the cenrep key excel-sheet(s). These sheets define\n";
-    print "the content of the ini-files.\n";
-    print "\n";
-    print "Rough discruption on how the values for the ini-files are determinated:\n";
-    print "1) Content of sheets identified by -d or -s are read.\n";
-    print "   (alternatively -b can be used a storable file, where the sheet info\n";
-    print "    is already in binary format)\n";
-    print "2) From sheets read in step 1 the information is parsed based on the\n";
-    print "   information specified by -p, -r and -v\n";
-    print "3) [optional] Default values specified by the steps 1 and 2 can be\n";
-    print "    overriden by defining information in other sheets, specified by parameters\n";
-    print "    -vd,-vs,-vb and -vv, \n";
-    print "\n";
-    print "\n";
-    print "Usage:\n";
-    print "  $filename [-h|-help] [-fh]\n";
-    print "                [-p <platId>] -r <platRel> [-v <variantName]\n";
-    print "                (-d <dirName> | -s <sourceFilename> | -b <storableFilename>)\n";
-    print "                [ -rd <resultDir>]\n";
-    print "                [ (-vd <variantDirName> | -vs <sourceFilename> | -vb <storableFilename>)\n";
-    print "                  [-vv <variantsVariantName>]]\n";
-    print "                [-f <formatNbr> ]\n";
-    print "                [-dc ]\n";
-    print "                [-rfs <dirName> [-noini]]\n";
-    print "\n";
-    print "Options:\n";
-    print " -h                  : Show this help\n";
-    print " -help               : Show this help\n";
-    print " -fh                 : Show the help about supported formats.\n";
-    print " -p <platId>         : The identifier specifying platform. Optional. Default value: S60\n"; 
-    print "                       to the directory where the mem-sheets exist.\n";
-    print " -r <platRel>        : The platform number. For example: 3.0\n";
-    print " -rd <resultDir>     : The path, where the generated ini-files are written.\n";
-    print "                        Default: current directory\n";
-    print " -v <variantName>    : The variant name. Optional. Default value: \"\" == no variant.\n";
-    print "                       The names are not fixed in the script. The same names has to be\n";
-    print "                       used as supported by the excel sheet.\n";
-    print " -d <dirName>        : The dir, which contains the sheets, which are read. Relative path to the\n";
-    print "                       current dir or absoluth path. NOTE: the dir name can't contain any spaces.\n";
-    print " -s <sourceFilename>       : The text filename, which contains sheet name with absoluth\n";
-    print "                             path names (1/row)\n";
-    print " -b <storableFilename>  : the storable file name, which contains the same information as the\n";
-    print "                          key sheets. ( this can be generated with gather_cenrep_to_storable.pl)\n";
-    print " -vd <variantDirName>      : Same as -d, but for variant information\n";
-    print "                             (see rough description above) Optional.\n";
-    print " -vs <sourceFilename>      : Same as -s, but for variant information\n";
-    print "                              (see rough description above) Optional.\n";
-    print " -vb <storableFilename>  : the storable file name, which contains the same information as the\n";
-    print "                          variant key sheets.\n";
-    print " -vv <variantsVariantName> : Same as -v, but for variant information\n";
-    print "                              (see rough description above) Optional.\n";
-    print " -f <formatNbr>          : the format type that is generated. (see list of formats with -fh)\n";
-    print " -dc                     : adds alwayspass as default capabilities for UID namespace if non \n";
-    print "                              specified (also applies to certain formats)\n";
-    print " -rfs <dirName>        : The dir to which cenrep.txt-file is generated. This file\n";
-    print "                         contains info for Restore Factory Settings\n";
-    print " -noini                : used only with -rfs-option. If specified, only RFS file generated,\n";
-    print "                          no ini-files.\n";
-    print "\n";
-    print "\n";
-    print "You have specify either -d or -s, but not both at the same time.\n";
-    print "You can specify either -vd or -vs, but not both at the same time.\n";
-    print "\n";
-    print "\n";
-}
-
-
-###########################################################################
-# Shows format help.
-#
-# Params: -
-#
-# Return: -
-#
-###########################################################################
-sub formatHelp
-{
-    $0 =~ /([0-9a-zA-Z\_\.]+)$/;
-    my $filename = $1;
-    print "\n";
-    print "\n";
-    print "Supported formats (default format is 4):\n";
-    print "   0 : Format, where there are no capabilities generated for the keys.\n";
-    print "       Supported is key (as hex), type, value and metadata.\n";
-    print "       No \"[Main]\"-tag is included into the ini-file.\n";
-    print "       (a temporary fix so that testing can continue).\n";
-    print "   1 : Format 0 + \"[Main]\"-tag is included into the ini-file.\n";
-    print "       (Symbian w48 and earlier builds).\n";
-    print "\n";
-    print "   2 : Format 1 + in addition  capabilities are written in text format.\n";
-    print "       Supported is key (as hex), type, value, metadata and read/write capabilities in text format.\n";
-    print "       (Symbian w50 and later builds).\n";
-    print "\n";
-    print "   3 : Format 3 + in addition owner and metadata are written in text format.\n";
-    print "       Supported is key (as hex), type, value, metadata and read/write capabilities in text format.\n";
-    print "       (Symbian w?? and later builds).\n";
-    print "\n";
-    print "   4 : Format 4 + in addition alwaysfail-keyword used in ini-file.\n";
-    print "       (Symbian w10 and later builds).\n";
-    print "\n";
-    print "\n";
-    print "\n";
-
-}
-###########################################################################
-# Parses the command line parameters from ARGV
-#
-# Params: -
-#
-# Return: -		    
-#
-###########################################################################
-sub parseCmdLine
-{
-    my $platId = "S60";
-    my $platRel = "";
-    my $varName = "";
-    my $sheetDirname = "";
-    my $sheetFilename = "";
-    my $storableFilename = "";
-    my $resultDirname = "";
-    my $varNameVariant = "";
-    my $sheetDirnameVariant = "";
-    my $sheetFilenameVariant = "";
-    my $storableFilenameVariant = "";
-    my $formatNbr = -1;
-    my $addDefCaps = 0;
-    my $rfsDir = "";
-    my $noIni = 0;
-    my $showHelp = 0;
-    my $showFormatHelp = 0;
-
-    if( ! GetOptions('p:s'      => \$platId,
-		     'r:s'      => \$platRel,
-		     'v:s'      => \$varName,
-		     'd:s'      => \$sheetDirname,
-		     's:s'      => \$sheetFilename,
-		     'b:s'      => \$storableFilename,
-		     'rd:s'     => \$resultDirname,
-		     'vv:s'     => \$varNameVariant,
-		     'vd:s'     => \$sheetDirnameVariant,
-		     'vs:s'     => \$sheetFilenameVariant,
-		     'vb:s'     => \$storableFilenameVariant,
-		     'f:i'      => \$formatNbr,
-		     'dc'       => \$addDefCaps,
-		     'rfs:s'    => \$rfsDir,
-		     'noini'    => \$noIni,
-		     'h'        => \$showHelp,
-		     'help'     => \$showHelp,
-		     'fh'       => \$showFormatHelp,
-		     '<>'       => \&usage))
-    {
-	usage();
-	exit(1);
-    }
-    
-
-    ####################################
-    # Format number handling.
-    ####################################
-    # Set default format number, if not specified.
-    if( $formatNbr < 0)
-    {
-	$formatNbr = 4;
-    }
-    elsif( $formatNbr > 4)
-    {
-	print "\nError: Invalid format number: $formatNbr.\n";
-	$showFormatHelp = 1;
-    }
-
-    if($showFormatHelp)
-    {
-	formatHelp();
-	exit(1);
-    }
-    if($showHelp)
-    {
-	usage();
-	exit(1);
-    }
-
-
-
-    ####################################
-    # Checking other parameters
-    ####################################
-    my $error = 0;
-    if(    ($sheetDirname ne "" and $sheetFilename ne "") 
-	or ($sheetDirname ne "" and -b $storableFilename ne "")
-	or ($sheetFilename ne "" and -b $storableFilename ne ""))
-    {
-	print "\nError: The -s, -d and -b arguments can't be specified at the same time.\n";
-	$error = 1;
-    }
-    elsif($sheetDirname eq "" and $sheetFilename eq "" and $storableFilename eq "")
-    {
-	print "\n\nError: You have to specify either the -d or -s or -b argument.\n";
-	$error = 1;
-    }
-
-    if(   ($sheetDirnameVariant ne "" and $sheetFilenameVariant ne "")
-       or ($sheetDirnameVariant ne "" and $storableFilenameVariant ne "")
-       or ($storableFilenameVariant ne "" and $sheetFilenameVariant ne "")
-	    )
-    {
-	print "\nError: The -vs and -vd  and -vb arguments can't be specified at the same time.\n";
-	$error = 1;
-    }
-
-    if($platRel eq "")
-    {
-	print "\nError: You have to specify -r parameter.\n";
-	$error = 1;
-    }
-    
-    if($error)
-    {
-	usage();
-	exit(1);
-    }
-    elsif($showHelp)
-    {
-	usage();
-    }
-
-    return ($platId,$platRel,$varName,$sheetDirname,$sheetFilename,$storableFilename,
-	    $resultDirname,$varNameVariant,
-	    $sheetDirnameVariant,$sheetFilenameVariant,$storableFilenameVariant,$formatNbr,
-	    $addDefCaps,$rfsDir,$noIni);
-}
-
-###########################################################################
-#
-# The format of the returned hash is:
-# NOTE: Still one bug, onge a range/key  has been defined it can't be removed 
-#  {
-#  <uid> => 
-#    {
-#    "uid_specific"   
-#           = > {
-#               "R" => (<capa1ForReading>,<capa2ForReading>)
-#               "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#               "RSid" => (<sidForReading>)
-#               "WSid" => (<sidForWriting>)
-#               "owner"  => <someHexValue>
-#               "rfs"  => <0/1>
-#               "backup"  => <0/1>
-#               }
-#    "ranges"   
-#           = > {
-#            <fromRange>
-#              => {
-#                <toRange>
-#                 => {
-#                    "R" => (<capa1ForReading>,<capa2ForReading>)
-#                     "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#                     "RSid" => (<sidForReading>)
-#                     "WSid" => (<sidForWriting>)
-#                     "rfs"  => <0/1>
-#                     "backup"  => <0/1>       
-#                     }
-#                  }        
-#               }
-#    "keys" => {
-#              <keyInt> 
-#                   => {
-#                      "read-only" => <0/1>
-#                      "key type" => <bin/int/str/bool>
-#                      "R" => (<capa1ForReading>,<capa2ForReading>)
-#                      "W" => (<capa1ForWriting>,<capa2ForWriting>)
-#                      "RSid" => (<sidForReading>)
-#                      "WSid" => (<sidForWriting>)
-#                      "value" => <value>
-#                      "rfs"  => <0/1>
-#                      "backup"  => <0/1>
-#                       }
-#                } # keys
-###########################################################################
-sub generateConfig
-{
-    my $refToResHash = shift;     # The generated configuration
-    my $reftoConfigHash = shift;  # from where the configuration is generated from
-    my $platId = shift;
-    my $platRel = shift;
-    my $varName = shift;
-
-    if($varName =~ /^\s*$/)
-    {
-	# same as in cenrep_keys.pm
-	$varName = "default";
-    }
-
-    # See syntax of reftoConfigHash from the documentation of
-    # readCentrepKeyInfo
-    my $refToHash;
-    foreach my $uid (keys %$reftoConfigHash)
-    {
-	my $tmpUidResHash = addHash($uid,$refToResHash);
-	my $refToUidConfigHash = $$reftoConfigHash{$uid};
-
-	##########################################
-	# Adding UID information
-	##########################################
-	my $refToUidSpecificResHash = addHash("uid_specific",$tmpUidResHash);
-
-	my $refToUidSpecificConfigHash = $$refToUidConfigHash{"uid_specific"};
-	my $refToUidSpecificVariantConfigHash = undef;
-
-	#--------------------------------------------------
-	# now check, if there is variant specific configuration
-	#--------------------------------------------------
-	if(defined($$refToUidSpecificConfigHash{$varName}))
-	{
-	    $refToUidSpecificVariantConfigHash 
-		= getConfig($platId,$platRel,
-			    $$refToUidSpecificConfigHash{$varName});
-	}
-	#--------------------------------------------------
-	# if not found, then try to get default configuration
-	#--------------------------------------------------
-	if(!defined($refToUidSpecificVariantConfigHash) && $varName ne "default")
-	{
-	    $refToUidSpecificVariantConfigHash 
-		= getConfig($platId,$platRel,
-			    $$refToUidSpecificConfigHash{"default"});	    
-	}
-	#--------------------------------------------------
-	# if we found configuration then add it to the hash
-	#--------------------------------------------------
-	if(defined($refToUidSpecificVariantConfigHash))
-	{
-	    $$refToUidSpecificResHash{"rfs"} = $$refToUidSpecificVariantConfigHash{"rfs"};
-	    $$refToUidSpecificResHash{"backup"} = $$refToUidSpecificVariantConfigHash{"backup"};
-	    $$refToUidSpecificResHash{"R"} = $$refToUidSpecificVariantConfigHash{"R"};
-	    $$refToUidSpecificResHash{"W"} = $$refToUidSpecificVariantConfigHash{"W"};
-	    $$refToUidSpecificResHash{"RSid"} = $$refToUidSpecificVariantConfigHash{"RSid"};
-	    $$refToUidSpecificResHash{"WSid"} = $$refToUidSpecificVariantConfigHash{"WSid"};
-	    $$refToUidSpecificResHash{"owner"} = $$refToUidSpecificVariantConfigHash{"owner"};
-	}	    
-	##########################################
-	# Adding range information
-	##########################################
-	my $refToRangesResHash = addHash("ranges",$tmpUidResHash);
-
-	my $refToRangesConfigHash = $$refToUidConfigHash{"ranges"};
-	foreach my $rangeFrom (keys %$refToRangesConfigHash)
-	{
-	    my $refToRangeCommonConfigHash = ${$$refToRangesConfigHash{$rangeFrom}}{"common"};
-	    # 1st check, if the key belongs to this release
-	    if(isRemoved($platId,$platRel,$$refToRangeCommonConfigHash{"removed"}))
-	    {
-		next;
-	    }
-
-	    my $refToRangesToConfigHash = ${$$refToRangesConfigHash{$rangeFrom}}{"to"};
-	    foreach my $rangeTo (keys %$refToRangesToConfigHash)
-	    {
-		my $refToSingleRangeToConfigHash 
-		    = $$refToRangesToConfigHash{$rangeTo};
-		my $refToRangeToVariantConfigHash = undef;
-		#--------------------------------------------------
-		# now check, if there is variant specific configuration
-		#--------------------------------------------------
-		if(defined($$refToSingleRangeToConfigHash{$varName}))
-		{
-		    $refToRangeToVariantConfigHash
-			= getConfig($platId,$platRel,
-				    $$refToSingleRangeToConfigHash{$varName});
-		}
-		#--------------------------------------------------
-		# if not found, then try to get default configuration
-		#--------------------------------------------------
-		if(!defined($refToRangeToVariantConfigHash) && $varName ne "default")
-		{
-		    $refToRangeToVariantConfigHash
-			= getConfig($platId,$platRel,
-				    $$refToSingleRangeToConfigHash{"default"});	    
-		}
-		#--------------------------------------------------
-		# if we found configuration then add it to the hash
-		#--------------------------------------------------
-		if(defined($refToRangeToVariantConfigHash))
-		{
-		    my $refRangeVariantResHash  = addHash($rangeFrom,$refToRangesResHash);
-		    $refRangeVariantResHash  = addHash($rangeTo,$refRangeVariantResHash);
-		    $$refRangeVariantResHash{"rfs"} = $$refToRangeToVariantConfigHash{"rfs"};
-		    $$refRangeVariantResHash{"backup"} = $$refToRangeToVariantConfigHash{"backup"};
-		    $$refRangeVariantResHash{"R"} = $$refToRangeToVariantConfigHash{"R"};
-		    $$refRangeVariantResHash{"W"} = $$refToRangeToVariantConfigHash{"W"};
-		    $$refRangeVariantResHash{"RSid"} = $$refToRangeToVariantConfigHash{"RSid"};
-		    $$refRangeVariantResHash{"WSid"} = $$refToRangeToVariantConfigHash{"WSid"};
-		}	
-	    }
-	}    
-	##########################################
-	# Adding key values
-	##########################################
-	my $tmpKeysResHash = addHash("keys",$tmpUidResHash);
-
-	$refToHash = $$reftoConfigHash{$uid};
-	$refToHash = $$refToHash{"keys"};
-	foreach my $key (keys %$refToHash)
-	{
-	    my $refToCommonHash = ${$$refToHash{$key}}{"common"};
-	    # 1st check, if the key belongs to this release
-	    if(isRemoved($platId,$platRel,$$refToCommonHash{"removed"}))
-	    {
-		next;
-	    }
-	    #--------------------------------------------------
-	    # now check, if there is variant specific configuration
-	    #--------------------------------------------------
-	    my $refToRelHash = ${$$refToHash{$key}}{"release"};
-	    my $refToKeyConfigHash;
-	    if(defined($$refToRelHash{$varName}))
-	    {
-		$refToKeyConfigHash = getConfig($platId,$platRel,
-						$$refToRelHash{$varName});
-	    }
-	    #--------------------------------------------------
-	    # if not found, then try to get default configuration
-	    #--------------------------------------------------
-	    if(!defined($refToKeyConfigHash) && $varName ne "default")
-	    {
-		$refToKeyConfigHash 
-		    = getConfig($platId,$platRel,
-				$$refToRelHash{"default"});	    
-	    }
-	    #--------------------------------------------------
-	    # if we found configuration then add it to the hash
-	    #--------------------------------------------------
-	    if(defined($refToKeyConfigHash))
-	    {
-		my $keyResHash = addHash($key,$tmpKeysResHash);
-		$$keyResHash{"read-only"} = $$refToCommonHash{"read-only"};
-		$$keyResHash{"key type"} = $$refToCommonHash{"key type"};
-		$$keyResHash{"value"} = $$refToKeyConfigHash{"value"};
-		$$keyResHash{"rfs"} = $$refToKeyConfigHash{"rfs"};
-		$$keyResHash{"backup"} = $$refToKeyConfigHash{"backup"};
-		$$keyResHash{"R"} = $$refToKeyConfigHash{"R"};
-		$$keyResHash{"W"} = $$refToKeyConfigHash{"W"};
-		$$keyResHash{"RSid"} = $$refToKeyConfigHash{"RSid"};
-		$$keyResHash{"WSid"} = $$refToKeyConfigHash{"WSid"};
-	    }	    
-	}
-    }
-}
-
-###########################################################################
-# reads either default config or variant config into the result hash.
-# Note that the variant hash can't delete any keys, just override them.
-###########################################################################
-sub readSingleConfig
-{
-    my $refToExcel      = shift;
-    my $sheetDirname    = shift;
-    my $sheetFilename   = shift;
-    my $storableFilename = shift;
-    my $refToResultHash = shift;
-    my $platId          = shift;
-    my $platRel         = shift;
-    my $varName         = shift;
-    
-    #-----------------------------------------------------------------
-    # There are 2 options how the user can give the if-sheet names handled:
-    # 1) He gives the directory where all files are located
-    # 2) He gives an excel sheet, which contains all the files in column A.
-    #-----------------------------------------------------------------
-    my $refToExcelFilesList;
-
-    if($sheetDirname !~ /^\s*$/)
-    {
-	# Read the filenames from the directory given
-	$refToExcelFilesList = getExcelFilesFromDir $sheetDirname;
-    }
-    elsif($sheetFilename !~ /^\s*$/)
-    {
-	# Read the filenames from the excel file given
-	$refToExcelFilesList = getExcelFilesFromFile $sheetFilename;
-    }
-    elsif($storableFilename  =~ /^\s*$/)
-    {
-	# nothing to do, just exit function
-	return;
-    }
-    #-----------------------------------------------------------------
-    # The main function that parses the information from sheets
-    #-----------------------------------------------------------------
-    my $refToDefHash;
-    if($storableFilename  !~ /^\s*$/)
-    {
-        # read mem sheets info
-	open(STORABLE_IN ,$storableFilename) || die "Unable to open: $storableFilename";
-	$refToDefHash = fd_retrieve(\*STORABLE_IN);
-	close STORABLE_IN;
-    }
-    else
-    {
-	$refToDefHash = readConfig($refToExcelFilesList,$refToExcel);
-    }
-#For testing to get the generated config printed to terminal
-#     $Data::Dumper::Indent = 1;
-#     print Dumper($refToDefHash);
-#     exit 1;
-
-    #-----------------------------------------------------------------
-    # Determinate the default configuration 
-    #-----------------------------------------------------------------
-    generateConfig($refToResultHash,$refToDefHash,$platId,$platRel,$varName);
-    $refToDefHash = undef;
-
-#      #For testing to get the generated config printed to terminal
-#      $Data::Dumper::Indent = 1;
-#      print Dumper($refToResultHash);
-#      exit 1;
-
-}
-
-###################################################
-# Actual program
-###################################################
-my($platId,$platRel,$varName,$sheetDirname,$sheetFilename,$storableFilename,$resultDirname,
-   $varNameVariant,$sheetDirnameVariant,$storableFilenameVariant,$sheetFilenameVariant,$formatNbr,
-   $addDefCaps,$rfsDir,$noIni) = parseCmdLine;
-
-# ----------------------------------------------------------------  
-# Get excel application
-# ----------------------------------------------------------------  
-my $refToExcel = getExcelApp();
-
-#-----------------------------------------------------------------
-# read the default configuration hash
-#-----------------------------------------------------------------
-my %resultHash;
-readSingleConfig($refToExcel,$sheetDirname,$sheetFilename,$storableFilename,\%resultHash,
-		 $platId,$platRel,$varName);
-
-#-----------------------------------------------------------------
-# read the overriding variant  configuration hash
-#-----------------------------------------------------------------
-readSingleConfig($refToExcel,$sheetDirnameVariant,$sheetFilenameVariant,$storableFilenameVariant,
-		 \%resultHash,$platId,$platRel,$varNameVariant);
-
-#-----------------------------------------------------------------
-# quit excel and "delete" the instances.
-#-----------------------------------------------------------------
-quitExcelApp($refToExcel);
-
-#-----------------------------------------------------------------
-# Generate the ini-files
-#-----------------------------------------------------------------
-if(! $noIni)
-{
-    generateIniFiles(\%resultHash,$resultDirname,$formatNbr,$addDefCaps);
-}
-
-#-----------------------------------------------------------------
-# Generate the RFS file (if wanted)
-#-----------------------------------------------------------------
-if($rfsDir !~ /^\s*$/)
-{
-    $rfsDir =~ s/[\/\\]$//g;
-    $rfsDir .= "/cenrep_rfs.txt";  
-    generateRfsFile(\%resultHash,$rfsDir);
-}
-
Binary file internetradio2.0/cenrep/keys_internetradio.xls has changed
--- a/internetradio2.0/cenrep/readme.txt	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-Each script attached gives help with option "-h" in the command line.
-
-There are 3 different scripts:
-
- cenrep_keys_syntax_checker.pl 
-      Used to verify the syntax of the excel sheets.
-
- gather_cenrep_to_storable.pl
-      This reads the cenrep excel sheet(s) information into a storable file. This is
-      a binary format, which can be used by other scripts.
-      (for instance generate_cenrep_inifile.pl)
-      Main motivation to use: reading the information from excel sheets takes 95%
-      of time. If you for instance need to generate more than 1 confiration from the
-      same data it makes sence to 1st run this script once and then the other
-      script as many times as needed.
-
-  generate_cenrep_inifile.pl
-      This script is used to generate both cenrep ini-files based on the information
-      in the excel sheets and also if needed a file for the RFS.
-
-NOTES:
-  - the generate_cenrep_inifile.pl requires that you have active perl 5.8.4 or newer version
-    installed. Perl version 5.6.* does not work and results in error.
-    Reason for the new version is the unicode support needed.
-
-  - The scripts also require that Storable.pm module installed to the machine. With some
-    earlier perl-versions this module was not part of default delivery.
-
-  - There will be an error, if the path, where the excel-files are located, contains
-    directory names with spaces in them.
-    Solution: make sure that directory names in path don't contain spaces.
-
-  - If a new key is added, the default value must be defined also in 
-    CVRRepositoryManager::CheckRepositoryKeysL() to make sure that SIS installation works ok.
-
-  - Note that cenrep folder must be writable!
-
-Generating cenrep txt file:
-  -In cenrep folder type:
-    "attrib -r *.txt"  
-    "generate_cenrep_inifile.pl -r 5.0 -d ."
-  -In emulator:
-     - delete .cre file with visualradio uid from epoc32\WINSCW\C\private\10202be9\persists\
-     - type "abld export" to export cenrep file
--- a/internetradio2.0/commandchannelinc/ircontrolparams.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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 IRCONTROLPARAMS_H
-#define IRCONTROLPARAMS_H
-
-#include <e32def.h>
-
-//This value defines amount of time between each step in audio fade in effect
-const TInt KVolumeTime = 500000;  //defines Audio Fade In time
-
-//This value defines amount of time between each step in audio fade out effect
-const TInt KDownVolumeTime = 200000; //defines the Audio Fade Out Time
-
-/**
- * Base for IR custom errors delivered via Command Channel
- */
-const TInt KIRCtrlCmdErrorBase =  { 0xB1234B };
-
-/**
- * IR specific error telling that creationg of player failed.
- */
-const TInt KIRCtrlCmdPlayerNotCreated =  { KIRCtrlCmdErrorBase + 0x00000000 };
-
-/**
- * IR specific general error sent by the player to report about its errors.
- */
-const TInt KIRCtrlCmdGeneralPlayerError = { KIRCtrlCmdErrorBase + 0x00000001 };
-
-/**
- * TIRControlCommmand is enum which defines various errors and condition of
- *  the player
- */
-enum TIRControlCommmand
-    {
-    //indicates that buffer is start to fill
-    EBufferFillStart = 0x0F, 
-    // indicates that buffer is filled
-    EBufferFillStop,
-    //indicates that buffer is filling
-    EBufferFilling,
-    // audio fade out    
-    EBufferFadeOut,
-    //audio fade in 
-    EBufferFadeIn,
-    //player stopped playing due some external conditions 
-    EStoppedPlaying,
-    //ready to start audio fade in 
-    EBufferFadeInReady, 
-    //indicates that an error has occured
-    EError, 
-    //indicates that player changed
-    EPlayerChanged,
-   //makes stereo mode on
-   	EStereo, 
-   	//When Player Stars Playing
-   	EPlayingState,
-    };
-
-#endif //IRCONTROLPARAMS_H
-
--- a/internetradio2.0/commandchannelinc/irctrlcmdobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +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 IRCTRLCMDOBSERVER_H
-#define IRCTRLCMDOBSERVER_H
-
-#include <e32base.h>
-
-#include "ircontrolparams.h"
-
-class MIRCtrlCmdObserver;
-class MIRStreamFill;
-
-/**
- * This is the class is implemented to provide completed independence to 
- * mediaengine from client as well as network.It is through this class media 
- * engine interacts with client and network. This also provides additional 
- * features like audio fade in, audio fade out effect. This design is has to 
- * provide flexiblilty to irmediaengine by avoiding any other dll interaction
- * other than ircommandchannel.dll
- *
- * @code
- *
- * Observer* observer; //Observer class should be derived from MIRCtrlCmdObserver
- * StreamFill* stream; //Streamfill class should be derived from MIRStreamFill
- * CIRCtrlCmdObserver* channel = CIRCtrlCmdObserver::NewL(observer,stream);   
- * //creates instance of ircommandchannel
- * TIRControlCommmand command = EError;
- * //senting an error value and is defined in IRControlParams.h
- * TInt some_integer_value;
- * TPtr ptrbuffer;
- * TUint8* ptr = new (ELeave) TUint8[100];
- * ptrbuffer.Set(ptr,100,100);
- * channel->SentRequest(command,some_integer_value); 
- * //sending a command to channel
- * channel->FilltheBuffer(ptrbuffer); //call for filling the buffer
- * TInt volume = channel->FetchVolume(); 
- * //gets current volume (which can stored in database)
- * command = EBufferFadeIn; //calling for a fade in effect
- * channel->AudioFadeInOut(command,5);
- * channel->DoAudioFadeOut(); //function for fade out effect
- * delete channel;
- *
- * @endcode
- * 
- * @lib ircommandchannel.lib
- * @since S_60 3.0
- *
- */
- 
-NONSHARABLE_CLASS(CIRCtrlCmdObserver) :  public CBase
-    {
-public:                                //member function
-    /**
-     * Function : NewL
-     * Function returns an instance of CIRCtrlCmdObserver
-     * Two phase constructor
-     * @param MIRCtrlCmdObserver observers instance,pointer to MIRStreamFill
-     * @return instance of CIRCtrlCmdObserver
-     */
-    IMPORT_C static CIRCtrlCmdObserver* NewL(MIRCtrlCmdObserver* aObserver,
-		MIRStreamFill* aStream);    
-
-    /**
-     * Function : NewLC
-     * Function returns an instance of CIRCtrlCmdObserver
-     * Two phase constructor
-     * @param MIRCtrlCmdObserver observers instance,pointer to MIRStreamFill
-     * @return instance of CIRCtrlCmdObserver
-     */
-    IMPORT_C static CIRCtrlCmdObserver* NewLC(MIRCtrlCmdObserver* aObserver,
-		MIRStreamFill* aStream);
-    
-    /**
-     * Function : ~CIRCtrlCmdObserver
-     * Default destructor calls Cancel function which cancel the active request 
-     */
-    ~CIRCtrlCmdObserver();
-
-   /**
-     * Function : SentRequest
-     * Function sends request to handle events represented by 
-     * TIRControlCommmand
-     * @param TIRControlCommmand represents what action to be taken
-     * @param aValue represents any integer value if any, like buffering 
-     * percentage
-     */
-    IMPORT_C void SentRequest(TIRControlCommmand aCommand,TInt aValue);
-
-    /**
-     * Function : FilltheBuffer
-     * Function sends request to fill the buffer
-     * @param buffer to be filled with data
-     */
-    IMPORT_C void FilltheBuffer(TDes8& aInputBuffer);
-
-    /**
-     * Function : FetchVolume
-     * Function sends request to get the current volume index
-     * @return volume index
-     */
-    IMPORT_C TInt FetchVolume();
-
-        /**
-     * Function : AudioFadeInOut
-     * Function is called for audio Fade In Fade Out Effects
-     * @param TIRControlCommmand represents what action to be taken Fade 
-     * In or Fade Out
-     * @param aValue represents any integer value of cuurent volume level
-     */
-    IMPORT_C void AudioFadeInOut(TIRControlCommmand& aCommand,TInt aValue);
-    
-    /**
-     * Function : DoAudioFadeOut
-     * Function is used to sent request start audio Fade Out
-     */
-    IMPORT_C void DoAudioFadeOut();
-    
-private:
-    /**
-     * Function : ConstructL
-     * Function does all the initializations
-     * Two phase constructor
-     * @param MIRCtrlCmdObserver observers instance,pointer to MIRStreamFill
-     */
-    void ConstructL(MIRCtrlCmdObserver* aObserver,MIRStreamFill* aStream);
-
-    /**
-     * Function : CIRCtrlCmdObserver
-     * Function is the default constructor, sets the CActive priority, 
-     * Line status
-     */
-    CIRCtrlCmdObserver();
-    
-    /**
-     * Function : StartAudioFadeIn
-     * Function Starts audio Fade In effects
-     * @param take a parameter of CIRCtrlCmdObserver into a TAny pointer
-     * @return KErrNone upon completion
-     */
-    static TInt StartAudioFadeIn(TAny* aPtr);
-    
-    /**
-     * Function : StartAudioFadeOut
-     * Function Starts audio Fade Out effects
-     * @param take a parameter of CIRCtrlCmdObserver into a TAny pointer
-     * @return KErrNone upon completion
-     */
-    static TInt StartAudioFadeOut(TAny* aPtr);
-
-    /**
-     * Function : UpdateVolumeInc
-     * Function does the Fade In effect
-     */
-    void UpdateVolumeInc();
-    
-    /**
-     * Function : UpdateVolumeDec
-     * Function does the Fade In effect 
-     */
-    void UpdateVolumeDec();
-
-
-private:                                //data members
-
-    //This is instance of MIRCtrlCmdObserver 
-    MIRCtrlCmdObserver* iObserver;
-    
-    //Access to fill data
-    MIRStreamFill* iStream;
-
-    //Volume timer
-    CPeriodic* iVolumeTimer;
-
-    //current volume level
-    TInt iVolumeLevel;
-
-    //actual volume level
-    TInt iPersistentVolume;
-    
-    //instance of the command
-    TIRControlCommmand iCommand;
-    };
-    
-#endif//IRCTRLCMDOBSERVER_H
-
--- a/internetradio2.0/commandchannelinc/irctrlcommand.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +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 IRCTRLCOMMAND_H
-#define IRCTRLCOMMAND_H
-
-#include <e32cmn.h>
-
-#include "ircontrolparams.h"
-
-/**
-* Class is an abstract class which provides interfaces to pass commands
-* MCtrlCommand can pass a command and value to the inherited class
-* FetchVolume is meant for fetching the volume
-* DoAudioFadeOut is to activate Fade out fade in effect
-*/
-class MIRCtrlCmdObserver
-    {
-public:
-    /**
-     * Function : MCrtlCmdCommand
-     * Function is pure virtual function which used to pass commands
-     * @param TIRControlCommmand represents the commands,which determines 
-     * what action to be taken
-     * @param aValue represents any integer value if any, like buffering
-     * percentage
-     */
-    virtual void MCtrlCommand( TIRControlCommmand aCommand, TInt aValue ) = 0;
-
-    /**
-     * Function : FetchVolume
-     * Function is pure virtual function which sents Request to get the
-     * current volume index
-     * @return volume index
-     */
-    virtual TInt FetchVolume() = 0;
-    
-    /**
-     * Function : DoAudioFadeOut
-     * Function is pure virtual function, it is used to sent request start 
-     * audio Fade Out
-     */
-    virtual void DoAudioFadeOut() = 0;
-    /**
-     * Function : PlayerChanged()
-     * Function is pure virtual function, It notifies the Observer WhenEver
-	* Player Changed
-     * audio Fade Out
-     */
-    virtual void PlayerChanged() = 0;
-    };
-
-/**
-* Class is an abstract class which provides interfaces to fill the buffer
-* Request to fill the buffer is made through this interface
-*/
-class MIRStreamFill
-    {
-public:
-    /**
-     * Function: FilltheBuffer
-     * function is pure virtual implementation of and is call to fill
-     * the buffer 
-     * @param reference to the buffer to be filled with data
-     */
-    virtual void FilltheBuffer(TDes8& aInputBuffer) = 0;
-    };
-    
-#endif //IRCTRLCOMMAND_H
-
--- a/internetradio2.0/commandchannelsrc/irctrlcmdobserver.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +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 "irctrlcmdobserver.h"
-#include "irctrlcommand.h"
-#include "irdebug.h"
-#include "ircontrolparams.h"
-
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-// Function : NewL
-// Function returns an instance of CIRCtrlCmdObserver
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCtrlCmdObserver* CIRCtrlCmdObserver::NewL
-	(MIRCtrlCmdObserver* aObserver,MIRStreamFill* aStream)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::NewL" );
-    CIRCtrlCmdObserver* self = CIRCtrlCmdObserver::NewLC(aObserver,aStream);
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::NewL - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Function : NewLC
-// Function returns an instance of CIRCtrlCmdObserver
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCtrlCmdObserver* CIRCtrlCmdObserver::NewLC
-	(MIRCtrlCmdObserver* aObserver,MIRStreamFill* aStream)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::NewLC" );
-    CIRCtrlCmdObserver* self = new (ELeave) CIRCtrlCmdObserver;
-    CleanupStack::PushL(self);
-    self->ConstructL(aObserver,aStream);
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::NewLC - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Function : ~CIRCtrlCmdObserver
-//  Default destructor calls Cancel function which cancel the active request 
-// ---------------------------------------------------------------------------
-//
-CIRCtrlCmdObserver::~CIRCtrlCmdObserver()
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::~CIRCtrlCmdObserver" );
-    if ( iVolumeTimer->IsActive() )
-        {
-        iVolumeTimer->Cancel();            
-        }
-    delete iVolumeTimer;    
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::~CIRCtrlCmdObserver - Exiting." );
-    }
-    
-// ---------------------------------------------------------------------------
-// Function : SentRequest
-// Function sends request to handle events represented by TIRControlCommmand
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCtrlCmdObserver::SentRequest( TIRControlCommmand aCommand, TInt aValue )
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::SentRequest" );
-   if(aCommand==EPlayerChanged)
-	    {
-	    iObserver->PlayerChanged();	
-	    }
-    else
-	    {
-	    iObserver->MCtrlCommand( aCommand, aValue );
-	    }
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::SentRequest - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// Function : FilltheBuffer
-// Function sends request to fill the buffer
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCtrlCmdObserver::FilltheBuffer(TDes8& aInputBuffer)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::FilltheBuffer" );
-    iStream->FilltheBuffer(aInputBuffer);
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::FilltheBuffer - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// Function : FetchVolume
-// Function sends request to get the current volume index
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRCtrlCmdObserver::FetchVolume()
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::FetchVolume" );
-    return iObserver->FetchVolume();
-    }
-
-// ---------------------------------------------------------------------------
-// Function : AudioFadeInOut
-// Function is called for audio Fade In Fade Out Effects
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCtrlCmdObserver::AudioFadeInOut
-	(TIRControlCommmand& aCommand,TInt aValue)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::AudioFadeInOut" );
-    iPersistentVolume = aValue;    
-    if ( EBufferFadeIn == aCommand )
-        {
-		//Audio Fade In effect
-        if ( iVolumeTimer->IsActive() )
-            {
-			//cancels the previous request if pending
-            iVolumeTimer->Cancel();            
-            }
-        if ( !iVolumeTimer->IsActive() )
-            {
-			//starts the fade in effect
-            iVolumeLevel = 0;            
-            TTimeIntervalMicroSeconds32 interval(KVolumeTime);
-            iVolumeTimer->Start(interval,interval,TCallBack(
-			CIRCtrlCmdObserver::StartAudioFadeIn,this));
-            }
-        }
-    else if ( EBufferFadeOut == aCommand )
-        {
-		//Audio Fade Out effect
-        if ( iVolumeTimer->IsActive() )
-            {
-			//cancels the previous request if pending
-            iVolumeTimer->Cancel();            
-            }
-        if ( !iVolumeTimer->IsActive() )
-            {
-			//starts the fade out effect
-            iVolumeLevel = iPersistentVolume;
-            TTimeIntervalMicroSeconds32 interval(KDownVolumeTime);
-            iVolumeTimer->Start(interval,interval,TCallBack(
-			CIRCtrlCmdObserver::StartAudioFadeOut,this));
-            }
-        }
-    else
-		{
-        IRLOG_DEBUG( "CIRCtrlCmdObserver::AudioFadeInOut - Exiting." );    
-        return;    
-		}        
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::AudioFadeInOut - Exiting." );   
-    }
-
-// ---------------------------------------------------------------------------
-// Function : DoAudioFadeOut
-// Function is used to sent request start audio Fade Out
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCtrlCmdObserver::DoAudioFadeOut()
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::DoAudioFadeOut" );
-    //requests to start Audio Fade Out
-	iObserver->DoAudioFadeOut();
-    }
-
-// ---------------------------------------------------------------------------
-// Function : ConstructL
-// Function does all the initializations
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRCtrlCmdObserver::ConstructL(MIRCtrlCmdObserver* aObserver,
-    MIRStreamFill* aStream)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::ConstructL" );
-    iObserver = aObserver;
-    iStream = aStream;
-    iVolumeTimer = CPeriodic::NewL(CPeriodic::EPriorityStandard);
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::ConstructL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// Function : CIRCtrlCmdObserver
-// Function is the default constructor, sets the CActive priority, Line status
-// ---------------------------------------------------------------------------
-//
-CIRCtrlCmdObserver::CIRCtrlCmdObserver()
-    {
-    //No implementation    
-    }    
-    
-// ---------------------------------------------------------------------------
-// Function : StartAudioFadeIn
-// Function Starts audio Fade In effects
-// ---------------------------------------------------------------------------
-//
-TInt CIRCtrlCmdObserver::StartAudioFadeIn(TAny* aPtr)     
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::StartAudioFadeIn" );
-    CIRCtrlCmdObserver* self = static_cast<CIRCtrlCmdObserver*>(aPtr);
-    if( self )
-		{
-		self->UpdateVolumeInc();
-		}
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::StartAudioFadeIn - Exiting." );
-    return KErrNone;        
-    }
- 
-// ---------------------------------------------------------------------------
-// Function : StartAudioFadeOut
-// Function Starts audio Fade Out effects
-// ---------------------------------------------------------------------------
-//
-TInt CIRCtrlCmdObserver::StartAudioFadeOut(TAny* aPtr)
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::StartAudioFadeOut" );
-    CIRCtrlCmdObserver* self = static_cast<CIRCtrlCmdObserver*>(aPtr);
-    if( self )
-		{
-		self->UpdateVolumeDec();
-		}
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::StartAudioFadeOut - Exiting." );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// Function : UpdateVolumeInc
-// Function does the Fade In effect
-// ---------------------------------------------------------------------------
-//
-void CIRCtrlCmdObserver::UpdateVolumeInc()     
-    {
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::UpdateVolumeInc" );
-    //less than zero condition check the value will never be less than zero
-	//even when when we start 
-    //primary check is volume becoming greater than equal to current volume 
-	//level stored in iPersistentVolume
-    if ( iVolumeTimer->IsActive()
-		&& ( ( 0 <= iVolumeLevel ) 
-		&& ( iPersistentVolume >= iVolumeLevel ) ) )
-        {
-		//if the time is volume level is not equal to current volume stored in
-		// iPersistentVolume
-		//it will initiates fade in effect
-        iCommand = EBufferFadeIn;
-        iObserver->MCtrlCommand(iCommand,iVolumeLevel);
-        iVolumeLevel++;
-        }
-    else
-        {
-        if ( iVolumeTimer->IsActive() )
-            {
-            iVolumeTimer->Cancel();            
-            }
-        }
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::UpdateVolumeInc - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// Function : UpdateVolumeDec
-// Function does the Fade In effect 
-// ---------------------------------------------------------------------------
-//
-void  CIRCtrlCmdObserver::UpdateVolumeDec()     
-    {
-	IRLOG_DEBUG( "CIRCtrlCmdObserver::UpdateVolumeDec" );
-	//primary check is volume becoming lesser than equal to zero level 
-	if ( iVolumeTimer->IsActive()
-		&& ( ( 0 <= iVolumeLevel ) 
-		&& ( iPersistentVolume >= iVolumeLevel ) ) )
-		{
-		//if the time is volume level is not equal to current zero
-		//it will initiates fade out effect
-		iCommand = EBufferFadeOut;
-		iObserver->MCtrlCommand(iCommand,iVolumeLevel);
-		iVolumeLevel--;
-		}
-	else
-		{
-		if ( iVolumeTimer->IsActive() )
-			{
-			iVolumeTimer->Cancel();
-			}
-		}
-    IRLOG_DEBUG( "CIRCtrlCmdObserver::UpdateVolumeDec - Exiting." );    
-    }
-
-
Binary file internetradio2.0/conf/internetradio.confml has changed
Binary file internetradio2.0/conf/internetradio_2000B499.crml has changed
--- a/internetradio2.0/dataproviderinc/irdataprovider.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +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 IRDATAPROVIDER_H
-#define IRDATAPROVIDER_H
-
-#include <f32file.h>
-
-#include "irdataprovidertimer.h"
-#include "irhttpdataproviderobserver.h"
-
-class CIRHttpDataProvider;
-class CIRHttpRequestData;
-class CIRHttpResponseData;
-class CIRSettings;
-class MIRDataProviderObserver;
-
-/**
- * This class provides the interface with the UI for IRDataProvider component
- *
- * @code
- *
- * // Create the data provider object. This is used for interaction with
- * // the iSDS
- *
- * CIRDataProvider* iDataProvider = CIRDataProvider::NewL(iObserver);
- *
- * // This API is used to give a request to the iSDS and the aRequestObject
- * // contains the headers to be set for the request url. The call back
- * // function as defined by MIRDataProviderObserver is called to indicate
- * // any responses.
- *
- * iDataProvider->IRHttpIssueRequestL( aRequestObject );
- *
- * // This API is called to cancel a previously issued request.
- * // If there is no previously issued request it is ignored.
- *
- *  iDataProvider->IRHttpCancelRequest();
- *
- * // This API is called to indicate the data provider component to
- * // release the resources held by it generally called when the network
- * // connection gets disconnected.
- *
- * iDataProvider->ReleaseResources();
- * @endcode
- */
-
-NONSHARABLE_CLASS ( CIRDataProvider ):
-	public CBase,
-	public MIRHttpDataProviderObserver,
-	public MIRDataProviderTimeoutNotifier
-    {
-    public:
-
-    /**
-     *  CIRDataProvider::NewL(MIRDataProviderObserver& aObserver)
-     *  Creates instance of CIRDataProvider.
-     *  @param aObserver Observer for HTTP request.
-     *  @return CIRDataProvider*
-     */
-    IMPORT_C static CIRDataProvider *NewL(MIRDataProviderObserver &aObserver);
-
-    /**
-     *  CIRDataProvider::NewL(MIRDataProviderObserver& aObserver,
-	 *  TDesC8& aFilePath)
-     *  Creates instance of CIRDataProvider.
-     *  @param aObserver Observer for HTTP request.
-     *  @return CIRDataProvider*
-     */
-    IMPORT_C static CIRDataProvider *NewL( MIRDataProviderObserver &aObserver,
-		const TDesC &aFilePath );
-
-    /**
-     *  CIRDataProvider::~CIRDataProvider()
-     *  Destructs an instance of CIRDataProvider.
-     */
-    virtual ~CIRDataProvider();
-
-    /**
-     *  CIRDataProvider::IRHttpIssueRequest(TDesC8& aUri)
-     *  Used to issue an Http request
-     *  @param aRequestObject A reference of CIRHttpRequestData containing
-	 *  HTTP request parameters
-     */
-    IMPORT_C void IRHttpIssueRequestL( CIRHttpRequestData &aRequestObject );
-
-    /**
-     *  CIRDataProvider::IRHttpCancelRequest()
-     *  Used to cancel a request
-     */
-    IMPORT_C void IRHttpCancelRequest();
-
-    /**
-     *  CIRDataProvider::ReleaseResources()
-     *  Used to release all the resources help by data provider
-     *  Called when there is a network disconnection
-     */
-    IMPORT_C void ReleaseResources();
-
-    IMPORT_C CIRHttpDataProvider* GetHttpDataProvider();
-
-    void ExtractHeaderValue(const TDesC8& aHeaderData,
-    	const TDesC8& aHeaderName,const TDesC8& aDelimeter,
-    	TDes8& aHolder) const;
-
-    /*
-    *These are the callback functions used by CIRHttpDataProvider to
-    *provide the CIRDataProvider with the data after processing the
-    *HTTP request.
-     */
-    /**
-     *  CIRDataProvider::HttpEventComplete()
-     *  Used to Indicate to the observer that the request event has completed
-     */
-    virtual void HttpEventComplete();
-
-    /**
-     *  CIRDataProvider::HttpHeaderReceived( const TDesC8& aHeaderData )
-     *  Used by CIRHttpDataProvider to indicate that an HTTP header is
-     *  received.
-     *  @param aHeaderData Reference to the Header Info
-     */
-    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData );
-
-     /**
-     *  CIRDataProvider::HttpDateHeaderReceived(const TDesC8 &aHeader,
-     *		const TTime& aTime );
-     *  Used by CIRHttpDataProvider to indicate that an HTTP header is
-     *  received.
-     *  @param aHeader Reference to the Header Info
-     *  @param aTime Reference to the TTime object containing time to be
-     *  set in the header
-     */
-    virtual void HttpDateHeaderReceived(const TDesC8 &aHeader,
-     	const TTime& aTime );
-
-    /**
-     *  CIRDataProvider::HttpBodyReceived( const TDesC8& aBodyData )
-     *  Used by CIRHttpDataProvider to indicate that an HTTP response
-	 *  body is received.
-     *  @param aHeaderData Reference to the Body data of HTTP request
-     */
-    virtual void HttpBodyReceived( const TDesC8 &aBodyData );
-
-    /**
-     *  CIRDataProvider::HttpTransactionError(TInt aErrCode)
-     *  Used by CIRHttpDataProvider to indicate that a HTTP Transaction
-	 *  error has occured.
-     *  @param aErrCode Error code indicating the HTTP Transaction error
-     */
-    virtual void HttpTransactionError( TInt aErrCode );
-
-    /**
-     *  CIRDataProvider::HttpResponseCodeRecieved(TInt aResponseCode)
-     *  Used by CIRHttpDataProvider to indicate to the iSDS Client that a
-     *  304 Not Changed response received
-     *  Note: Implemented in version 0.2
-     *  @param aResponseCode Response code received after HTTP Transaction
-     */
-    virtual void HttpResponseCodeRecieved( TInt aResponseCode );
-
-    /**
-     *  CIRDataProvider::TimerExpired( )
-     *  Called to indicate expiry of timer
-     */
-    virtual void TimerExpired();
-
-    private:
-    /**
-     *  CIRDataProvider::CIRDataProvider(MIRDataProviderObserver&
-	 *  aObserver):iDataProviderObserver(aObserver)
-     *  Default Constructor
-     *  @param aObserver Reference to the IRDataProvider Observer
-     */
-    CIRDataProvider( MIRDataProviderObserver &aObserver );
-    /**
-     *  void CIRDataProvider::ConstructL()
-     *  2nd Phase construction
-     */
-    void ConstructL();
-    /**
-     *  void CIRDataProvider::ConstructL(TDesC8& aFileName)
-     *  2nd Phase construction
-     */
-    void ConstructL( const TDesC &aFileName );
-    /**
-     *  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
-     *  Creates instance of CIRDataProvider.
-     *  @param aObserver Observer for HTTP request.
-     *  @return CIRDataProvider*
-     */
-    static CIRDataProvider *NewLC( MIRDataProviderObserver &aObserver );
-    /**
-     *  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver,
-	 *  TDesC8& aFileName)
-     *  Creates instance of CIRDataProvider.
-     *  @param aObserver Observer for HTTP request.
-     *  @return CIRDataProvider*
-     */
-    static CIRDataProvider *NewLC( MIRDataProviderObserver &aObserver,
-		const TDesC &aFileName );
-
-	/**
-	 *  CIRDataProvider::SetOffsetSeconds( const TTime& aTime )
-	 *  Stores the offset between device time and response header in settings
-	 *  @param isds time
-	 */
-	void SetOffsetSeconds( const TTime& aTime );
-
-    /**
-	 *  CIRDataProvider::UnzipFileL()
-	 *  Unzip the gz file to xml file
-	 *  @param aOutputFile out put file
-	 */
-    void UnzipFileL( const TDesC& aOutputFile );
-
-private:
-
-	/**
-	 * Reference of the observer object to which call backs are returned
-	 */
-	MIRDataProviderObserver &iDataProviderObserver;
-
-	/**
-	 * Pointer to the HttpDataProvider object which is the actual
-	 * implementation of RFC 2616
-	 */
-    CIRHttpDataProvider *iHttpDataProvider;
-
-     /**
-     * Pointer to timer object
-     */
-    CIRDataProviderTimer *iDataProviderTimer; // Timeout Timer
- /**
-     * File server session handle
-     */
-    RFs iFsSession; // Used for creation of XML data
-    /**
-    * File handle to create the xml file
-    */
-    RFile iFile;
-
-    /**
-     * Name of the Xml Gz file to be created
-     */
-    TFileName iXmlGzFilePath;
-
-   	/**
-	 * Name of the Xml file to be created
-	 */
-    TFileName iXmlFilePath;
-
-   	/**
-	 * Pointer to Response header data
-	 */
-    CIRHttpResponseData* iResponseHeaders;
-
-    /**
-     * Used to access Settings object
-     */
-	CIRSettings* iIRSettings;
-
-	/**
-	 * Timer timeout value
-	 */
-	TInt iTimeOut;
-
-    };
-
-#endif // IRDATAPROVIDER_H
-
-
-
-
-
--- a/internetradio2.0/dataproviderinc/irdataproviderconstants.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +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 IRDATAPROVIDERCONSTANTS_H
-#define IRDATAPROVIDERCONSTANTS_H
-
-#include <e32def.h>
-
-// Constants
-const TInt KMaxHeaderNameLength = 32;
-const TInt KMaxHeaderValueLength = 128;
-const TInt KMaxStatusTextLength = 32;
-const TInt KDPMaxContentTypeLength = 128;
-const TInt KMaxCharSetLength = 128;
-
-// This client accepts all content types.
-_LIT8( KAccept, "*/*" );
-// Used to specify the Accept Charset
-_LIT8( KAcceptCharset, "iso-8859-1, utf-8, iso-10646-ucs-2; q=0.6" );
-// Used to specify the Accept Language
-_LIT8( KAcceptLanguage, "en" );
-// Used to specify the Accept encoding
-_LIT8( KAcceptEncoding, "gzip" );
-// Some texts for header output
-_LIT( KDPColon, ": " );
-// Default Content-Type
-_LIT8( KDefaultContentType, "application/xml" );
-// Default CharSet
-_LIT8( KDefaultCharSet, "UTF-8" );
-
- // HTTP POST ContentType
-_LIT8( KPostContentType, "application/x-gzip" );
-/*!
- * Http Success 2xx Status codes
- */
-
-const TInt KOk = 200;
-const TInt KCreated = 201;
-const TInt KAccepted = 202;
-const TInt KNonAuthoritativeInformation = 203;
-const TInt KNoContent = 204;
-const TInt KResetContent = 205;
-const TInt KPartialContent = 206;
-/*!
- * Redirection 3xx status codes
- */
-const TInt KMultipleChoices = 300;
-const TInt KMovedPermanently = 301;
-const TInt KFound = 302;
-const TInt KSeeOther = 303;
-const TInt KNotModified = 304;
-const TInt KUseProxy = 305;
-/*
-This status code is not used as per RFC 2616
-const TInt KUnused = 306 
- */
-const TInt KTemporaryRedirect = 307;
-/*!
- * Client Error 4xx status codes
- */
-const TInt KBadRequest = 400;
-const TInt KUnauthorized = 401;
-const TInt KPaymentRequired = 402;
-const TInt KForbidden = 403;
-const TInt KNotFound = 404;
-const TInt KMethodNotAllowed = 405;
-const TInt KNotAcceptable = 406;
-const TInt KProxyAuthenticationRequired = 407;
-const TInt KRequestTimeout = 408;
-const TInt KConflict = 409;
-const TInt KGone = 410;
-const TInt KLengthRequired = 411;
-const TInt KPreconditionFailed = 412;
-const TInt KRequestEntityTooLarge = 413;
-const TInt KRequestURITooLong = 414;
-const TInt KUnsupportedMediaType = 415;
-const TInt KRequestedRangeNotSatisfiable = 416;
-const TInt KExpectationFailed = 417;
-/*!
- * Server Error 5xx status codes
- */
-const TInt KInternalServerError = 500;
-const TInt KNotImplemented = 501;
-const TInt KBadGateway = 502;
-const TInt KServiceUnavailable = 503;
-const TInt KGatewayTimeout = 504;
-const TInt KHTTPVersionNotSupported = 505;
-/*!
- * Timeout  code
- */
-const TInt KDataProviderTimeout =  - 12345;
-const TInt KDndTimedOut = -5120;
-
-#endif // IRDATAPROVIDERCONSTANTS_H
-
-
--- a/internetradio2.0/dataproviderinc/irdataproviderobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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 IRDATAPROVIDEROBSERVER_H
-#define IRDATAPROVIDEROBSERVER_H
-
-#include <e32cmn.h>
-
-class CIRHttpResponseData;
-
-/**
- * MIRDataProviderObserver
- * passes events and responses body data with this interface. 
- * An instance of this class must be provided for construction of 
- * CIRDataProvider.
- */
-
-class MIRDataProviderObserver
-    {
-    public:
-
-    /** 
-     *  void MIRDataProviderObserver::IRHttpGeneralError(TInt aErrCode)
-     *  Used to determine the Private path of IRAPP
-     *     
-     */
-    virtual void IRHttpGeneralError( TInt aErrCode ) = 0;
-    
-    /** 
-     *  void MIRDataProviderObserver::IRHttpDataReceived(TDesC& aXmlPath)
-     *  Used to determine the Private path of IRAPP
-     */
-    virtual void IRHttpDataReceived( const TDesC &aXmlPath ,
-            const CIRHttpResponseData& aResponseHeaders ) = 0;
-    /** 
-     *  void MIRDataProviderObserver::IRHttpContentNotChanged()
-     *  Used to determine the Private path of IRAPP
-     */
-    virtual void IRHttpResponseCodeReceived(TInt aResponseCode 
-      	,CIRHttpResponseData& aResponseHeaders  ) = 0;
-    };
-    
-#endif // IRDATAPROVIDEROBSERVER_H
-
-
--- a/internetradio2.0/dataproviderinc/irdataprovidertimer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +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 IRDATAPROVIDERTIMER_H
-#define IRDATAPROVIDERTIMER_H
-
-#include <e32base.h>
-
-/**
- * Call for timer expiry
- */
-class MIRDataProviderTimeoutNotifier
-    {
-    
-    public:
-	
-	/**
-	 * Called when the timer raises an event.
-	 */
-    virtual void TimerExpired() = 0;
-	
-    };
-    
-/**
- * Timer class for response timerouts
- */
-NONSHARABLE_CLASS ( CIRDataProviderTimer ): public CTimer
-    {
-    public:
-    
-	/**
-	* CIRDataProviderTimer::NewL( const TInt aPriority,
-	* MIRDataProviderTimeoutNotifier &aNotify )
-	* Two phase constructor
-	* @param aPriority Specifies the priority of the timer
-	* @param aNotify Reference of the observer
-	* @return CIRDataProviderTimer object
-	*/ 
-
-    static CIRDataProviderTimer *NewL( const TInt aPriority, 
-		MIRDataProviderTimeoutNotifier &aNotify );
-		
-	/** 
-	* CIRDataProviderTimer::NewLC( const TInt aPriority,
-	* MIRDataProviderTimeoutNotifier &aNotify )
-	* @param aPriority Specifies the priority of the timer
-	* @param aNotify Reference of the observer
-	* @return CIRDataProviderTimer object
-	*/ 
-	   
-    static CIRDataProviderTimer *NewLC( const TInt aPriority, 
-		MIRDataProviderTimeoutNotifier &aNotify );
- 
-	/**
-	* CIRDataProviderTimer::~CIRDataProviderTimer()
-	* Default C++ destructor
-	*/
-	     
-    virtual ~CIRDataProviderTimer();
-    
-    protected:
-    
-	/** 
-	* Derived from CTimer
-	* CIRDataProviderTimer::RunL()
-	*/     
-    void RunL();
-    
-	/** 
-	* Derived from CTimer
-	* CIRDataProviderTimer::RunError()
-	*/     
-    TInt RunError( TInt aError );
-   	
-    private:
-    
-	/**
-	* CIRDataProviderTimer::CIRDataProviderTimer( const TInt aPriority, 
-	*  MIRDataProviderTimeoutNotifier &aNotify ): CTimer( aPriority ),
-	*  iNotify( aNotify )
-	*/ 
-	       
-    CIRDataProviderTimer( const TInt aPriority, 
-		MIRDataProviderTimeoutNotifier &aNotify );
-    
-	/**
-	* CIRDataProviderTimer::ConstructL()
-	* Second phase constructor
-	*/ 
-    void ConstructL();
- 
-    private:
-    
-	/** 
-	 * Handle to the class to be notified of a timeout event.
-	 */
-    MIRDataProviderTimeoutNotifier &iNotify;
-    
-    };
-
-#endif // IRDATAPROVIDERTIMER_H
-
-
--- a/internetradio2.0/dataproviderinc/irhttpdataprovider.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +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 IRHTTPDATAPROVIDER_H
-#define IRHTTPDATAPROVIDER_H
-
-#include <mhttptransactioncallback.h>
-#include <rhttpsession.h>
-
-#include "irdataproviderconstants.h"
-#include "irfavoritesdb.h"
-
-class CIRHttpPost;
-class CIRHttpRequestData;
-class CIRNetworkController;
-class CIRLogoDownloadEngine;
-class CIRFavoritesDb;
-class MIRHttpDataProviderObserver;
-
-/**
- * This class provides the implementation of the HTTP client
- */
-
-NONSHARABLE_CLASS ( CIRHttpDataProvider ): public CBase,
-										public MHTTPTransactionCallback
-									
-    {
-    public:
-    /**
-     * CIRHttpDataProvider::CIRHttpDataProvider(MIRHttpDataProviderObserver&
-	 * aObserver):iObserver(aObserver),iRunning(EFalse)
-     * Creates instance of CIRHttpDataProvider.
-     * @param aObserver Reference to HTTP Data provider observer
-     */
-    CIRHttpDataProvider( MIRHttpDataProviderObserver &aObserver );
-    /**
-     * CIRHttpDataProvider::~CIRHttpDataProvider()
-     * Destructs instance of CIRHttpDataProvider.
-     */
-    virtual ~CIRHttpDataProvider();
-    /**
-     * CIRHttpDataProvider::NewL(MIRHttpDataProviderObserver& aObserver )
-     * Creates instance of CIRHttpDataProvider.
-     * @param aObserver Reference to HTTP Data provider observer
-     */
-    static CIRHttpDataProvider *NewL( MIRHttpDataProviderObserver &aObserver );
-    /**
-     *  CIRHttpDataProvider::NewLC(MIRHttpDataProviderObserver& aObserver)
-     *  Creates instance of CIRHttpDataProvider.
-     *  @param aObserver Reference to HTTP Data provider observer
-     */
-    static CIRHttpDataProvider *NewLC(MIRHttpDataProviderObserver &aObserver);
-    /**
-     * CIRHttpDataProvider::ConstructL()
-     * 2nd phase construction
-     */
-    void ConstructL();
-    /**
-     * CIRHttpDataProvider::CancelTransactionL()
-     * Cancel the issued Http transaction
-     */
-    void CancelTransaction();
-    /**
-     * CIRHttpDataProvider::GetHttpSession()
-     * returns the iHttpSession
-     */
-    RHTTPSession GetHttpSession();
-
-    /**
-     *  CIRHttpDataProvider::IssueHttpRequestL(
-	 *  CIRHttpRequestData& aRequestInfo )
-     *  Used to issue the request.
-     *  @param aRequestInfo Reference to request object
-     */
-    TInt IssueHttpRequestL( CIRHttpRequestData &aRequestObject );
-    /**
-     *  CIRHttpDataProvider::SetHttpContentType(TDesC& aContentType,
-	 *  TDesC& aCharSet)
-     *  Set the Http content type
-     *  @param aContentType Specifies the Content-Type
-     *  @param aCharSet Specifies the Charecter set
-     */
-    void SetHttpContentType(const TDesC &aContentType,
-    	const TDesC &aCharSet);
-
-    /**
-     *  CIRHttpDataProvider::InitializeHttpDataProviderL();
-     *  Initialize the data provider component
-     */
-    void InitializeHttpDataProviderL();
-
-    /**
-     *  CIRHttpDataProvider::ReleaseResources();
-     *  Releases the resources held by data provider
-     */
-    void ReleaseResources();
-
-    IMPORT_C CIRLogoDownloadEngine* GetLogoDownloadEngine();
-
-    private:
-    /**
-     * CIRHttpDataProvider::MHFRunL()
-     * Inherited from MHTTPTransactionCallback
-     * Called by framework to pass transaction events.
-     * @param aTransaction HTTP Transaction object
-     * @param aEvent HTTP Transaction Event
-     */
-    void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent &aEvent );
-    /**
-     * CIRHttpDataProvider::MHFRunError()
-     * Inherited from MHTTPTransactionCallback
-     * Called by framework to pass transaction errors
-     * @param aError Error code of the HTTP Transactin
-     * @return TInt Return code KErrNone if success
-     */
-    TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction,
-		const THTTPEvent &aEvent );
-    /**
-     *  CIRHttpDataProvider::ExtractResponseHeadersL(
-	 *  RHTTPTransaction aTransaction )
-     *  Used to Extract the response headers.
-     *  @param aTransaction HTTP Transaction object
-     */
-    void ExtractResponseHeadersL( const RHTTPTransaction& aTransaction );
-    /**
-     *  CIRHttpDataProvider::SetHeaderL( RHTTPHeaders aHeaders, TInt
-	 *  aHeaderField, const TDesC8& aHeaderValue )
-     *  Used to set the Http header
-     *  @param aHeaders HTTP Headers object
-     *    @param aHeaderField Header field
-     *  @param aHeaderValue Header value
-     */
-    void SetHeaderL( RHTTPHeaders aHeaders, TInt aHeaderField,
-		const TDesC8 &aHeaderValue ) const;
-
-    /**
-     * CIRHttpDataProvider::BuildHeadersL(CIRHttpRequestData &aRequestInfo)
-     * Build the headers for the request
-     * @param CIRHttpRequestData&
-    */
-     void BuildHeadersL(const CIRHttpRequestData &aRequestInfo);
-
-    /**
-     * CIRHttpDataProvider::ValidateStatusCode(TInt aStatusCode)
-     * Validate the status code returned
-     * @param aStatusCode Status code
-     */
-    void ValidateStatusCode( TInt aStatusCode );
-
-    /**
-     *  CIRHttpDataProvider::CloseLogFile ();
-     *  Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
-     */
-    void CloseLogFile ();
-
-
-public:
-
-    /**
-     * iSetNonUAProfUserAgent Set when the UAProf should not be used
-     * may be used for image data provider
-     */
-    TBool iSetNonUAProfUserAgent;
-
-private:
-
-	/**
-	 * Status code of the response
-	 */
-    TInt iStatusCode;
-
-    /**
-     * Indicates if the transaction is active ie. there is a pending
-     * request.
-     */
-    TBool iRunning;
-
-    /**
-     * Used to identify first request to the data provider object
-     */
-    TBool iFirstTime;
-
-    /**
-     * HTTP session object
-     */
-    RHTTPSession iHttpSession;
-
-    /**
-     * HTTP transaction object
-     */
-    RHTTPTransaction iHttpTransaction;
-
-    /**
-     * HTTP Post object
-     */
-    CIRHttpPost* iLogMessage;
-
-    CIRFavoritesDb* iFavDb;
-
-    /**
-     * Network controller handle pointer
-     */
-    CIRNetworkController *iIRNetworkControllerHandle;
-
-    /**
-     * Reference of the Http data provider Observer
-     */
-    MIRHttpDataProviderObserver &iObserver;
-
-    /**
-     * Status text of the response
-     */
-    TBuf < KMaxStatusTextLength > iStatusText;
-
-    /**
-     * Content type header info
-     */
-    TBuf8 < KDPMaxContentTypeLength > iContentType;
-
-	/**
-     * Character set header info
-     */
-    TBuf8 < KMaxCharSetLength > iCharSet;
-
-    /**
-     * Set to ETrue if the response code is KNotModified ( 304 )
-     */
-    TBool iNotModified;
-
-    /**
-     * Pointet to Logo download
-     */
-    CIRLogoDownloadEngine* iLogoDownloadEngine;
-
-    };
-#endif // IRHTTPDATAPROVIDER_H
-
-
--- a/internetradio2.0/dataproviderinc/irhttpdataproviderobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +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 IRHTTPDATAPROVIDEROBSERVER_H
-#define IRHTTPDATAPROVIDEROBSERVER_H
-
-#include <e32cmn.h>
-
-/**
- * MIRHttpDataProviderObserver
- * passes events and responses body data with this interface. 
- * An instance of this class must be provided for construction of 
- * CIRHttpDataProvider.
- */
-class MIRHttpDataProviderObserver
-    {
-public:
-    
-    /** 
-     *  void MIRHttpDataProviderObserver::HttpEventComplete()
-     *  Used to indicate HTTP event completion
-     */
-    virtual void HttpEventComplete() = 0;
-    
-    /** 
-     *  void MIRHttpDataProviderObserver::HttpHeaderReceived( 
-	 *  const TDesC8& aHeaderData )
-     *  Used to indicate HTTP header is received
-     */
-    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData ) = 0;
-        
-    /** 
-     *  HttpDateHeaderReceived(const TDesC8 &aHeader, const TTime& aTime );
-     *  Used to indicate HTTP header is received
-     *  to be set in the request header
-     */
-    virtual void HttpDateHeaderReceived(const TDesC8 &aHeader,
-    	const TTime& aTime ) = 0;
-
-    /** 
-     *  void MIRHttpDataProviderObserver::HttpBodyReceived( 
-     *  const TDesC8& aBodyData )
-     *  Used to indicate HTTP body is received
-     */
-    virtual void HttpBodyReceived( const TDesC8 &aBodyData ) = 0;
-    
-    /** 
-     *  void MIRHttpDataProviderObserver::HttpTransactionError(
-     *  TInt aErrorCode)
-     *  Used to indicate HTTP Transaction error
-     */
-    virtual void HttpTransactionError( TInt aErrorCode ) = 0;
-    
-    /** 
-     *  void MIRHttpDataProviderObserver::HttpResponseCodeRecieved(
-     *  TInt aResponseCode)
-     *  Used to indicate HTTP response code recieved
-     */
-    virtual void HttpResponseCodeRecieved( TInt aResponseCode ) = 0;
-    
-    };
-
-#endif // IRHTTPDATAPROVIDEROBSERVER_H
-
-
-
-
--- a/internetradio2.0/dataproviderinc/irhttppost.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +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 IRHTTPPOST_H
-#define IRHTTPPOST_H
-
-#include <f32file.h>
-#include <mhttpdatasupplier.h>
-#include <rhttptransaction.h>
-
-class CIRSettings;
-
-/**
- * CIRHttpPost class for posting the data
- * Reading from the file as chunks of data
- * using MHTTPDataSupplier - Data supplier 
- */
-NONSHARABLE_CLASS ( CIRHttpPost ):public CBase,	public MHTTPDataSupplier
-	{
-public:
-
-	/** 
-     * CIRHttpPost::NewL
-     * 1st phase constructor
-     */    
-     static CIRHttpPost* NewL( const RHTTPTransaction& aHttpTransaction );
-    		
-	/** 
-     * CIRHttpPost::~CIRHttpPost
-     * C++ default destructor
-     */
-	virtual ~CIRHttpPost();
-
-	/** 
-     * CIRHttpPost::GetNextDataPart
-     * Obtain a data part from the supplier. 
-     * The data is guaranteed to survive until a call
-     * is made to ReleaseData(). 
-     */
-	virtual TBool GetNextDataPart( TPtrC8& aDataPart );
-	
-	/** 
-     * ReleaseData()
-     * Release the current data part being held at the data supplier
-     */
-	virtual void ReleaseData();
-	
-	/** 
-     * OverallDataSize()
-     * Obtain the overall size of the data being supplied, 
-     * if known to the supplier
-     */	
-	virtual TInt OverallDataSize();
-	
-	/** 
-     * Reset()
-     * Reset the data supplier
-     * otherwise returns KErrNone
-     */
-	virtual TInt Reset();
-
-	/** 
-     * GetFileToPostL()
-     * Prepares the data to be posted from the log file
-     */
-	void GetFileToPostL(TInt *aFileSize);
-
-	/** 
-     * CloseLogFile ()
-     * Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
-     */
-	void CloseLogFile ();	
-	
-	/** 
-     * SetTransaction().
-     * Sets transaction.
-     *
-     * @param aHttpTransaction Reference to RHTTPTransaction.
-     */
-	void SetTransaction( const RHTTPTransaction& aHttpTransaction );
-
-private:
-
-	/** 
-     * CIRHttpPost::CIRHttpPost
-     * C++ default constructor
-     * @param aHttpTransaction Reference to RHTTPTransaction
-     */
-	CIRHttpPost( const RHTTPTransaction& aHttpTransaction );
-     
-	/** 
-     * CIRHttpPost::ConstructL
-     * 2nd phase constructor
-     */
-    void ConstructL();
-
-	/** 
-     * CIRHttpPost::GetDataPartFromFileL
-     * Obtain a data part from the browse log file.
-     *
-     * @param aDataPart Data from browse log to be returned.
-     */
-	 void GetDataPartFromFileL( TDes8& aDataPart );
-    
-private:
-
-	/**
-     * Browse log file.
-     */	
-    RFile iLogFile;
-
-	/**
-     * Total size of the post data file
-     */
-	TInt iTotalsize;
-	
-	/**
-     * set the initial data sent
-     */	
-	TInt iStartPos;
-	
-	/**
-     * remaining size of data to be sent
-     */	
-	TInt iRemainingLength;
-	
-     /**
-     * object to HTTP Transaction 
-     */
-	RHTTPTransaction iTransaction;
-    
-    /**
-     * Data part buffer.
-     */
-	RBuf8 iPartPostBuffer;
-	
-	/**
-	*central repository settings handle
-	*/
-	CIRSettings* iSettings;
-	};
-
-#endif //IRHTTPPOST_H
-
--- a/internetradio2.0/dataproviderinc/irhttprequestdata.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +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 IRHTTPREQUESTDATA_H
-#define IRHTTPREQUESTDATA_H
-
-#include <e32base.h>
-
-// Constants
-/**
- * Used to specify the maximum header-field value length
- */
-const TInt KMAXHEADERLENGTH = 255;
-
-/**
- * Used to specify the maximum URI length
- */
-const TInt KMAXURILENGTH = 256;
-
-// Enumerations
-/**
- * Enum specifying the type of HTTP request
- */
-enum TIRHttpDataProvider
-    {
-    EIRHttpGET = 1, EIRHttpPOST
-    };
-
-/**
- * Class to hold the request data
- */
-class CIRHttpRequestData : public CBase
-    {
-public:
-    
-    /** 
-     *  void CIRHttpRequestData::CIRHttpRequestData()
-     *  Default C++ Constructor
-     */
-    inline CIRHttpRequestData()
-        {
-        // Implementation not required
-        }
-        
-    /** 
-     *  void CIRHttpRequestData::~CIRHttpRequestData()
-     *  Default C++ Destructor
-     *     
-     */
-    virtual inline ~CIRHttpRequestData()
-        {
-        // Implementation not required        
-        }
-public:
-    
-    /**
-     * This value indicates type of request method ( GET / POST )
-     */ 
-    TInt iMethod;
-    
-    /**
-     * IfModifiedSince header info
-     */    
-    TDateTime iIfModifiedSince;
-    
-    /**
-     * Set as ETrue if the IfModifiedSince header is set
-     */ 
-    TBool isIfModifiedSet;
-    
-    /**
-     * Used to set the Accept-Language Header
-     */ 
-    TBuf8 < KMAXHEADERLENGTH > iAcceptLanguage; 
-    
-    /**
-     * Used to set the Content-Type Header
-     */ 	
-    TBuf8 < KMAXHEADERLENGTH > iContentType; 
-	
-	/**
-	 * Used to specify the URI
-	 */	    
-    TBuf8 < KMAXURILENGTH > iUri;
-    
-    };
-
-
-class CIRHttpResponseData: public CBase
-	{
-public:
-
-    /** 
-     *  void CIRHttpResponseData::CIRHttpResponseData()
-     *  Default C++ Constructor
-     *     
-     */
-    inline CIRHttpResponseData()
-        {
-        // Implementation not required
-        }
-        
-    /** 
-     *  void CIRHttpResponseData::~CIRHttpResponseData()
-     *  Default C++ Destructor
-     */
-    inline ~CIRHttpResponseData()
-        {
-        // Implementation not required		
-        }
-public:
-    
-    /**
-     * Content type of the data
-     */ 
-    TBuf8 < KMAXHEADERLENGTH > iContentType;
-    
-    /**
-     * Date header value of the response
-     */ 
-    TTime iDate;
-    
-    /**
-     * Max age header value
-     */
-    TBuf8 < KMAXHEADERLENGTH > iMaxAge;
-    
-    /**
-     * Content-Length header value
-     */
-    TBuf8 < KMAXHEADERLENGTH > iContentLength;
-
-    /**
-     * LastModified header value
-     */ 
-    TTime iLastModified;
-    
-    /**
-     * Expires header value
-     */ 
-    TBuf8 < KMAXHEADERLENGTH > iExpires;
-    
-    /**
-     * ETag header value, Used in logo downloads
-     */
-    TBuf8 < KMAXHEADERLENGTH > iETag;
-    
-    };
-
-#endif // IRHTTPREQUESTDATA_H
-
-
-
-
--- a/internetradio2.0/dataproviderinc/irlogodownloadengine.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,538 +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:  Header of IRLogoDownloadEngine.cpp
-*
-*/
-
-
-
-
-
-#ifndef IRLOGODOWNLOADENGINE_H
-#define IRLOGODOWNLOADENGINE_H
-
-#include <mhttpdatasupplier.h>
-#include <mhttptransactioncallback.h>
-#include <rhttptransaction.h>
-#include <rhttpsession.h>
-#include <rhttpheaders.h>
-#include <http.h>
-#include <es_sock.h>
-
-#include "irisdspreset.h"
-#include "mlogodownloadobserver.h"
-#include "ircacheobserver.h"
-#include "iractivenetworkobserver.h"
-
-/**
- * Used to specify the maximum header-field value length
- */
-const TInt KMAXHEADERLENGTHS = 255;
-
-//Forward Declarations
-class RHTTPSession;
-class RHTTPTransaction;
-class CIRIsdsPreset;
-class CIRNetworkController;
-class MLogoDownloadObserver;
-class CIRCacheMgmt; //for logo cache mgmt
-class CIRHttpResponseData;
-class MIRActiveNetworkObserver;//for network up and downs
-
-
-
-/**
-* class CIRLogoDownlaodEngine
-*/
-class CIRLogoDownloadEngine : public CBase,	public MHTTPTransactionCallback,
-                              public MHTTPDataSupplier,public MIRCacheObserver,
-                              public MIRActiveNetworkObserver
-{
-public:
-	/**
-	* enum TState
-	* status of the transaction
-	*/
-   	enum TState
-    {   
-    EIdle,
-    ESendingEvent
-    };
-    
-    /**
-	* CIRLogoDownloadEngine* NewL()
-	* Creates instance of CIRLogoDownloadEngine.
-	*/
-	IMPORT_C static CIRLogoDownloadEngine* NewL();
-	
-    /**
-	* SendRequestL(CIRIsdsPreset* aPreset)
-	* API is called from the SearchResultsView for to download logo
-	*/
-    IMPORT_C void SendRequestL(CIRIsdsPreset* aPreset,TInt aXValue=0,TInt aYValue=0);
-    
-    /**
-	* SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle
-	*										,TInt aNPVReq,TInt aXValue,TInt aYValue)
-	* API is called from the NowPlayingView for to download logo 
-	*/
-    IMPORT_C void SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,
-    				TInt aNPVReq=1,TInt aXValue=0,TInt aYValue=0);
-    
-    IMPORT_C TBool isLogoCachedL(CIRIsdsPreset* aPreset, TInt aXValue=0, TInt aYValue=0);
-    
-    /**
-	* CancelTransaction()
-	* cancels the current transaction
-	*/
-    IMPORT_C void CancelTransaction();
-    
-    /**
-	* TBool IsRunning() const
-	* To know the status of downloading logo
-	*/
-    IMPORT_C TBool IsRunning() const;
-    
-    /**
-	* ~CIRLogoDownloadEngine()
-	* Destructs instance of CIRLogoDownloadEngine
-	*/
-    IMPORT_C ~CIRLogoDownloadEngine();
-    
-    /**
-	* void SendPresetWithLogoL()
-	* sends the preset with logo to the requestors
-	*/
-    IMPORT_C void SendPresetWithLogoL();
-    
-    /**
-    * GetCacheLogoL(TDesC& aUrl,TInt& aStatus)
-    * takes the url as a parameter and returns the logo data which is in cache
-    * this API is called form the search results for to display logo on the view
-    */
-    IMPORT_C void GetCacheLogoL(const TDesC& aUrl,TInt& aStatus);
-	
-	/**
-	* TDesC8& SendCacheLogo()
-    * sends the logo which is cached
-    */
-	IMPORT_C TDesC8& SendCacheLogo();
-
-    
-    
-    /**
-	* void FetchLogoDataL(CIRIsdsPreset* aPreset)
-	* API is used to download logo from isds/internet
-	* called in the API SendRequestL(CIRIsdsPreset* aPreset)
-	*/
-    void FetchLogoDataL(CIRIsdsPreset* aPreset);
-    
-    /**
-	* void FetchLogoDataL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,TInt aNPVReq)
-	* API is used to download logo from isds/internet
-	* called in the API SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle)
-	*/
-	void FetchLogoDataL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,TInt aNPVReq);
-	
-	/**
-	* void ManagePresetArrayIndexL()
-	* To update the iPresetArray current index
-	*/
-	void ManagePresetArrayIndexL();
-	
-	/**
-	* void ManageCachePresetArrayIndexL()
-	* To update the iCachePresetArray current index
-	*/
-	void ManageCachePresetArrayIndexL();
-
-    /**
-	* void CacheError()
-	* Called from cachemgmt in case of an error
-	* callback API from MIRCacheObserver
-	*/   
-    void CacheError();
-    
-	/**
-	* void CacheFailed()
-	* Called from cachemgmt in case of cache failure
-	* callback API from MIRCacheObserver
-	*/ 
-    void CacheFailed();
-    
-	/**
-	* void CacheInvalid()
-	* Called from cachemgmt in case cache is invalid
-	* callback API from MIRCacheObserver
-	*/ 
-    void CacheInvalid();
-    
-	/**
-	* void CachedStructureL()
-	* Called from cachemgmt data retrival is successful
-	*@param aChoice,it gives the data type of the cache
-	* callback API from MIRCacheObserver
-	*/ 
-    void CachedStructureL(TInt aChoice);
-    
-    /**
-     *  ReleaseResources();
-     *  Releases the resources held by logo download engine
-     */
-    void ReleaseResources();
-	
-	//from MIRActiveNetworkObserver
-	/**
-	 * Notified by network controller when network is active
-	 * to reissue the request  
-	 * NotifyActiveNetworkObserversL()
-	 */	
-	 void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
-
-		 
-	 /**
-	 * Notifies all observers whose network request is active
-	 * to reset the pending request status  
-	 * ResetPendingRequests()
-	 */	
-	 void ResetPendingRequests(TBool aValue);
-
-	
-private:
-	/**
-	* void ConstructL()
-	* 2nd phase construction
-	*/
-	void ConstructL();
-	
-	/**
-	* CIRLogoDownloadEngine()
-	* Standard C++ constructor
-	*/
-    CIRLogoDownloadEngine();        
-    
-    /**
-	* void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue) const
-	* to set the headers of the http transaction
-	*/
-    void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue) const;
-    
-    /**
-	* void IssueLogoDownloadRequest()
-	* submits the transaction for to download the logo
-	*/
-	void IssueLogoDownloadRequestL();	    
-	
-	/**
-	* void CheckCacheForLogoL(TInt aValue)
-	* checks the logo in the cache
-	*/
-	void CheckCacheForLogoL(TInt aValue);
-	
-	/**
-	* void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
-	* from MHTTPTransactionCallback
-	*/
-	void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
-    
-    /**
-	* TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
-	* //from MHTTPTransactionCallback
-	*/
-    TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
-    
-    /**
-	* void ReleaseData()
-	* from MHTTPDataSupplier
-	*/
-	void ReleaseData();
-    
-    /**
-	* TBool GetNextDataPart(TPtrC8& aDataPart)
-	* from MHTTPDataSupplier
-	*/
-    TBool GetNextDataPart(TPtrC8& aDataPart);
-    
-    /**
-	* TInt Reset()
-	* from MHTTPDataSupplier
-	*/
-    TInt Reset();
-    
-    /**
-	* TInt OverallDataSize()
-	* from MHTTPDataSupplier
-	*/
-    TInt OverallDataSize();
-    
-     /**
-     *  CIRLogoDownloadEngine::ExtractResponseHeadersL(
-	 *  RHTTPTransaction aTransaction )
-     *  Used to Extract the response headers.
-     *  @param aTransaction HTTP Transaction object
-     */
-    void ExtractResponseHeadersL( const RHTTPTransaction& aTransaction );
-    
-    /**
-     *  CIRLogoDownloadEngine::HttpHeaderReceived( const TDesC8& aHeaderData )
-     *  indicate that an HTTP header is received.
-     *  @param aHeaderData Reference to the Header Info
-     */
-    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData );
-    
-    /**
-     * CIRLogoDownloadEngine::ExtractHeaderValue(const TDesC8& aHeaderData,
-     *	       const TDesC8& aHeaderName,const TDesC8& aDelimeter,
-     *	       TDes8& aHolder) const
-     * Used to build the CIRHttpResponseData
-     */
-    void ExtractHeaderValue(const TDesC8& aHeaderData,
-    	const TDesC8& aHeaderName,const TDesC8& aDelimeter,
-    	TDes8& aHolder) const;
-
-    /**
-     * CIRLogoDownloadEngine::HttpDateHeaderReceived(const TDesC8 &aHeader,const TTime& aTime )
-     * Used to build the CIRHttpResponseData members
-     */
-	void HttpDateHeaderReceived(const TDesC8 &aHeader,const TTime& aTime );
-    	
-	
-private:
-    /**
-    * pointer to the logo observer object
-    */	
-	MLogoDownloadObserver* iLogoHandle;
-	
-	/**
-    * pointer to the logo observer object
-    */
-	MLogoDownloadObserver* iTempLogoHandle;
-	
-	/**
-    * pointer to the logo observer object
-    */
-	MLogoDownloadObserver* iCacheTempLogoHandle;
-		
-	/**
-    * pointer to the preset object
-    * temporary preset in the logo downloading usecase
-    */
-	CIRIsdsPreset* iTempPreset;
-	
-	/**
-    * pointer to the preset object
-    * temporary preset in the cache checking usecase
-    */
-	CIRIsdsPreset* iCacheTempPreset;
-	
-	/**
-    * pointer to the preset object
-    * preset used to conver CIRPreset to CIRIsdsPreset
-    */
-	CIRIsdsPreset* iCopyPreset;
-
-    /**
-    * Network controller handle pointer
-    */
-    CIRNetworkController *iIRNetworkControllerHandle;
-    
-    /**
-    * Preset Array for downloading logo
-    */
-    CArrayPtrFlat<CIRIsdsPreset>*  iPresetArray;
-    
-    /**
-    * Preset Array for checking cache
-    */
-    CArrayPtrFlat<CIRIsdsPreset>*  iCachePresetArray;
-    
-    /**
-    * MLogoDownloadObserver array for downloading logo
-    */
-    CArrayPtrFlat<MLogoDownloadObserver>*   iObserverArray;
-    
-    /**
-    * MLogoDownloadObserver array for checking cache
-    */
-    CArrayPtrFlat<MLogoDownloadObserver>*   iCacheObserverArray;
-    
-    /**
-    * To keep track whether the req came for Favorites or NPV(downloading logo)
-    */
-    CArrayFixFlat<TInt>*    iReqFromArray;
-    
-    /**
-    * To keep track whether the req came for Favorites or NPV(checking cache)
-    */
-    CArrayFixFlat<TInt>*    iCacheReqFromArray;
-    
-    /**
-    * Separate session for the logo downloading
-    */
-    RHTTPSession    iLogoSession;
-    
-    /**
-    * http transaction
-    */
-    RHTTPTransaction		iTransaction;
-    
-    /**
-    * for the transactions with cache mgmt
-    */
-	CIRCacheMgmt *iCache;
-	
-	/**
-    * Pointer to Response header data
-    */
-	CIRHttpResponseData* iResponseHeaders;
-	
-	/**
-    * boolean for to know the status of the downloading logo
-    */
-    TBool	iRunning;	
-    
-    /**
-    * body of the transaction request
-    */
-    TDesC8* iReqBody;
-    
-    /**
-    * body of the transaction response
-    */
-    HBufC8* iRespBody;
-    
-    /**
-    * size of the response body
-    */
-    TInt    iRespBodySize;
-    
-    /**
-    * state of the transaction
-    */
-    TState  iState;
-    
-    /**
-    * status, from which the preset has modified
-    */
-    TBool iPresetModifiedStatus;
-    
-    
-    /**
-    * iPresetArray position
-    */
-	TInt    iPresetArrayPos;
-	
-	/**
-    * position of the iReqFromArray
-    */
-	TInt    iReqFromArrayPos;
-	
-	/**
-    * position of the iObserverArray
-    */
-	TInt    iObserverArrayPos;
-	
-	/**
-    * position of the iCachePresetArray
-    */
-	TInt    iCachePresetArrayPos;
-	
-	/**
-    * position of the iCacheReqFromArray
-    */
-	TInt    iCacheReqFromArrayPos;
-	
-	/**
-    * position of the iCacheObserverArray
-    */
-	TInt    iCacheObserverArrayPos;
-	
-	/**
-    * status of cache request
-    */
-	TInt    iCacheReqFrom;
-	
-	/**
-    * temporary variable for the status of request
-    */
-	TInt    iTempReqFrom;
-	
-	/**
-    * boolean to verify first time or not
-    */
-	TBool	iFirstTime;
-	
-	/**
-    * ETrue if logo is available in cache
-    */
-	TBool   iLogoCached; 
-	
-	/**
-    * boolean for forcibly getting the logo from cache
-    */
-	TBool   iForceGet;
-	
-	/**
-    * boolean for to track whether the cache request has made or not
-    */
-	TBool   iCacheReqMade;
-	
-	/**
-    * response from the cache for the availability of logo(CacheNotValid,NotCached,CacheUseable)
-    */
-	TInt 	iResult;
-	
-	/**
-    * status on cache checking
-    */
-	TBool 	iCheckingCache;
-	
-	/**
-    * integer for the status of sending the logo
-    */
-	TInt 	iSendingLogo;
-	
-	/**
-    * Using for temporarily till the isds provides urls
-    */
-	TInt 	iImageIndex;
-	
-	/**
-	* this is used while making a conditional GET request
-	*/
-	TTime iLastModifiedTime;
-	
-	/**
-	* this is used while making a conditional GET request
-	*/
-	TBuf8 < KMAXHEADERLENGTHS > iETag;
-	
-	/**
-	* this is used to track whether the request is conditional GET or non-conditional GET
-	*/
-	TBool iIsConditionalGET;
-	
-	/**
-	* Status of the logo download in the network up and down scenarios
-	*/
-	TBool iLogoRequestPending;
-	
-	/**
-	* status of the response code
-	*/
-	TInt iRespCode;
-	
-};
-
-#endif // IRLOGODOWNLOADENGINE_H
--- a/internetradio2.0/dataproviderinc/mlogodownloadobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef MLOGODOWNLOADOBSERVER_H
-#define MLOGODOWNLOADOBSERVER_H
-
-#include <e32def.h>
-
-#include "irisdspreset.h"
-
-class CIRIsdsPreset;
-
-/**
- * MLogoDownloadObserver
- * passes id of a preset which has downloaded the logo.
- * An instance of this class must be provided while calling the API SendRequestL() of 
- * CIRLogoDownloadEngine.  The call of the API SendRequestL() is from NowPlayingView.
- */
-class MLogoDownloadObserver
-    {
-public:
-    
-	
-	/**
-	 * MLogoDownloadObserver::PresetLogoDownloadedL()
-	 * called back when a preset's logo has downloaded
-	 * @param CIRIsdsPreset*, preset with downloaded logo
-	 */
-	virtual void PresetLogoDownloadedL(CIRIsdsPreset* aPreset)=0;
-	
-	/**
-	 * MLogoDownloadObserver::PresetLogoDownloadError()
-	 * called back when a preset's logo has not downloaded
-	 * @param CIRIsdsPreset*, preset with no logo data
-	 */
-	virtual void PresetLogoDownloadError(CIRIsdsPreset* aPreset)=0;
-
-	
-	 
-	};
-
-#endif // MLOGODOWNLOADOBSERVER_H
--- a/internetradio2.0/dataprovidersrc/irdataprovider.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,465 +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 <ezgzip.h>
-#include <bautils.h>
-#include <f32file.h>
-
-#include "irdataprovider.h"
-#include "irdataproviderobserver.h"
-#include "irdebug.h"
-#include "irhttpdataprovider.h"
-#include "irhttprequestdata.h"
-#include "irsettings.h"
-
-_LIT( KGzXmlFile, "iSdsResponse.xml.gz" );
-_LIT( KXmlFile, "iSdsResponse.xml" );
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::NewL(MIRDataProviderObserver& aObserver)
-//  Creates instance of CIRDataProvider.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRDataProvider *CIRDataProvider::NewL(
-    MIRDataProviderObserver &aObserver )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::NewL - Entering" );
-    CIRDataProvider *self = NewLC( aObserver );
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRDataProvider::NewL - Exiting" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::NewL(MIRDataProviderObserver& aObserver)
-//  Creates instance of CIRDataProvider.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRDataProvider *CIRDataProvider::NewL(
-    MIRDataProviderObserver &aObserver, const TDesC &aFileName )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::NewL(..., &aFileName) - Entering" );
-    CIRDataProvider *self = NewLC( aObserver, aFileName );
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRDataProvider::NewL(..., &aFileName) - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::~CIRDataProvider()
-//  Destructs an instance of CIRDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRDataProvider::~CIRDataProvider() // destruct - virtual, so no export
-    {
-    IRLOG_DEBUG( "CIRDataProvider::~CIRDataProvider() - Entering" );
-
-    if (iHttpDataProvider)
-        {
-        // Cancel any active transactions
-        iHttpDataProvider->CancelTransaction();
-        // Destroy the data provider object
-        }
-
-    delete iHttpDataProvider;
-
-    if( iIRSettings )
-    	{
-    	iIRSettings->Close();
-		}
-
-    if (iDataProviderTimer)
-        {
-     	iDataProviderTimer->Cancel(); // Cancel the timer
-        }
-
-    delete iDataProviderTimer; // Destroy the timer object
-	if( iResponseHeaders )
-		{
-        delete iResponseHeaders;
-		}
-    iFile.Close();
-    iFsSession.Close(); // Close the file server session
-    IRLOG_DEBUG( "CIRDataProvider::~CIRDataProvider() - Exiting" );
-    }
-
-// General functions exported ( These are the API`s exposed )( HTTP )
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::IRHttpIssueRequest(TDesC8& aUri)
-//  Used to issue an Http request
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRDataProvider::IRHttpIssueRequestL(
-     CIRHttpRequestData &aRequestObject )
-    {
-    IRHttpCancelRequest();
-    IRLOG_DEBUG( "CIRDataProvider::IRHttpIssueRequestL - Entering" );
-	IRRDEBUG2("CIRDATAPROVIDER::IRHTTPISSUEREQUESTL",KNullDesC);
-    CIRHttpResponseData* newResponseHeaders = new ( ELeave ) CIRHttpResponseData;
-    delete iResponseHeaders;
-    iResponseHeaders = newResponseHeaders;
-
-
-    // Create or replace the file used to store xml response from iSDS
-    User::LeaveIfError(iFile.Replace( iFsSession, iXmlGzFilePath, EFileWrite ));
-    iHttpDataProvider->CancelTransaction();
-
-    TInt err = iHttpDataProvider->IssueHttpRequestL( aRequestObject );
-    // Cancel the timer if active
-    iDataProviderTimer->Cancel();
-    // Start the timer for timeout
-    iDataProviderTimer->After( iTimeOut );
-    if ( err == KErrCouldNotConnect )
-        {
-        // If error in IssueHttpRequest then close the open file
-	    iFile.Close();
-	    iDataProviderTimer->Cancel();
-	    iDataProviderObserver.IRHttpGeneralError( err );
-	    // Cancel any possibly pending transactions
-	    iHttpDataProvider->CancelTransaction();
-        }
-
-    IRLOG_DEBUG( "CIRDataProvider::IRHttpIssueRequestL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::IRHttpCancelRequest()
-//  Used to cancel a request
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRDataProvider::IRHttpCancelRequest()
-    {
-    IRLOG_DEBUG( "CIRDataProvider::IRHttpCancelRequest - Entering" );
-    // Cancel the timer if active
-    iDataProviderTimer->Cancel();
-    // Cancel any possibly pending transactions
-    iHttpDataProvider->CancelTransaction();
-    // Close the file handle used to store the xml response
-    iFile.Close();
-    IRLOG_DEBUG( "CIRDataProvider::IRHttpCancelRequest - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::ReleaseResources()
-//  Used to release the resources held by the IRHttpDataProvider
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRDataProvider::ReleaseResources()
-	{
-	IRLOG_DEBUG( "CIRDataProvider::ReleaseResources - Entering" );
-	// Release the resources held by the IRHttpDataProvider
-	iHttpDataProvider->ReleaseResources();
-	IRLOG_DEBUG( "CIRDataProvider::ReleaseResources - Exiting" );
-	}
-
-
-//These are the callback functions used by CIRHttpDataProvider to
-//provide the CIRDataProvider with the data after processing the
-//HTTP request.
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::HttpEventComplete()
-//  Used to Indicate to the observer that the request event has completed
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::HttpEventComplete()
-    {
-    IRLOG_DEBUG( "CIRDataProvider::HttpEventComplete - Entering" );
-    iFile.Close();
-    iDataProviderTimer->Cancel();
-
-    // unzip the gz file
-    TRAP_IGNORE( UnzipFileL( iXmlFilePath ) );
-    // delete the original gz file
-    BaflUtils::DeleteFile( iFsSession, iXmlGzFilePath );
-    // Need to take a member to a local variable, as the IRHttpDataReceived may initiate
-    // an IRHttpIssueRequestL() call, causing the headers to be replaced with empty ones, and
-    // causing crashes.
-    CIRHttpResponseData* currentHeaders = iResponseHeaders;
-    iResponseHeaders = NULL; // prevents the destructor to delete in case something streange happens.
-    iDataProviderObserver.IRHttpDataReceived( iXmlFilePath,*currentHeaders );
-
-    delete currentHeaders;
-    IRLOG_DEBUG( "CIRDataProvider::HttpEventComplete - Exiting." );
-    }
-
-
-void CIRDataProvider::ExtractHeaderValue(const TDesC8& aHeaderData,const
-	TDesC8& aHeaderName,const TDesC8& aDelimeter,TDes8& aHolder) const
-	{
-	IRLOG_DEBUG( "CIRDataProvider::ExtractHeaderValue - Entering" );
-	TInt position = aHeaderData.Find(aHeaderName);
-	if( position >= 0)
-		{
-		TPtrC8 headerValue = aHeaderData.Mid(position);
-		TInt delimeterPosition = headerValue.Find(aDelimeter);
-		if( delimeterPosition != KErrNotFound )
-			{
-			delimeterPosition++;
-			TPtrC8 value = headerValue.Mid(delimeterPosition);
-			aHolder.Copy(value);
-			aHolder.TrimAll();
-			}
-		}
-	IRLOG_DEBUG( "CIRDataProvider::ExtractHeaderValue - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::HttpHeaderReceived( const TDesC8& aHeaderData )
-//  Used by CIRHttpDataProvider to indicate that an HTTP header is received.
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::HttpHeaderReceived( const TDesC8& aHeaderData )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::HttpHeaderReceived - Entering." );
-	_LIT8(KDelim,":");
-	_LIT8(KContentType,"Content-Type");
-	ExtractHeaderValue(aHeaderData,KContentType,KDelim,iResponseHeaders->
-		iContentType);
-	_LIT8(KMaxAge,"max-age");
-	_LIT8(KDelimEqual,"=");
-	ExtractHeaderValue(aHeaderData,KMaxAge,KDelimEqual,iResponseHeaders->
-		iMaxAge);
-	_LIT8(KContentLength,"Content-Length");
-	ExtractHeaderValue(aHeaderData,KContentLength,KDelim,iResponseHeaders->
-		iContentLength);
-	_LIT8(KExpires,"Expires");
-	ExtractHeaderValue(aHeaderData,KExpires,KDelim,iResponseHeaders->iExpires);
-	IRLOG_DEBUG( "CIRDataProvider::HttpHeaderReceived - Exiting." );
-    }
-
-
-void CIRDataProvider::HttpDateHeaderReceived(const TDesC8 &aHeader,
-	const TTime& aTime )
-	{
-	IRLOG_DEBUG( "CIRDataProvider::HttpDateHeaderReceived - Entering." );
-	_LIT8(KDate,"Date");
-	_LIT8(KLastModified,"Last-Modified");
-	TInt position = aHeader.Find(KDate);
-	if( position != KErrNotFound )
-		{
-		iResponseHeaders->iDate = aTime;
-		//find the difference between device time and response time
-		//and storing the offset
-		SetOffsetSeconds( aTime );
-		return ;
-		}
-	position = aHeader.Find(KLastModified);
-	if( position != KErrNotFound )
-		{
-		iResponseHeaders->iLastModified = aTime;
-		}
-	IRLOG_DEBUG( "CIRDataProvider::HttpDateHeaderReceived - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::HttpBodyReceived( const TDesC8& aBodyData )
-//  Used by CIRHttpDataProvider to indicate that an HTTP response body
-//  is received.
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::HttpBodyReceived( const TDesC8 &aBodyData )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::HttpBodyReceived - Entering" );
-    TInt FileWritePos = 0;
-    iFile.Seek( ESeekEnd, FileWritePos );
-    iFile.Write( FileWritePos, aBodyData );
-    IRLOG_DEBUG( "CIRDataProvider::HttpBodyReceived - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::HttpTransactionError(TInt aErrCode)
-//  Used by CIRHttpDataProvider to indicate that a HTTP Transaction error
-//  has occured.
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::HttpTransactionError( TInt aErrCode )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::HttpTransactionError - Entering" );
-    iFile.Close();
-    iDataProviderTimer->Cancel();
-    iDataProviderObserver.IRHttpGeneralError( aErrCode );
-    // Cancel any possibly pending transactions
-    iHttpDataProvider->CancelTransaction();
-    IRLOG_DEBUG( "CIRDataProvider::HttpTransactionError - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::HttpResponseCodeRecieved(TInt aResponseCode)
-//  Used by CIRHttpDataProvider to indicate to the iSDS Client that a
-//  304 Not Changed response received
-//  Note: Implemented in version 0.2
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::HttpResponseCodeRecieved( TInt aResponseCode )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::HttpResponseCodeRecieved - Entering" );
-    iDataProviderObserver.IRHttpResponseCodeReceived( aResponseCode, *iResponseHeaders );
-    IRLOG_DEBUG( "CIRDataProvider::HttpResponseCodeRecieved- Exiting" );
-    }
-
-// constructor support
-// don't export these, because used only by functions in this DLL
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::CIRDataProvider(MIRDataProviderObserver& aObserver):
-//  iDataProviderObserver(aObserver)
-//  Default Constructor
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::TimerExpired()
-    {
-    IRLOG_INFO( "CIRDataProvider::TimerExpired - Entering" );
-    IRHttpCancelRequest();
-    HttpTransactionError( KDataProviderTimeout );
-    IRLOG_INFO( "CIRDataProvider::TimerExpired - Exiting" );
-    }
-
-
-
-CIRDataProvider::CIRDataProvider( MIRDataProviderObserver &aObserver ):
-    iDataProviderObserver( aObserver ) // first-phase C++ constructor
-    {
-    IRLOG_INFO( "CIRDataProvider::CIRDataProvider" );
-    // Definition not required
-    }
-
-// ---------------------------------------------------------------------------
-//  void CIRDataProvider::ConstructL()
-//  2nd Phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::ConstructL() // second-phase constructor
-    {
-    IRLOG_DEBUG( "CIRDataProvider::ConstructL - Entering" );
-    ConstructL( KGzXmlFile );
-    iHttpDataProvider->iSetNonUAProfUserAgent = EFalse;
-    IRLOG_DEBUG( "CIRDataProvider::ConstructL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-//  void CIRDataProvider::ConstructL(TDesC& aFilePath)
-//  2nd Phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::ConstructL( const TDesC &aFileName )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::ConstructL(const TDesC &aFileName) - Entering" );
-    iHttpDataProvider = CIRHttpDataProvider::NewL( *this );
-    iDataProviderTimer = CIRDataProviderTimer::NewL( EPriorityHigh,  *this );
-    User::LeaveIfError(iFsSession.Connect());
-    iIRSettings = CIRSettings::OpenL();
-    iXmlGzFilePath = iIRSettings->PrivatePath();
-    iXmlFilePath = iXmlGzFilePath;
-    iXmlGzFilePath.Append( aFileName );
-    iXmlFilePath.Append( KXmlFile );
-    iTimeOut = iIRSettings->GetTimeOut();
-    iHttpDataProvider->iSetNonUAProfUserAgent = ETrue;
-    IRLOG_DEBUG( "CIRDataProvider::ConstructL(const TDesC &aFileName) - Exiting." );
-    }
-
-
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
-//  Creates instance of CIRDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRDataProvider *CIRDataProvider::NewLC( MIRDataProviderObserver &aObserver )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::NewLC - Entering." );
-    CIRDataProvider *self = new( ELeave )CIRDataProvider( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    IRLOG_DEBUG( "CIRDataProvider::NewLC - Exiting." );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
-//  Creates instance of CIRDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRDataProvider *CIRDataProvider::NewLC( MIRDataProviderObserver &aObserver,
-    const TDesC &aFileName )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::NewLC - Entering." );
-    CIRDataProvider *self = new( ELeave )CIRDataProvider( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL( aFileName );
-    IRLOG_DEBUG( "CIRDataProvider::NewLC - Exiting." );
-    return self;
-    }
-
-EXPORT_C CIRHttpDataProvider* CIRDataProvider::GetHttpDataProvider()
-{
-IRLOG_DEBUG( "CIRDataProvider::GetHttpDataProvider" );
-	return iHttpDataProvider;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::SetOffsetSeconds( const TTime& aTime )
-//  Stores the offset between device time and response header in settings
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::SetOffsetSeconds( const TTime& aTime )
-	{
-	IRLOG_DEBUG( "CIRDataProvider::SetOffsetSeconds - Entering" );
-	TTime currenttime;
-	//calculates the current time
-	currenttime.UniversalTime();
-	//finds offset from isds response
-	TTimeIntervalSeconds offsetseconds;
-	//Find offset from isds response
-	TInt err = currenttime.SecondsFrom(aTime,offsetseconds);
-	if( err )
-		{
-		//if error offsetseconds is set to zero
-		offsetseconds = 0;
-		}
-	//storing the offset value in setting
-	TRAP_IGNORE( iIRSettings->SetTimeCorrectionL(offsetseconds.Int()) )
-	IRLOG_DEBUG( "CIRDataProvider::SetOffsetSeconds - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//  CIRDataProvider::UnzipFileL
-// ---------------------------------------------------------------------------
-//
-void CIRDataProvider::UnzipFileL( const TDesC& aOutputFile )
-    {
-    IRLOG_DEBUG( "CIRDataProvider::UnzipFileL - Enter." );
-    RFile outputFile;
-    CleanupClosePushL( outputFile );
-    User::LeaveIfError( outputFile.Replace( iFsSession, aOutputFile, 
-                        EFileStream | EFileWrite | EFileShareExclusive ) );
-    CEZGZipToFile* gZip = 
-        CEZGZipToFile::NewLC( iFsSession, iXmlGzFilePath, outputFile );
-
-    while ( gZip->InflateL() )
-        {
-        // unzip the gz file, quit when finish
-        }
-    CleanupStack::PopAndDestroy( gZip );
-    CleanupStack::PopAndDestroy( &outputFile );
-    IRLOG_DEBUG( "CIRDataProvider::UnzipFileL - Exit." );
-    }
--- a/internetradio2.0/dataprovidersrc/irdataprovidertimer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +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 "irdataprovidertimer.h"
-#include "irdebug.h"
-// ---------------------------------------------------------------------------
-// CIRDataProviderTimer::NewL( const TInt aPriority,
-//		MIRDataProviderTimeoutNotifier &aNotify )
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRDataProviderTimer *CIRDataProviderTimer::NewL( const TInt aPriority, 
-     MIRDataProviderTimeoutNotifier &aNotify )
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::NewL - Entering" );
-    CIRDataProviderTimer *self = CIRDataProviderTimer::NewLC( aPriority,
-		aNotify );
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( "CIRDataProviderTimer::NewL - Exiting" );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// CIRDataProviderTimer::NewLC( const TInt aPriority, 
-//		MIRDataProviderTimeoutNotifier &aNotify )
-// ---------------------------------------------------------------------------
-//    
-CIRDataProviderTimer *CIRDataProviderTimer::NewLC( const TInt aPriority, 
-    MIRDataProviderTimeoutNotifier &aNotify )
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::NewLC - Entering" );
-    CIRDataProviderTimer *self = new( ELeave )CIRDataProviderTimer( 
-		aPriority, aNotify );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    IRLOG_DEBUG( "CIRDataProviderTimer::NewLC - Exiting" );
-    return self;
-    }
- 
-// ---------------------------------------------------------------------------
-// CIRDataProviderTimer::~CIRDataProviderTimer()
-// Default C++ destructor
-// ---------------------------------------------------------------------------
-//    
- 
-CIRDataProviderTimer::~CIRDataProviderTimer()
-{
-IRLOG_DEBUG( "CIRDataProviderTimer::~CIRDataProviderTimer" );
-// Implementation not required
-}
-
-
-// ---------------------------------------------------------------------------
-// Derived from CTimer
-// CIRDataProviderTimer::RunL()
-// ---------------------------------------------------------------------------
-//  
-void CIRDataProviderTimer::RunL()
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::RunL - Entering" );
-    if ( iStatus == KErrNone )
-        {
-        iNotify.TimerExpired();
-        }
-    else
-        {
-        User::Leave( iStatus.Int() );
-        }
-    IRLOG_DEBUG( "CIRDataProviderTimer::RunL - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// Derived from CTimer
-// CIRDataProviderTimer::RunError()
-// ---------------------------------------------------------------------------
-//    
-TInt CIRDataProviderTimer::RunError( TInt /*aError*/ )
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::RunError" );
-        return KErrNone;
-    }
-    
-// ---------------------------------------------------------------------------
-// CIRDataProviderTimer::CIRDataProviderTimer( const TInt aPriority, 
-//  MIRDataProviderTimeoutNotifier &aNotify ): CTimer( aPriority ),
-//  iNotify( aNotify )
-// ---------------------------------------------------------------------------
-//        
-CIRDataProviderTimer::CIRDataProviderTimer( const TInt aPriority, 
-    MIRDataProviderTimeoutNotifier &aNotify ): CTimer( aPriority ),
-    iNotify( aNotify )
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::CIRDataProviderTimer" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRDataProviderTimer::ConstructL()
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//    
-void CIRDataProviderTimer::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRDataProviderTimer::ConstructL - Entering" );
-    CTimer::ConstructL();
-    CActiveScheduler::Add( this );
-    IRLOG_DEBUG( "CIRDataProviderTimer::ConstructL - Exiting" );
-    }
-
--- a/internetradio2.0/dataprovidersrc/irhttpdataprovider.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1096 +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 <httpstringconstants.h>
-#include <rhttpheaders.h>
-#include <mmfcontrollerpluginresolver.h> //to get the supported MIME types
-#ifdef ENABLE_USAGE_REPORT_TEST
-#include <bautils.h>
-#include "irreportsettings.h"
-#endif
-#include "irdataprovider.h"
-#include "irdebug.h"
-#include "irhttpdataprovider.h"
-#include "irhttppost.h"
-#include "irhttprequestdata.h"
-#include "irnetworkcontroller.h"
-#include "irdatatransferobserver.h"
-#include "irlogodownloadengine.h"
-#include "irfavoritesdb.h"
-#include "irsettings.h"
-
-//Added for ALR/SNAP
-const TInt KBufflengthMaxLength = 255;
-const TInt KWapProfileMaxLength = 20;
-const TInt KNokiaIrAppAcceptMaxLength = 25;
-const TInt KSize = 1024;
-const TInt KMaxSize = 2048;
-const TInt KBufSize = 10;
-const TUid KUidHelixController        = { 0x101F8514 }; // Helix Video controller UID
-const TInt KLogbufferLenth = KLogBufferSize/2 - 1;
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::CIRHttpDataProvider(MIRHttpDataProviderObserver&
-// aObserver):iObserver(aObserver),iRunning(EFalse)
-// Creates instance of CIRHttpDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRHttpDataProvider::CIRHttpDataProvider( MIRHttpDataProviderObserver
-    &aObserver ): iRunning( EFalse ), iObserver( aObserver )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::CIRHttpDataProvider" );
-    // Definition not required
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::~CIRHttpDataProvider()
-// Destructs instance of CIRHttpDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRHttpDataProvider::~CIRHttpDataProvider()
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::~CIRHttpDataProvider - Entering" );
-    iHttpSession.Close();
-    delete iLogMessage;
-    if(iIRNetworkControllerHandle)
-    	{
-    	iIRNetworkControllerHandle->Close();
-        }
-    if(iLogoDownloadEngine)
-    	{
-	    delete iLogoDownloadEngine;
-	    iLogoDownloadEngine = NULL;
-    	}
-    IRLOG_DEBUG( "CIRHttpDataProvider::~CIRHttpDataProvider - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::NewL(MIRHttpDataProviderObserver& aObserver )
-// Creates instance of CIRHttpDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRHttpDataProvider *CIRHttpDataProvider::NewL( MIRHttpDataProviderObserver
-	&aObserver )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::NewL - Entering" );
-    CIRHttpDataProvider *self = NewLC( aObserver );
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRHttpDataProvider::NewL - Exiting" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::NewLC(MIRHttpDataProviderObserver& aObserver)
-// Creates instance of CIRHttpDataProvider.
-// ---------------------------------------------------------------------------
-//
-CIRHttpDataProvider *CIRHttpDataProvider::NewLC( MIRHttpDataProviderObserver
-    &aObserver )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::NewLC - Entering" );
-    CIRHttpDataProvider *self = new( ELeave )CIRHttpDataProvider( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    IRLOG_DEBUG( "CIRHttpDataProvider::NewLC - Exiting" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::ConstructL()
-// 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::ConstructL - Entering" );
-    iFirstTime = ETrue;
-    iIRNetworkControllerHandle = CIRNetworkController::OpenL();
-    iLogMessage = CIRHttpPost::NewL(iHttpTransaction);
-    iLogoDownloadEngine = CIRLogoDownloadEngine::NewL();
-    IRLOG_DEBUG( "CIRHttpDataProvider::ConstructL - Exiting" );
-    }
-
-EXPORT_C CIRLogoDownloadEngine* CIRHttpDataProvider::GetLogoDownloadEngine()
-{
-IRLOG_DEBUG( "CIRHttpDataProvider::GetLogoDownloadEngine" );
-	return iLogoDownloadEngine;
-}
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::CancelTransactionL()
-// Cancel the issued Http transaction
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::CancelTransaction()
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::CancelTransaction  - Entering" );
-    // Make sure that logfile is closed
-    CloseLogFile ();
-    if ( !iRunning )
-        {
-        return ;
-        }
-    // Close() also cancels transaction (Cancel() can also be used but
-    // resources allocated by transaction must be still freed with Close())
-    iHttpTransaction.Close();
-    // Not running anymore
-    iRunning = EFalse;
-    IRLOG_DEBUG( "CIRHttpDataProvider::CancelTransaction - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::CloseLogFile  ( CIRHttpRequestData& aRequestInfo )
-// Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::CloseLogFile ()
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::CloseLogFile  - Entering" );
-	if (iLogMessage) iLogMessage->CloseLogFile ();
-	IRLOG_DEBUG( "CIRHttpDataProvider::CloseLogFile  - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::IssueHttpRequestL( CIRHttpRequestData& aRequestInfo )
-// Used to issue the request.
-// ---------------------------------------------------------------------------
-//
-TInt CIRHttpDataProvider::IssueHttpRequestL( CIRHttpRequestData &aRequestInfo )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - Entering" );
-    IRRDEBUG2("CIRHTTPDATAPROVIDER::IRHTTPISSUEREQUESTL",KNullDesC);
-    iNotModified = EFalse;
-    
-    if ( !( iIRNetworkControllerHandle->GetNetworkStatus() ) )
-        {
-        // Error Network connection inactive
-        return KErrCouldNotConnect;
-        }
-    if ( iFirstTime )
-        {
-        InitializeHttpDataProviderL();
-        iIRNetworkControllerHandle->InitializeHttpSessionL( iHttpSession,
-        			 MIRDataTransferTracker::EIRTransferCategoryIsds);
-        iFirstTime = EFalse;
-        }
-    // Parse string to URI (as defined in RFC2396)
-    TUriParser8 uri;
-    uri.Parse( aRequestInfo.iUri );
-    // Get request method string
-    RStringF method;
-    switch ( aRequestInfo.iMethod )
-        {
-        case EIRHttpGET:
-                {
-                method = iHttpSession.StringPool().StringF( HTTP::EGET,
-					RHTTPSession::GetTable() );
-                }
-            break;
-        case EIRHttpPOST:
-                {
-                method = iHttpSession.StringPool().StringF( HTTP::EPOST,
-					RHTTPSession::GetTable() );
-                }
-            break;
-        default:
-            {
-            }
-            break;
-        }
-    CleanupClosePushL( method );
-
-    IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - Opening transaction" );
-    // Open transaction with previous method and parsed uri. This class will
-    // receive transaction events in MHFRunL and MHFRunError.
-    iHttpTransaction = iHttpSession.OpenTransactionL( uri,  *this, method );
-
-#ifdef ENABLE_USAGE_REPORT_TEST
-    RFs iFs;
-    User::LeaveIfError(iFs.Connect());
-    
-    TTime timeStamp;
-    //timeStamp.UniversalTime();
-    timeStamp.HomeTime();
-    TDateTime dateTime =  timeStamp.DateTime();
-    
-    _LIT(KFormatTime,"-%d-%d-%d %d.%d.%d.xml.gz\n");
-    TBuf<32>    sendTime;
-    sendTime.Format(KFormatTime,dateTime.Year(),TInt(dateTime.Month()+1),dateTime.Day()+1,
-                                dateTime.Hour(),dateTime.Minute(),dateTime.Second());
-
-    _LIT( KDstFilePath, "c:\\data\\IR_Log\\");
-    TFileName dstFileName(KDstFilePath);
-    dstFileName.Append(KGZipLogFileName);
-    dstFileName.Append(sendTime);
-    
-    iFs.MkDirAll(dstFileName);
-    
-    if ( aRequestInfo.iMethod == EIRHttpPOST )
-        {
-        CIRSettings * settings = CIRSettings::OpenL();
-        if(NULL != settings)
-            {
-            TFileName filePath = settings->PrivatePath();
-            filePath.Append( KGZipLogFileName );                   
-
-            BaflUtils::CopyFile(iFs, filePath, dstFileName);
-            settings->Close();
-        }
-    }
-#endif
-    
-    if ( aRequestInfo.iMethod == EIRHttpPOST )
-        {
-        IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - POST method" );
-        // Close the LogFile
-        iLogMessage->CloseLogFile ();
-        iLogMessage->SetTransaction( iHttpTransaction );
-        TInt FileSize(KErrNone);
-        TRAPD(err, iLogMessage->GetFileToPostL(&FileSize));
-        if( err )
-	        {
-	        // failed to open the file to be posted hence cancel the request
-	        CleanupStack::PopAndDestroy(&method);
-	        iHttpTransaction.Close();
-	        return KErrCouldNotConnect;
-	        }
-        TBuf8<KBufflengthMaxLength> bufflength;
-        _LIT8(KFormat,"%d");
-        bufflength.Format(KFormat,FileSize);
-        aRequestInfo.iContentType.Copy(KPostContentType);
-        RHTTPRequest LogRequest;
-        LogRequest = iHttpTransaction.Request();
-        LogRequest.SetBody((MHTTPDataSupplier&) *iLogMessage);
-        RHTTPHeaders header = iHttpTransaction.Request().GetHeaderCollection();
-        SetHeaderL(header,HTTP::EContentType,aRequestInfo.iContentType );
-        SetHeaderL(header,HTTP::EContentLength,bufflength);
-        }
-
-
-     // Setup the headers for the HTTP request
-    BuildHeadersL(aRequestInfo);
-  
-    // Submit the transaction. After this the framework will give transaction
-    // events via MHFRunL and MHFRunError.
-    iHttpTransaction.SubmitL();
-   
-#ifdef ENABLE_USAGE_REPORT_TEST  
-    if ( aRequestInfo.iMethod == EIRHttpPOST )
-        {
-        _LIT( KSentPrefix, "X__");
-        TFileName sentLogFileName(KDstFilePath);
-        sentLogFileName.Append(KSentPrefix);
-        sentLogFileName.Append(KGZipLogFileName);
-        sentLogFileName.Append(sendTime);
-        BaflUtils::RenameFile(iFs, dstFileName, sentLogFileName);      
-        }
-    iFs.Close();
-#endif    
-    
-    CleanupStack::PopAndDestroy( &method );
-    iRunning = ETrue;
-    IRLOG_INFO( "CIRHttpDataProvider::IssueHttpRequestL - Submitted HTTP request" );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::SetHttpContentType(TDesC& aContentType,TDesC& aCharSet)
-// Set the Http content type
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::SetHttpContentType( const TDesC &aContentType,
-    const TDesC &aCharSet )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::SetHttpContentType - Entering" );
-    iContentType.Copy( aContentType );
-    iCharSet.Copy( aCharSet );
-    IRLOG_DEBUG( "CIRHttpDataProvider::SetHttpContentType - Exiting." );
-    }
-
-
-void CIRHttpDataProvider::InitializeHttpDataProviderL()
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::InitializeHttpDataProviderL - Entering" );
-    iHttpSession.Close();
-    TRAPD( LeaveValue, iHttpSession.OpenL() );
-    if ( LeaveValue != KErrNone )
-        {
-        // Most common error; no access point configured, and session creation
-        // leaves with KErrNotFound.
-        // Load a string from the resource file and add the error code to string
-        User::Leave( LeaveValue );
-        }
-    // Set the HTTP connection properties
-    RStringPool strP = iHttpSession.StringPool();
-    RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo();
-    // RSocketServ Handle
-    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketServ,
-		RHTTPSession::GetTable() ),
-		THTTPHdrVal( iIRNetworkControllerHandle->GetIRSocketServer().Handle() ) );
-    // RConnection Handle
-    TInt connPtr = REINTERPRET_CAST( TInt,
-		&( iIRNetworkControllerHandle->GetIRConnection() ) );
-
-    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketConnection,
-		RHTTPSession::GetTable() ), THTTPHdrVal( connPtr ) );
-    // HTTP Version ( Specify that i am using HTTP/1.1
-
-	connInfo.SetPropertyL( strP.StringF( HTTP::EVersion,
-		RHTTPSession::GetTable() ),
-		THTTPHdrVal( strP.StringF( HTTP::EHttp11, RHTTPSession::GetTable() ) ) );
-
-	RStringF temp = strP.OpenFStringL( KAccept );
-    CleanupClosePushL( temp );
-    connInfo.SetPropertyL( strP.StringF( HTTP::EAccept,
-		RHTTPSession::GetTable() ), THTTPHdrVal( temp ) );
-
-	CleanupStack::PopAndDestroy( &temp );
-    iContentType.Copy( KDefaultContentType );
-    iCharSet.Copy( KDefaultCharSet );
-
-    IRLOG_DEBUG( "CIRHttpDataProvider::InitializeHttpDataProviderL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::MHFRunL()
-// Inherited from MHTTPTransactionCallback
-// Called by framework to pass transaction events.
-// ---------------------------------------------------------------------------
-//
-
-void CIRHttpDataProvider::MHFRunL( RHTTPTransaction aTransaction,
-    const THTTPEvent &aEvent )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunL - Entering." );
-    
-    switch ( aEvent.iStatus )
-        {
-        case THTTPEvent::EGotResponseHeaders:
-            {
-            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - THTTPEvent::EGotResponseHeaders" );
-            IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNL--HEADERS",KNullDesC);
-            // HTTP response headers have been received. Use
-            // aTransaction.Response() to get the response. However, it's not
-            // necessary to do anything with the response when this event occurs.
-            // Get HTTP status code from header (e.g. 200)
-            RHTTPResponse resp = aTransaction.Response();
-            iStatusCode = resp.StatusCode();
-            // Get status text (e.g. "OK")
-            iStatusText.Copy(
-				( const unsigned short int* )resp.StatusText().DesC().Ptr(),
-				iStatusText.MaxLength() );
-            // Extract header field names and value
-	            	ExtractResponseHeadersL( aTransaction );
-	        // Validate the status code
-            ValidateStatusCode( iStatusCode );
-            }
-        break;
-        case THTTPEvent::EGotResponseBodyData:
-            {
-            // Part  of response's body data received. Use
-            // aTransaction.Response().Body()->GetNextDataPart() to get the actual
-            // body data.
-            // Get the body data supplier
-            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - THTTPEvent::EGotResponseBodyData" );
-            MHTTPDataSupplier *body = aTransaction.Response().Body();
-            TPtrC8 dataChunk;
-            body->GetNextDataPart( dataChunk );
-            iObserver.HttpBodyReceived( dataChunk );
-            // To release the body data.
-            body->ReleaseData();
-            }
-        break;
-        case THTTPEvent::ESucceeded:
-            {
-            IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNL--SUCCEEDED",KNullDesC);
-            // Transaction can be closed now. It's not needed anymore.
-            aTransaction.Close();
-            iRunning = EFalse;
-            iObserver.HttpEventComplete();
-            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - THTTPEvent::ESucceeded" );
-            }
-        break;
-        case THTTPEvent::EFailed:
-            {
-            IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNL--FAILED",KNullDesC);
-            // Transaction completed with failure.
-            aTransaction.Close();
-            iRunning = EFalse;
-            iObserver.HttpTransactionError( iStatusCode );
-            IRLOG_ERROR2( "CIRHttpDataProvider::MHFRunL - THTTPEvent::EFailed (status=%d)", iStatusCode );
-            }
-        break;
-       case THTTPEvent::ENotifyNewRequestBodyPart:
-            {
-            iLogMessage->ReleaseData();
-            }
-            break;
-        case KServiceUnavailable:
-	        {
-			IRRDEBUG2("MHFRunl:KServiceUnavailable",KNullDesC);
-			aTransaction.Close();
-            iRunning = EFalse;
-			iObserver.HttpTransactionError(KServiceUnavailable);
-	        }
-	        break;
-		case KDndTimedOut:      
-				{
-                IRRDEBUG2("MHFRunL :KDndTimedOut ",KNullDesC);
-      			// Just close the transaction on errors
-                aTransaction.Close();
-                iRunning = EFalse;
-				iObserver.HttpTransactionError(KDndTimedOut);	
-				}   
-				break;      
-        default:
-            // There are more events in THTTPEvent,
-            // Which is needed can be implemented incase required
-            // by the HTTP Data Provider
-                {
-                IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNL--DEFAULT",KNullDesC);
-                if ( aEvent.iStatus < 0 )
-                    {
-                    IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNL %d",aEvent.iStatus);
-                    // Just close the transaction on errors
-                    aTransaction.Close();
-                    iRunning = EFalse;
-                    iObserver.HttpTransactionError( iStatusCode );
-                    }
-                // Other events are not errors
-				// (e.g. permanent and temporary redirections)
-				// ignore such errors
-                }
-            break;
-        }
-    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::MHFRunError()
-// Inherited from MHTTPTransactionCallback
-// Called by framework to pass transaction errors
-// ---------------------------------------------------------------------------
-//
-TInt CIRHttpDataProvider::MHFRunError( TInt /* aError*/,
-    RHTTPTransaction /*aTransaction*/, const THTTPEvent & /*aEvent*/ )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunError - Entering" );
-    IRRDEBUG2("CIRHTTPDATAPROVIDER::MHFRUNERROR",KNullDesC);
-    // Handle error and return KErrNone.
-    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunError - Exiting." );
-    return KErrNone;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::ExtractResponseHeadersL( RHTTPTransaction aTransaction )
-// Used to Extract the response headers.
-// ---------------------------------------------------------------------------
-//
-
-void CIRHttpDataProvider::ExtractResponseHeadersL(const RHTTPTransaction&
-	aTransaction )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Entering" );
-    RHTTPResponse response = aTransaction.Response();
-    RHTTPHeaders respHeader = response.GetHeaderCollection();
-    THTTPHdrFieldIter iterator = respHeader.Fields();
-    RStringPool httpStringPool = aTransaction.Session().StringPool();
-    iterator.First();
-    HBufC8 *headerField = HBufC8::NewLC( KMaxHeaderNameLength +
-		KMaxHeaderValueLength );
-    HBufC8 *fieldValBuf = HBufC8::NewLC( KMaxHeaderValueLength );
-    while ( iterator.AtEnd() == EFalse )
-        {
-        RStringTokenF fieldName = iterator();
-        RStringF fieldNameStr = httpStringPool.StringF( fieldName );
-        THTTPHdrVal fieldVal;
-        if ( respHeader.GetField( fieldNameStr, 0, fieldVal ) == KErrNone )
-            {
-            const TDesC8 &fieldNameDesC = fieldNameStr.DesC();
-            headerField->Des().Copy( fieldNameDesC.Left(
-				KMaxHeaderNameLength ) );
-            fieldValBuf->Des().Zero();
-            switch ( fieldVal.Type() )
-                {
-                // the value is an integer
-                //lint restore -e747:Significant prototype
-                //coercion (arg. no. 1) int to long long  :
-                case THTTPHdrVal::KTIntVal: fieldValBuf->Des().Num(
-					fieldVal.Int() );
-                break;
-                // the value is a case-insensitive string
-                case THTTPHdrVal::KStrFVal:
-                    {
-                    RStringF fieldValStr = httpStringPool.StringF(
-						fieldVal.StrF() );
-                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
-                    fieldValBuf->Des().Copy( fieldValDesC.Left(
-						KMaxHeaderValueLength ) );
-                    }
-                break;
-                // the value is a case-sensitive string
-                case THTTPHdrVal::KStrVal:
-                    {
-                    RString fieldValStr = httpStringPool.String(
-						fieldVal.Str() );
-                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
-                    fieldValBuf->Des().Copy( fieldValDesC.Left(
-						KMaxHeaderValueLength ) );
-                    }
-                break;
-                // the value is a date/time
-                case THTTPHdrVal::KDateVal:
-                    {
-                    TDateTime date = fieldVal.DateTime();
-                    TTime t( date );
-                    if ( !iSetNonUAProfUserAgent )
-       					{
-       		            iObserver.HttpDateHeaderReceived( *headerField ,t );
-       					}
-                    }
-                break;
-                // the value is type is unknown
-                default:
-                    break;
-                }
-            // Display HTTP header field name and value
-            headerField->Des().Append( KDPColon );
-            headerField->Des().Append( *fieldValBuf );
-            iObserver.HttpHeaderReceived( *headerField );
-            }
-        ++iterator;
-        }
-    
-    CleanupStack::PopAndDestroy( fieldValBuf );
-    CleanupStack::PopAndDestroy( headerField );
-    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::SetHeaderL( RHTTPHeaders aHeaders, TInt aHeaderField,
-// const TDesC8& aHeaderValue )
-// Used to set the Http header
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::SetHeaderL( RHTTPHeaders aHeaders,
-    TInt aHeaderField, const TDesC8 &aHeaderValue ) const
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::SetHeaderL - Entering" );
-    RStringF valStr = iHttpSession.StringPool().OpenFStringL( aHeaderValue );
-    CleanupClosePushL( valStr );
-    THTTPHdrVal val( valStr );
-    aHeaders.SetFieldL( iHttpSession.StringPool().StringF( aHeaderField,
-		RHTTPSession::GetTable() ), val );
-    CleanupStack::PopAndDestroy( &valStr );
-    IRLOG_DEBUG( "CIRHttpDataProvider::SetHeaderL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::BuildHeadersL(CIRHttpRequestData &aRequestInfo)
-//  Build the headers for the request
-// ---------------------------------------------------------------------------
-//
-
-void CIRHttpDataProvider::BuildHeadersL(const CIRHttpRequestData &aRequestInfo)
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - Entering" );
-    RBuf logstr;
-    logstr.Create(KMaxSize);
-    logstr.CleanupClosePushL();
-     // Set headers for request; user agent and accepted content type
-    RHTTPHeaders header = iHttpTransaction.Request().GetHeaderCollection();
-
-     SetHeaderL( header, HTTP::EAccept, KAccept );
-     logstr.Copy(KAccept);
-    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAccept = %S", &logstr );
-
-       // Set the User-Agent header to UAProf string
-       SetHeaderL( header, HTTP::EUserAgent,
-		   iIRNetworkControllerHandle->GetUAProfString()->Des() );
-       logstr.Copy(iIRNetworkControllerHandle->GetUAProfString()->Des());
-    IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - HTTP::EUserAgent =");		   
-    TInt logstrLenth = logstr.Length();
-    TBuf<KLogbufferLenth> tempStr;
-    TInt index = 0;
-    while( logstrLenth > 0 )
-      {
-      if( logstrLenth > KLogbufferLenth )
-          {
-          tempStr.Copy( &logstr[index], KLogbufferLenth );
-          }
-      else
-          {
-          tempStr.Copy( &logstr[index], logstrLenth );
-          }
-      IRLOG_DEBUG2( "%S", &tempStr ); 
-      index += KLogbufferLenth;
-      logstrLenth -= KLogbufferLenth;
-      }  
-       // Set the Accept Character set header
-   SetHeaderL( header, HTTP::EAcceptCharset, KAcceptCharset );
-   logstr.Copy(KAcceptCharset);
-    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptCharset = %S", &logstr );
-
-    // Set the Accept-Language header as specified in aRequestInfo
-   if ( aRequestInfo.iAcceptLanguage.Length() != 0 )
-        {
-        SetHeaderL( header, HTTP::EAcceptLanguage,
-			aRequestInfo.iAcceptLanguage );
-        logstr.Copy(aRequestInfo.iAcceptLanguage);
-	    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptLanguage = %S", &logstr );
-        }
-    // If not specified then set the default accept language as "en"
-   else
-        {
-        SetHeaderL( header, HTTP::EAcceptLanguage, KAcceptLanguage );
-        logstr.Copy(KAcceptLanguage);
-        IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptLanguage = %S", &logstr );
-        }
-
-    // Add Accept-Encoding: gzip HTTP request header. The server will use compression to improve data
-	// transfer speed.
-    SetHeaderL( header, HTTP::EAcceptEncoding, KAcceptEncoding );
-    logstr.Copy(KAcceptEncoding);
-    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptEncoding = %S", &logstr );
-
-    // Set the If-Modified-Since header if required
-   if ( aRequestInfo.isIfModifiedSet )
-        {
-        THTTPHdrVal val( aRequestInfo.iIfModifiedSince );
-        header.SetFieldL( iHttpSession.StringPool().StringF(
-			HTTP::EIfModifiedSince, RHTTPSession::GetTable() ), val );
-        }
-
-    // Set the x-wap-profile header
-
-   TBuf8<KWapProfileMaxLength> xWapProfile;
-   _LIT(KXWapProfile,"x-wap-profile");
-   xWapProfile.Copy(KXWapProfile);
-   RStringF xWapProfileString  = iHttpSession.StringPool().OpenFStringL(
-	   xWapProfile  );
-   RStringF xWapProfileValueString  = iHttpSession.StringPool().OpenFStringL(
-	   iIRNetworkControllerHandle->GetWapProfString()->Des()  );
-   logstr.Copy(iIRNetworkControllerHandle->GetWapProfString()->Des());
-   IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - x-wap-profile =");   
-   logstrLenth = logstr.Length();
-   index = 0;
-   while( logstrLenth > 0 )
-      {
-      if( logstrLenth > KLogbufferLenth )
-          {
-          tempStr.Copy( &logstr[index], KLogbufferLenth );
-          }
-      else
-          {
-          tempStr.Copy( &logstr[index], logstrLenth );
-          }
-      IRLOG_DEBUG2( "%S", &tempStr ); 
-      index += KLogbufferLenth;
-      logstrLenth -= KLogbufferLenth;
-      }  
-   
-   THTTPHdrVal xWapProfileHeader(xWapProfileValueString  );
-   header.SetFieldL(xWapProfileString, xWapProfileHeader);
-   xWapProfileString.Close();
-   xWapProfileValueString.Close();
-   
-   
-   
-   
-   ////////////////////////////////////////////////////////////////////////////////
-   
-   //this piece of code is to get the MIME types supported by a device
-	TInt i,ii,j;
-    CMMFControllerPluginSelectionParameters *cs=CMMFControllerPluginSelectionParameters::NewLC();
-    CMMFFormatSelectionParameters * fs = CMMFFormatSelectionParameters::NewLC();
-    cs->SetRequiredPlayFormatSupportL(*fs);
-    cs->SetRequiredRecordFormatSupportL(*fs);
-    
-    RMMFControllerImplInfoArray controllers;
-    CleanupResetAndDestroyPushL(controllers);
-    cs->ListImplementationsL(controllers);
-    
-    TInt contrCount = controllers.Count();
-    RBuf8 audioMIMEs;
-    audioMIMEs.Create(KSize);
-    RBuf audioBuf;
-    audioBuf.Create(KBufSize);
-    _LIT(KAudio,"audio");
-    audioBuf.Copy(KAudio);
-    for(i=0;i<controllers.Count();i++)
-        {
-        if( KUidHelixController == controllers[i]->Uid() )
-            {
-        //supported play formats
-        const RMMFFormatImplInfoArray &pf=controllers[i]->PlayFormats();
-		TInt pfCount = pf.Count();
-        for(ii=0;ii<pf.Count();ii++)
-            {
-            RBuf z;
-            RBuf z1;
-            TBool first;
-            //file extensions
-            const CDesC8Array &fe=pf[ii]->SupportedFileExtensions();
-            first=TRUE;
-            z.CreateL(KSize);
-            z.CleanupClosePushL();
-            z1.CreateL(KSize);
-            z1.CleanupClosePushL();
-            z1.Zero();
-            for(j=0;j<fe.Count();j++)
-                {
-                _LIT(KNone,", ");
-                if(!first)z1.Append(KNone);
-                first=FALSE;
-                z.Copy(fe[j]);
-                z1.Append(z);
-                };
-            
-            //MIME types
-            const CDesC8Array &mt=pf[ii]->SupportedMimeTypes();
-            first=TRUE;
-            z1.Zero();
-            TInt tempD = 0;
-            for(j=0;j<mt.Count();j++)
-                {
-                z.Copy(mt[j]);
-                TInt res = z.Find(audioBuf);
-                if(res != KErrNotFound)
-	                {
-	                if(!first)
-		                {
-		                _LIT(KNone,", ");
-		                z1.Append(KNone);
-		                }
-                	first=FALSE;
-                	z1.Append(z);
-                	audioMIMEs.Append(z);
-                	if(j==mt.Count() && ii==pf.Count() && i==controllers.Count() )
-	                	{
-						//do nothing
-	                	}
-	                else 
-	                	{
-	                	_LIT(KComma,",");
-	                	audioMIMEs.Append(KComma);
-	                	}
-                	tempD++;	                	
-	                }
-                };
-            CleanupStack::PopAndDestroy(2);
-            };// for play formats
-            }
-   
-        };
-	audioBuf.Close();
-    CleanupStack::PopAndDestroy(1);//controllers
-    CleanupStack::PopAndDestroy(fs);
-    CleanupStack::PopAndDestroy(cs);
-	
-   
-  /////////////////////////////////////////////////////////////////////////////////  
-   
-   
-   
-   // Set the X-Nokia-iRAPP-Accept header
-
-   TBuf8<KNokiaIrAppAcceptMaxLength> xNokiaIrAppAccept;
-   _LIT(KXNokiaIrAppAccept,"X-Nokia-iRAPP-Accept");
-   xNokiaIrAppAccept.Copy(KXNokiaIrAppAccept);
-   RStringF xNokiaIrAppAcceptString  = iHttpSession.StringPool().OpenFStringL(
-	   xNokiaIrAppAccept  );
-   RStringF xNokiaIrAppAcceptValueString  = iHttpSession.StringPool().OpenFStringL(
-	    audioMIMEs );
-   logstr.Copy(audioMIMEs);
-   IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - X-Nokia-iRAPP-Accept =" );
-   logstrLenth = logstr.Length();
-   index = 0;
-   while( logstrLenth > 0 )
-      {
-      if( logstrLenth > KLogbufferLenth )
-          {
-          tempStr.Copy( &logstr[index], KLogbufferLenth );
-          }
-      else
-          {
-          tempStr.Copy( &logstr[index], logstrLenth );
-          }
-      IRLOG_DEBUG2( "%S", &tempStr ); 
-      index += KLogbufferLenth;
-      logstrLenth -= KLogbufferLenth;
-      }     
-   THTTPHdrVal xNokiaIrAppAcceptHeader(xNokiaIrAppAcceptValueString  );
-   header.SetFieldL(xNokiaIrAppAcceptString, xNokiaIrAppAcceptHeader);
-   xNokiaIrAppAcceptString.Close();
-   xNokiaIrAppAcceptValueString.Close();
-   
-   
-   audioMIMEs.Close();
-   
-   CleanupStack::PopAndDestroy(&logstr);
-   IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - Exiting." );
-   }
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::ValidateStatusCode(TInt aStatusCode)
-// Validate the status code returned
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::ValidateStatusCode( TInt aStatusCode )
-    { 
-    IRLOG_DEBUG( "CIRHttpDataProvider::ValidateStatusCode- Entering" );
-    // Callbacks will be provided as and when the call handling in UI is ready
-    switch ( aStatusCode )
-        {
-        case KOk:
-            {
-            }
-            break;
-
-        case KCreated:
-            {
-            }
-            break;
-
-        case KAccepted:
-            {
-            }
-            break;
-
-        case KNonAuthoritativeInformation:
-            {
-            }
-            break;
-
-        case KNoContent:
-            {
-            }
-            break;
-
-        case KResetContent:
-            {
-            }
-            break;
-
-        case KPartialContent:
-            {
-            }
-            break;
-
-            /*
-            Redirection 3xx status codes
-             */
-        case KMultipleChoices:
-            {
-            }
-            break;
-
-        case KMovedPermanently:
-            {
-            }
-            break;
-
-        case KFound:
-            {
-            }
-            break;
-
-        case KSeeOther:
-            {
-            }
-            break;
-
-        case KNotModified:
-                {
-                iNotModified = ETrue;
-                iObserver.HttpResponseCodeRecieved( KNotModified );
-                }
-            break;
-
-        case KUseProxy:
-            {
-            }
-            break;
-
-            /*
-            This status code is not used as per RFC 2616
-            const TInt KUnused = 306
-             */
-        case KTemporaryRedirect:
-            {
-            }
-            break;
-
-            /*
-            Client Error 4xx status codes
-             */
-        case KBadRequest:
-            {
-            }
-            break;
-
-        case KUnauthorized:
-            {
-            }
-            break;
-
-        case KPaymentRequired:
-            {
-            }
-            break;
-
-        case KForbidden:
-            {
-            }
-            break;
-
-        case KNotFound:
-                {
-                iObserver.HttpResponseCodeRecieved( KNotFound );
-                }
-            break;
-
-        case KMethodNotAllowed:
-            {
-            }
-            break;
-
-        case KNotAcceptable:
-            {
-            }
-            break;
-
-        case KProxyAuthenticationRequired:
-            {
-            }
-            break;
-
-        case KRequestTimeout:
-            {
-            }
-            break;
-
-        case KConflict:
-            {
-            }
-            break;
-
-        case KGone:
-            {
-            }
-            break;
-
-        case KLengthRequired:
-            {
-            }
-            break;
-
-        case KPreconditionFailed:
-            {
-            }
-            break;
-
-        case KRequestEntityTooLarge:
-            {
-            }
-            break;
-
-        case KRequestURITooLong:
-            {
-            }
-            break;
-
-        case KUnsupportedMediaType:
-            {
-            }
-            break;
-
-        case KRequestedRangeNotSatisfiable:
-            {
-            }
-            break;
-
-        case KExpectationFailed:
-            {
-            }
-            break;
-
-            /*
-            Server Error 5xx status codes
-             */
-        case KInternalServerError:
-            {
-            }
-            break;
-
-        case KNotImplemented:
-            {
-            }
-            break;
-
-        case KBadGateway:
-            {
-            }
-            break;
-
-        case KServiceUnavailable:
-            {
-            }
-            break;
-
-        case KGatewayTimeout:
-            {
-            }
-            break;
-
-        case KHTTPVersionNotSupported:
-            {
-            }
-            break;
-
-        default:
-        	break;
-
-    } // End of switch(aStatusCode)
-    IRLOG_DEBUG( "CIRHttpDataProvider::ValidateStatusCode - Exiting." );
-} // ValidateStatusCode(TInt aStatusCode)
-
-
-// ---------------------------------------------------------------------------
-// CIRHttpDataProvider::ReleaseResources()
-// Used to free all resources
-// ---------------------------------------------------------------------------
-//
-void CIRHttpDataProvider::ReleaseResources()
-	{
-	IRLOG_DEBUG( "CIRHttpDataProvider::ReleaseResources - Entering" );
-	iLogoDownloadEngine->ReleaseResources();
-	CancelTransaction();
-	iHttpSession.Close();
-    iFirstTime = ETrue;
-    IRLOG_DEBUG( "CIRHttpDataProvider::ReleaseResources - Exiting." );
-	}
-
-
-
- 
--- a/internetradio2.0/dataprovidersrc/irhttppost.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +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 <coemain.h>
-
-#include "irdebug.h"
-#include "irhttppost.h"
-#include "irsettings.h"
-#include "irreportsettings.h"
-
-// Maximum data part size.
-const TInt KMaxSubmitSize = 1024;
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::NewL()
-// First phase constructor
-//----------------------------------------------------------------------------
-//
-CIRHttpPost* CIRHttpPost::NewL( const RHTTPTransaction& aHttpTransaction )
-	{
-	IRLOG_DEBUG( "CIRHttpPost::NewL - Entering" );
-	CIRHttpPost* self = new( ELeave ) CIRHttpPost( aHttpTransaction );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRHttpPost::NewL - Exiting" );
-	return self;
-	}
-//----------------------------------------------------------------------------
-// CIRHttpPost::ConstructL()
-// 2nd phase constructor
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRHttpPost::ConstructL - Entering" );
-	iSettings = CIRSettings::OpenL();
-	IRLOG_DEBUG( "CIRHttpPost::ConstructL - Exiting" );
-	}
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::GetDataPartFromFileL()
-// Read one data part from browse log file.
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::GetDataPartFromFileL( TDes8& aDataPart )
-    {
-    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Entering" );
-    
-    // Count data size to be read
-    TInt offset = KMaxSubmitSize;
-    if ( iStartPos + offset > iTotalsize )
-        {
-        offset = iRemainingLength ;
-        }
-
-    // Read data part from file
-    User::LeaveIfError( iLogFile.Read( iStartPos, aDataPart, offset ) );
-    
-    // Count remaining data size
-    iStartPos += offset;
-    iRemainingLength -= offset;
-
-    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Exiting" );
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::CIRHttpPost()
-// C++ constructor.
-//----------------------------------------------------------------------------
-//
-CIRHttpPost::CIRHttpPost( const RHTTPTransaction& aHttpTransaction )
-    {
-    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Entering" );
-    iTransaction = aHttpTransaction;
-    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Exiting" );
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::~CIRHttpPost()
-// Destructor.
-//----------------------------------------------------------------------------
-//
-CIRHttpPost::~CIRHttpPost()
-    {
-    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Entering" );
-    iPartPostBuffer.Close();
-    iLogFile.Close();
-    if ( iSettings )
-        {
-        iSettings->Close();
-        }
-    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Exit" );
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::CloseLogFile ()
-// Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::CloseLogFile ()
-    {
-    IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Entering" );
-	iLogFile.Close ();
-	IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Exiting" );
-    }
-
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::GetNextDataPart()
-// Obtains a data part from the supplier.
-//----------------------------------------------------------------------------
-//        
-TBool CIRHttpPost::GetNextDataPart( TPtrC8& aDataPart )
-    {
-    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Entering" );
-    TBool retVal( EFalse ); // Default: several data parts
-
-    // Get data part from browse log file
-    iPartPostBuffer.Delete( 0, iPartPostBuffer.Length() );
-    TRAPD( err, GetDataPartFromFileL( iPartPostBuffer ) )
-    if ( KErrNone == err )
-        {
-        // Set data part.
-        aDataPart.Set( iPartPostBuffer );
-        if ( iRemainingLength <= 0 )
-            {
-            // Last data part.
-            retVal = ETrue;
-            iLogFile.Close();
-            }
-        }
-    else
-        {
-        // Last data part.
-        iRemainingLength = 0;
-        retVal = ETrue;
-        iLogFile.Close();
-        }
-
-
-    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Exiting" );
-    return retVal;
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::ReleaseData()
-// Releases the current data part being held at the data supplier.
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::ReleaseData()
-    {
-    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Entering" );
-    if ( iRemainingLength > 0 )
-        {
-        TRAP_IGNORE( iTransaction.NotifyNewRequestBodyPartL() )
-        }
-    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Exiting" );
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::OverallDataSize()
-// Obtains the overall size of the data being supplied.
-//----------------------------------------------------------------------------
-//
-TInt CIRHttpPost::OverallDataSize()
-    {
-    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Entering" );
-    TInt retVal( KErrNotFound );
-    if ( iTotalsize > 0 )
-        {    
-		retVal = iTotalsize;
-        }
-    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Exiting" );
-    return retVal; 
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::Reset()
-// Resets the data supplier.
-//----------------------------------------------------------------------------
-//
-TInt CIRHttpPost::Reset()
-    {
-    IRLOG_DEBUG( "CIRHttpPost::Reset - Entering" );
-    iStartPos = 0;
-    iRemainingLength = iTotalsize;
-    IRLOG_DEBUG( "CIRHttpPost::Reset - Exiting" );
-    return KErrNone;
-    }
-
-//----------------------------------------------------------------------------
-// CIRHttpPost::GetFileToPostL()
-// Gets browse log file size.
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::GetFileToPostL(TInt *aFileSize)
-    {
-    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Entering" );
-
-    TFileName filePath = iSettings->PrivatePath();
-    filePath.Append( KGZipLogFileName );
-    
-    iPartPostBuffer.Close();
-    iPartPostBuffer.Create( KMaxSubmitSize );
-
-    User::LeaveIfError(
-    	iLogFile.Open( CCoeEnv::Static()->FsSession(), filePath, EFileRead ) );
-    User::LeaveIfError( iLogFile.Size( iTotalsize ) );
-    *aFileSize = iTotalsize;
-    
-    Reset();
-
-    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Exiting." );
-    }
-    
-//----------------------------------------------------------------------------
-// CIRHttpPost::SetTransaction()
-// Set the transaction.
-//----------------------------------------------------------------------------
-//
-void CIRHttpPost::SetTransaction( const RHTTPTransaction& aHttpTransaction )
-    {
-    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Entering." );
-    iTransaction = aHttpTransaction;
-    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Exiting." );
-    }
-
-// End of file
--- a/internetradio2.0/dataprovidersrc/irlogodownloadengine.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1587 +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:  Engine to fetch the logos 
-*
-*/
-
-
-#include <aknnotewrappers.h> 
-
-#include "irlogodownloadengine.h"
-#include "irnetworkcontroller.h"
-#include "ircachemgmt.h"
-#include "irhttprequestdata.h"
-#include "irdebug.h"
-#include "irdataproviderconstants.h"
-#include "iractivenetworkobserver.h"
-
-
-
-_LIT(KLogoX, "?x=");
-_LIT(KLogoY, "&y=");
-const TInt KPresetsArrayMaxLength = 50;
-const TInt KLogoSize = 59;
-const TInt KParameterSize = 12;
-const TInt KTen = 10;
-const TInt KCacheAvailable = 4;
-const TInt KLogo = 4;
-const TInt KStatusOK = 200;
-const TInt KStatusMultipleChoices = 300;
-const TInt KStatusNotModified = 304;
-const TInt KStatusGatewayTimeout = 504;
-
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::NewL()
-// Creates instance of CIRLogoDownloadEngine.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRLogoDownloadEngine* CIRLogoDownloadEngine::NewL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::NewL - Entering" );
-    CIRLogoDownloadEngine* self = new(ELeave) CIRLogoDownloadEngine();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRLogoDownloadEngine::NewL - Exiting" );
-    return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::CIRLogoDownloadEngine()
-// Standard C++ constructor
-// ---------------------------------------------------------------------------
-//
-CIRLogoDownloadEngine::CIRLogoDownloadEngine()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CIRLogoDownloadEngine " );
-	//code here, if needed
-	}
-	
-	
-	
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::~CIRLogoDownloadEngine()
-// Destructs instance of CIRLogoDownloadEngine.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRLogoDownloadEngine::~CIRLogoDownloadEngine()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::~CIRLogoDownloadEngine - Entering" );
-    if(iReqBody)
-    	{
-    	delete iReqBody;
-    	iReqBody = NULL;
-    	}
-    if(iRespBody)
-    	{
-    	delete iRespBody;
-    	iRespBody = NULL;
-    	}
-	CancelTransaction();
-	iLogoSession.Close();
-	
-	if(iCopyPreset)
-		{
-		delete iCopyPreset;
-		}
-	if(iCacheTempPreset)
-		{
-		delete iCacheTempPreset;			
-		}
-	if(iTempPreset)
-		{
-		delete iTempPreset;			
-		}
-	if(iPresetArray)
-		{
-		iPresetArray->ResetAndDestroy();
-		}
-	delete iPresetArray;
-	if(iObserverArray)
-		{
-		delete iObserverArray;
-		iObserverArray = NULL;
-		}
-	if(iReqFromArray)
-		{
-		delete iReqFromArray;
-		iReqFromArray = NULL;
-		}
-	if(iCachePresetArray)
-		{
-		iCachePresetArray->ResetAndDestroy();
-		}
-	delete iCachePresetArray;
-	if(iCacheObserverArray)
-		{
-		delete iCacheObserverArray;
-		iCacheObserverArray = NULL;
-		}
-	if(iCacheReqFromArray)
-		{
-		delete iCacheReqFromArray;
-		iCacheReqFromArray = NULL;
-		}
-	if(iIRNetworkControllerHandle)
-    	{
-    	iIRNetworkControllerHandle->DeleteActiveNetworkObserver(*this);
-    	iIRNetworkControllerHandle->Close();
-        }		
-    if (iCache)
-	    {
-	    iCache->RemoveObserver(this);
-	    iCache->Close();
-	    }
-	if( iResponseHeaders )
-		{
-        delete iResponseHeaders;
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::~CIRLogoDownloadEngine - Exiting" );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::ConstructL()
-// 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ConstructL - Entering" );
-	iPresetArray = new (ELeave) CArrayPtrFlat<CIRIsdsPreset>(KPresetsArrayMaxLength);
-	iObserverArray = new (ELeave) CArrayPtrFlat<MLogoDownloadObserver>(KPresetsArrayMaxLength);
-	iReqFromArray = new (ELeave) CArrayFixFlat<TInt>(KPresetsArrayMaxLength);
-	iCachePresetArray = new (ELeave) CArrayPtrFlat<CIRIsdsPreset>(KPresetsArrayMaxLength);
-	iCacheObserverArray = new (ELeave) CArrayPtrFlat<MLogoDownloadObserver>(KPresetsArrayMaxLength);
-	iCacheReqFromArray = new (ELeave) CArrayFixFlat<TInt>(KPresetsArrayMaxLength);
-	
-	iPresetArrayPos = 0;
-	iReqFromArrayPos = 0;
-	iObserverArrayPos = 0;
-	iCachePresetArrayPos = 0;
-	iCacheReqFromArrayPos = 0;
-	iCacheObserverArrayPos = 0;
-	iImageIndex = 0; //using temporarily till the isds provides urls
-
-	iPresetModifiedStatus = EFalse;
-	iFirstTime = ETrue;
-	iIRNetworkControllerHandle = CIRNetworkController::OpenL();
-	iIRNetworkControllerHandle->RegisterActiveNetworkObserverL(*this);
-	iCache = CIRCacheMgmt::OpenL(*this);
-	iCache->AddObserverL(this);
-	iResponseHeaders = new ( ELeave ) CIRHttpResponseData;
-
-	//change to use the new session for logo downloading
-	TRAPD( LeaveValue, iLogoSession.OpenL() );
-    if ( LeaveValue != KErrNone )
-        {
-        // Most common error; no access point configured, and session creation
-        // leaves with KErrNotFound.
-        // Load a string from the resource file and add the error code to string
-        User::Leave( LeaveValue );
-        }
-    IRLOG_DEBUG( "CIRLogoDownloadEngine::ConstructL - Exiting" );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::IsRunning()
-// To know the status of downloading logo
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRLogoDownloadEngine::IsRunning() const
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::IsRunning" );
-    return iRunning;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField,
-//                              const TDesC8& aHdrValue)
-// to set the headers of the http transaction
-// ---------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField,
-					 const TDesC8& aHdrValue) const
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SetHeaderL - Entering" );
-	RStringF valStr = iLogoSession.StringPool().OpenFStringL(aHdrValue);
-	CleanupClosePushL(valStr);
-	THTTPHdrVal val(valStr);
-	aHeaders.SetFieldL(iLogoSession.StringPool().StringF(aHdrField, RHTTPSession::GetTable()), val);
-	CleanupStack::PopAndDestroy(&valStr); // valStr
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SetHeaderL - Exiting" );
-	}
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::SendRequestL(CIRIsdsPreset* aPreset,TInt aXValue,TInt aYValue)
-// API is called from the SearchResultsView for to download logo while doing Add to Favorites
-// ----------------------------------------------------------------------------------
-//
-EXPORT_C void CIRLogoDownloadEngine::SendRequestL(CIRIsdsPreset* aPreset,TInt aXValue,TInt aYValue)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Entering" );
-	if(!iCheckingCache)
-		{
-		++iImageIndex;
-		iCheckingCache = ETrue;
-		iCacheReqFrom = 0;
-		if(iCacheTempPreset)
-			{
-			delete iCacheTempPreset;				
-			}
-		iCacheTempPreset = NULL;
-		iCacheTempPreset = CIRIsdsPreset::NewL();
-		*iCacheTempPreset = *aPreset;
-
-		if(iCacheTempPreset->GetImgUrl().Length() != 0)
-			{
-			if((aXValue > 0)&&(aYValue > 0))
-				{
-				//Append the parameters(width,height) of the logo size to imgUrl
-				TInt size = iCacheTempPreset->GetImgUrl().Length() + KParameterSize;
-				RBuf urlWithSize;
-				urlWithSize.Create(size);
-				urlWithSize.Copy(iCacheTempPreset->GetImgUrl());
-				urlWithSize.Append(KLogoX);
-				urlWithSize.AppendNum(aXValue);
-				urlWithSize.Append(KLogoY);
-				urlWithSize.AppendNum(aYValue);
-				
-				//set the imgUrl with parameters to the preset
-				iCacheTempPreset->SetImgUrl(urlWithSize);
-				urlWithSize.Close();
-				}
-			//This method checks whether the logo is available
- 			// for the request made
-			iForceGet = EFalse; 			
-			CheckCacheForLogoL(0);
-			}
-		else
-			{
-			//imgUrl doesnt exist in the Preset
-		    iCheckingCache = EFalse;
-			return;			
-			}
-
-		iCheckingCache = EFalse;
-		if(!iLogoCached)	
-			{
-			FetchLogoDataL(iCacheTempPreset);				
-			}
-		}
-	else
-		{
-		CIRIsdsPreset* tempPreset;
-		tempPreset = CIRIsdsPreset::NewL();
-		*tempPreset = *aPreset;
-		if(tempPreset->GetImgUrl().Length() != 0)
-			{
-			if((aXValue > 0)&&(aYValue > 0))
-				{
-				//Append the parameters(width,height) of the logo size to imgUrl
-				TInt size = tempPreset->GetImgUrl().Length() + KParameterSize;
-				RBuf urlWithSize;
-				urlWithSize.Create(size);
-				urlWithSize.Copy(tempPreset->GetImgUrl());
-				urlWithSize.Append(KLogoX);
-				urlWithSize.AppendNum(aXValue);
-				urlWithSize.Append(KLogoY);
-				urlWithSize.AppendNum(aYValue);
-				
-				//set the imgUrl with parameters to the preset
-				tempPreset->SetImgUrl(urlWithSize);
-				urlWithSize.Close();				
-				}
-			}
-		iCachePresetArray->AppendL(tempPreset);
- 		iCacheReqFromArray->AppendL(0);	
-		}	
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Exiting" );
-	}
-
-
-EXPORT_C TBool CIRLogoDownloadEngine::isLogoCachedL(CIRIsdsPreset* aPreset, TInt aXValue, TInt aYValue)
-{
-    TInt cached = 0;
-    
-    if(iCacheTempPreset)
-    {
-        delete iCacheTempPreset;
-        iCacheTempPreset = NULL;
-    }
-    
-    iCacheTempPreset = CIRIsdsPreset::NewL();
-    *iCacheTempPreset = *aPreset;
-    iCacheReqMade = EFalse;
-    
-    if (iCacheTempPreset->GetImgUrl().Length() != 0)
-    {
-        if ((aXValue > 0) && (aYValue > 0))
-        {
-            //Append the parameters(width,height) of the logo size to imgUrl
-            TInt size = iCacheTempPreset->GetImgUrl().Length() + KParameterSize;
-            RBuf urlWithSize;
-            urlWithSize.Create(size);
-            urlWithSize.Copy(iCacheTempPreset->GetImgUrl());
-            urlWithSize.Append(KLogoX);
-            urlWithSize.AppendNum(aXValue);
-            urlWithSize.Append(KLogoY);
-            urlWithSize.AppendNum(aYValue);
-
-            //set the imgUrl with parameters to the preset
-            iCacheTempPreset->SetImgUrl(urlWithSize);
-            urlWithSize.Close();
-        }
-    }
-    
-    iCache->CheckCacheL(KLogo,iCacheTempPreset->GetImgUrl(),EFalse,cached);
-    
-    return (CIRCacheMgmt::ECacheUseable == cached)?ETrue:EFalse;     
-}
-// ----------------------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,
-//													TInt aNPVReq,TInt aXValue,TInt aYValue)
-// API is called from several views for to download logo 
-// ----------------------------------------------------------------------------------------------
-//
-EXPORT_C void CIRLogoDownloadEngine::SendRequestL(CIRIsdsPreset* aPreset,
-			MLogoDownloadObserver* aLogoHandle,TInt aNPVReq,TInt aXValue,TInt aYValue)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Entering" );
-	if(aPreset->GetChannelType()==0)
-		{
-		aLogoHandle->PresetLogoDownloadedL(aPreset);
-		}
-	else if(!iCheckingCache)
-		{
-		++iImageIndex;
-		iCheckingCache = ETrue;
-		if(aNPVReq==2)
-			{
-			iCacheReqFrom=2;			
-			}
-		else
-			{
-			iCacheReqFrom=1;			
-			}
-
-		if(iCacheTempPreset)
-			{
-			delete iCacheTempPreset;
-			iCacheTempPreset = NULL;				
-			}
-		iCacheTempPreset = CIRIsdsPreset::NewL();
-		*iCacheTempPreset = *aPreset;
-		iCacheTempLogoHandle = aLogoHandle;
-		
-		if(iCacheTempPreset->GetImgUrl().Length() != 0)
-			{
-			if((aXValue > 0)&&(aYValue > 0))
-				{
-				//Append the parameters(width,height) of the logo size to imgUrl
-				TInt size = iCacheTempPreset->GetImgUrl().Length() + KParameterSize;
-				RBuf urlWithSize;
-				urlWithSize.Create(size);
-				urlWithSize.Copy(iCacheTempPreset->GetImgUrl());
-				urlWithSize.Append(KLogoX);
-				urlWithSize.AppendNum(aXValue);
-				urlWithSize.Append(KLogoY);
-				urlWithSize.AppendNum(aYValue);
-				
-				//set the imgUrl with parameters to the preset
-				iCacheTempPreset->SetImgUrl(urlWithSize);
-				urlWithSize.Close();
-				}
-			if(iCacheReqFrom==1 || iCacheReqFrom==2)
-				{
-				//This method checks whether the logo is available
-		 		// for the request made
-				iForceGet = EFalse;		 		
-				CheckCacheForLogoL(0);	
-				}
-/*			else if(iCacheReqFrom==2)
-				{
-				//the request has come from NowPlayingView(NPV)
-				//dont check for logo availability in cache
-				//download the logo freshly
-				iLogoCached=EFalse;								
-				}
-*/			}
-		else
-			{
-			//imgUrl doesnt exist in the Preset
-		    iCheckingCache = EFalse;
-			return;			
-			}
-		
-		iCheckingCache = EFalse;
-		if(!iLogoCached)	
-			{
-			FetchLogoDataL(iCacheTempPreset,aLogoHandle,iCacheReqFrom);				
-			}
-		}
-	else
-		{
-		CIRIsdsPreset* tempPreset;
-		tempPreset = CIRIsdsPreset::NewL();
-		*tempPreset = *aPreset;
-		if(tempPreset->GetImgUrl().Length() != 0)
-			{
-			if((aXValue > 0)&&(aYValue > 0))
-				{
-				//Append the parameters(width,height) of the logo size to imgUrl
-				TInt size = tempPreset->GetImgUrl().Length() + KParameterSize;
-				RBuf urlWithSize;
-				urlWithSize.Create(size);
-				urlWithSize.Copy(tempPreset->GetImgUrl());
-				urlWithSize.Append(KLogoX);
-				urlWithSize.AppendNum(aXValue);
-				urlWithSize.Append(KLogoY);
-				urlWithSize.AppendNum(aYValue);
-				
-				//set the imgUrl with parameters to the preset
-				tempPreset->SetImgUrl(urlWithSize);
-				urlWithSize.Close();				
-				}
-			}
-		iCachePresetArray->AppendL(tempPreset);
- 		iCacheObserverArray->AppendL(aLogoHandle);
- 		if(aNPVReq == 2)
-	 		{
-	 		iCacheReqFromArray->AppendL(2);		
-	 		}
- 		else
-	 		{
-	 		iCacheReqFromArray->AppendL(1);		
-	 		}
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Exiting" );
-	}
-
-
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::GetCacheLogoL(TDesC& aUrl,TInt& aStatus)
-// takes the url as a parameter and returns the logo data which is in cache
-// this API is called form the search results for to display logo on the view
-// ----------------------------------------------------------------------------------
-//
-EXPORT_C void CIRLogoDownloadEngine::GetCacheLogoL(const TDesC& aUrl,TInt& aStatus)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::GetCacheLogoL - Entering" );
-	iSendingLogo=2;
-	iResult = 0;
-	iForceGet = EFalse;
-	//2 means, this API is called for the search results view
-	iCacheReqMade = ETrue;
-	iCache->CheckCacheL(KLogo,aUrl,iForceGet,iResult);		
-	aStatus = iResult;
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::GetCacheLogoL - Exiting" );
-
-	}
-	
-	
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::SendCacheLogo()
-// sends the logo which is cached
-// ----------------------------------------------------------------------------------
-//
-EXPORT_C TDesC8& CIRLogoDownloadEngine::SendCacheLogo()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendCacheLogo" );
-	return iCache->iLogoData;
-	}
-
-
-
-
-// ------------------------------------------------------------------------
-// CIRLogoDownloadEngine::FetchLogoDataL(CIRIsdsPreset* aPreset)
-// API is used to download logo from isds/internet
-// called in the API SendRequestL(CIRIsdsPreset* aPreset)
-// ------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::FetchLogoDataL(CIRIsdsPreset* aPreset)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Entering" );
- 	if(!iRunning)
-	 	{
-
-	  	iTempReqFrom = 0;//which means the request came from SearchView while doing Add to Favorite
-	 	if( iReqBody )
-		 	{
-		 	delete iReqBody;
-		    iReqBody = NULL;
-		 	}
-	    if( iRespBody )
-		    {
-		    delete iRespBody;
-		    iRespBody = NULL;
-		    }
-		if(iTempPreset)
-			{
-			delete iTempPreset;
-			iTempPreset = NULL;				
-			}
-		iTempPreset = CIRIsdsPreset::NewL();
-	    *iTempPreset = *aPreset;
-   	    if(iTempPreset->GetImgUrl().Length() != 0)
-		    {
-	    	IssueLogoDownloadRequestL();
-		   	}
-	    else /*ImgUrl doesnt exist in the iTempPreset*/
-		    {
-	    	//simply ignore it
-		    }
-	    }
- 	else
-	 	{
-	 	CIRIsdsPreset* tempPreset;
-	 	tempPreset = CIRIsdsPreset::NewL();
-	 	CleanupStack::PushL(tempPreset);
-	 	*tempPreset = *aPreset;
-	 	iPresetArray->AppendL(tempPreset);
-	 	CleanupStack::Pop(tempPreset);
- 		iReqFromArray->AppendL(0);
-	 	}
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Exiting" );
-	}
-
-
-// -------------------------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::FetchLogoDataL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle)
-// API is used to download logo from isds/internet
-// called in the API SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle)
-// -------------------------------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::FetchLogoDataL(CIRIsdsPreset* aPreset,
-				MLogoDownloadObserver* aLogoHandle,TInt aNPVReq)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Entering" );
-	if(!iRunning)
-	 	{
-	 	if(aNPVReq==2)
-		 	{
-		 	iTempReqFrom = 2;//which means the request came from NowPlayingView	 		
-		 	}
-	 	else
-		 	{
-		 	iTempReqFrom = 1;//which means the request came from other than NowPlayingView	 		
-		 	}
-
-		iTempLogoHandle = aLogoHandle;
-		if( iReqBody )
-		 	{
-		 	delete iReqBody;
-		    iReqBody = NULL;
-		 	}
-	    if( iRespBody )
-		    {
-		    delete iRespBody;
-		    iRespBody = NULL;
-		    }
-		if(iTempPreset)
-			{
-			delete iTempPreset;
-			iTempPreset = NULL;				
-			}
-		iTempPreset = CIRIsdsPreset::NewL();
-	    *iTempPreset = *aPreset;
-	    if(iTempPreset->GetImgUrl().Length() != 0)
-		    {
-	    	IssueLogoDownloadRequestL();
-			}
-	    else /*ImgUrl doesnt exist in the iTempPreset*/
-		    {
-	    	//simply ignore it
-		    }
-	    }
- 	else
-	 	{
-	 	CIRIsdsPreset* tempPreset;
-	 	tempPreset = CIRIsdsPreset::NewL();
-	 	CleanupStack::PushL(tempPreset);
-	 	*tempPreset = *aPreset;
-	 	iPresetArray->AppendL(tempPreset);
-	 	CleanupStack::Pop(tempPreset);
-		iObserverArray->AppendL(aLogoHandle);
-		if(aNPVReq==2)
-			{
-	 		iReqFromArray->AppendL(2);
-			}
-		else
-			{
-	 		iReqFromArray->AppendL(1);
-			}
-	 	}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Exiting" );
-	}
-
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::CheckCacheForLogoL(TInt aValue)
-// Checks the cache whether the logo is available or not
-// ----------------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::CheckCacheForLogoL(TInt aValue)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CheckCacheForLogoL - Entering" );
-	iSendingLogo=aValue;
-	iResult = 0;
-	if(iSendingLogo==0)//0 means, this API is called for the usecase of checking cache
-		{
-		iCacheReqMade = ETrue;
-		iCache->CheckCacheL(KLogo,iCacheTempPreset->GetImgUrl(),iForceGet,iResult);		
-		}
-	else if(iSendingLogo==1)//1 means, this API is called for the usecase of downloading logo
-		{
-		iCacheReqMade = ETrue;
-		iCache->CheckCacheL(KLogo,iTempPreset->GetImgUrl(),iForceGet,iResult);		
-		}
-	if((iResult == 0))//not available in the cache
-		{
-		iLogoCached = EFalse;
-		iIsConditionalGET = EFalse;
-		}
-	else if(iResult == -1)//cache is stale/not useable
-		{
-		iLogoCached = EFalse;
-		iIsConditionalGET = ETrue;			
-		}
-	else if(iResult == 1)//cache is useable
-		{
-		iLogoCached = ETrue;	
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CheckCacheForLogoL - Exiting" );
-	}
-
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::IssueLogoDownloadRequest()
-// submits the transaction for to download the logo
-// ----------------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::IssueLogoDownloadRequestL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::IssueLogoDownloadRequestL - Entering" );
-	///////////////////////////////////////////////////////////////////////////////////
-	//This piece of code is for selecting the access point which is already
-	//set at the begining of the application.  To download the logo the same
-	//accesse point will be used.
-	
-	
-	
-		
-	
-	if(!iIRNetworkControllerHandle->GetNetworkStatus())
-		{
-		iIRNetworkControllerHandle->ChooseAccessPointL();
-		iLogoRequestPending = ETrue;
-		}
-	
-	else
-		{
-		if( iFirstTime )
-			{
-			iLogoSession.Close();
-			TRAPD( LeaveValue, iLogoSession.OpenL() );
-	    	if ( LeaveValue != KErrNone )
-	        {
-	        // Most common error; no access point configured, and session creation
-	        // leaves with KErrNotFound.
-	        // Load a string from the resource file and add the error code to string
-	        User::Leave( LeaveValue );
-	        }
-			// Set the HTTP connection properties
-		    RStringPool strP = iLogoSession.StringPool();
-		    RHTTPConnectionInfo connInfo = iLogoSession.ConnectionInfo();
-		    // RSocketServ Handle
-		    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketServ,
-				RHTTPSession::GetTable() ),
-				THTTPHdrVal( iIRNetworkControllerHandle->GetIRSocketServer().Handle() ) );
-
-		    // RConnection Handle
-		    TInt connPtr = REINTERPRET_CAST( TInt,
-				&( iIRNetworkControllerHandle->GetIRConnection() ) );
-		    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketConnection,
-				RHTTPSession::GetTable() ), THTTPHdrVal( connPtr ) );
-
-		    // HTTP Version ( Specify that i am using HTTP/1.1
-			connInfo.SetPropertyL( strP.StringF( HTTP::EVersion,
-				RHTTPSession::GetTable() ),
-				THTTPHdrVal( strP.StringF( HTTP::EHttp11, RHTTPSession::GetTable() ) ) );
-
-			// Set RHttpSession into NetworkController for logo byte counter
-			iIRNetworkControllerHandle->RegisterLogoDataTransferTrackerL( iLogoSession );
-
-			iFirstTime = EFalse;
-			}
-
-
-		HBufC8* buffertmp = HBufC8::NewLC( iTempPreset->GetImgUrl().Length() + 1 );
-		TPtr8 buffertmpPtr( buffertmp->Des() );
-		buffertmpPtr.Copy( iTempPreset->GetImgUrl() );
-
-		TUriParser8 uri;
-		uri.Parse(buffertmpPtr);
-		RStringF method = iLogoSession.StringPool().StringF(HTTP::EGET,RHTTPSession::GetTable());
-		iTransaction = iLogoSession.OpenTransactionL(uri, *this, method);
-		RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
-	    // Set the User-Agent header to UAProf string
-	    SetHeaderL( hdr, HTTP::EUserAgent,
-			   iIRNetworkControllerHandle->GetUAProfString()->Des() );
-
-		_LIT8(KAccept,"image/jpeg,image/png,image/gif");
-		SetHeaderL(hdr, HTTP::EAccept, KAccept);
-		SetHeaderL( hdr, HTTP::EAcceptLanguage, KAcceptLanguage );
-		
-		if(iIsConditionalGET)
-			{
-			RStringF valStr = iLogoSession.StringPool().OpenFStringL(iETag);
-			CleanupClosePushL(valStr);
-			THTTPHdrVal val(valStr);
-			hdr.SetFieldL(iLogoSession.StringPool().StringF(
-						HTTP::EIfNoneMatch, RHTTPSession::GetTable()), val);
-			CleanupStack::PopAndDestroy(&valStr); // valStr
-			}
-		CleanupStack::PopAndDestroy(buffertmp); // buffertmp
-		
-		//setting the member variable to zero
-		iRespBodySize = 0;
-		iTransaction.SubmitL();
-
-		iRunning = ETrue;
-		iLogoRequestPending = ETrue;
-		iState = ESendingEvent;
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::IssueLogoDownloadRequestL - Exiting" );
-	}
-
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::CancelTransaction()
-// cancels the current transaction
-// ----------------------------------------------------------------------------------
-//
-EXPORT_C void CIRLogoDownloadEngine::CancelTransaction()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CancelTransaction - Entering" );
-	if(!iRunning)
-	    {
-		return;
-	    }
-	iTransaction.Close();
-	iRunning = EFalse;
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CancelTransaction - Exiting" );
-	}
-
-
-// ----------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::SendPresetWithLogoL()
-// sends the preset with logo to the requestors
-// ----------------------------------------------------------------------------------
-//
-EXPORT_C void CIRLogoDownloadEngine::SendPresetWithLogoL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendPresetWithLogoL - Entering" );
-	//Logo has downloaded, so update the status of the variable iLogoRequestPending
-	iLogoRequestPending = EFalse;
-	//Remove the imgUrl with parameters from the Preset
-	//now set imgUrl without parameters in to the Preset
-	TInt sizeImgUrlWithPar = iTempPreset->GetImgUrl().Length();
-	TBool hasParameters = EFalse;
-	RBuf urlWithPar;
-	urlWithPar.Create(sizeImgUrlWithPar);
-	urlWithPar.Copy(iTempPreset->GetImgUrl());
-	RBuf tempBuf;
-	tempBuf.Create(sizeImgUrlWithPar);
-
-	TLex urlLex(urlWithPar);
-	for(;!urlLex.Eos();)
-		{
-		tempBuf.Zero();
-		while(urlLex.Peek() != '?' && !urlLex.Eos())		
-			{
-			tempBuf.Append(urlLex.Get());
-			}
-		if(urlLex.Peek() == '?')
-			{
-			hasParameters = ETrue;			
-			}
-		urlLex.Inc();	
-		}
-	
-	RBuf imgUrl;		
-	if(hasParameters)		
-		{
-		//let say urlWithPar has the value http://www.logos.com/images/test.pngx=100&y=100
-		//now the tempBuf contains the value  x=100&y=100
-		TInt sizeUrlParameters = tempBuf.Length();
-		sizeUrlParameters++; // now this integer contains the size of x=100&y=100 
-		TInt sizeImgUrl = sizeImgUrlWithPar - sizeUrlParameters;
-		
-		//Create a buffer to store the imgUrl without parameters
-		imgUrl.Create(sizeImgUrl);
-		imgUrl.Copy(urlWithPar.Left(sizeImgUrl));
-		iTempPreset->SetImgUrl(imgUrl);
-		}
-	else
-		{
-		//nothing to be done
-		//the imgUrl present in the preset is correct, no need to change anything
-		}
-
-	//set the downloaded logo to the preset with the API SetLogoData()
-	iTempPreset->SetLogoData(*iRespBody);
-	if(iTempReqFrom == 0)//which means the request came from SearchView while doing Add to Favorite
-		{
-		iPresetModifiedStatus = ETrue;
-		}
-	else if(iTempReqFrom == 1)//which menas the request came from a view other than NowPlayingView
-		{
-		iTempLogoHandle->PresetLogoDownloadedL(iTempPreset);
-		}
-	else if(iTempReqFrom == 2)//which menas the request came from NowPlayingView
-		{
-		//(1)logo has downloaded freshly
-		//(2)send the logo to the NPV through PresetLogoDownloadedL
-		//(3)check whether the preset exists in favdb; if so replace that with new logo
-		iTempLogoHandle->PresetLogoDownloadedL(iTempPreset);
-		}
-		
-    
-	iTempPreset->SetImgUrl(urlWithPar);	
-	//Cache the newly downloaded logo
-	iCache->CacheLogoL(*iRespBody,iTempPreset->GetImgUrl(),*iResponseHeaders);
-
-	//close all the buffers
-	imgUrl.Close();
-	tempBuf.Close();
-	urlWithPar.Close();
-	
-	iRunning = EFalse;
-	iState = EIdle;
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::SendPresetWithLogoL - Exiting" );
-	}
-
-
-
-// ---------------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
-// callback API from MHTTPTransactionCallback
-// ---------------------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunL - Entering" );
-	switch (aEvent.iStatus)
-		{
-		case THTTPEvent::EGotResponseHeaders:
-			{
-		    RHTTPResponse resp = aTransaction.Response();
-		    TInt status = resp.StatusCode();
-		    iRespCode = status;
-            ExtractResponseHeadersL(aTransaction);
-	        if(status >= KStatusOK &&  status < KStatusMultipleChoices)
-		    {
-	            THTTPHdrVal headerValue(0);
-	            RHTTPHeaders headers = resp.GetHeaderCollection();
-	            TInt error = headers.GetField(iLogoSession.StringPool().StringF(HTTP::EContentLength,
-	            				 RHTTPSession::GetTable()), 0, headerValue);
-	            iRespBodySize = 0;
-	            if (KErrNone == error)
-	            {
-	                iRespBodySize = headerValue.Int();
-	            }
-                iRespBody = HBufC8::NewL(iRespBodySize+1);
-		    }
-			else if( status == KStatusNotModified )//304 means, the content has not modified
-			    {
-			    if(iIsConditionalGET)
-				    {
-				    iIsConditionalGET = EFalse;
-				    iRunning = EFalse;
-				    //update the trust period 
-					//no problem if it leaves
-					TRAP_IGNORE(iCache->UpdateTrustPeriodL(KLogo,iTempPreset->GetImgUrl(),
-												*iResponseHeaders))
-					//do a forced get because the data is notmodifed in isds and 
-					//trustable
-					iForceGet = ETrue;
-					CheckCacheForLogoL(1);
-				    }
-		        }
-	        else if( status == KStatusGatewayTimeout )
-		        {
-				//implementation, if needed
-				CancelTransaction();
-				if(iTempReqFrom == 0)
-					{
-					//do nothing	
-					}
-				else
-					{
-					iTempLogoHandle->PresetLogoDownloadError(iTempPreset);					
-					}
-				ManagePresetArrayIndexL();
-				}
-
-			}
-			break;
-
-		case THTTPEvent::EGotResponseBodyData:
-			{
-			MHTTPDataSupplier* body = aTransaction.Response().Body();
-			TPtrC8 dataChunk;
-			body->GetNextDataPart(dataChunk);
-			if(iRespBodySize > 0)
-				{
-	            iRespBody->Des().Append((const TDesC8&)dataChunk);
-				}
-			else if(iRespBody)
-				{
-				//which means the body of the response has come
-				//but in the response headers Content-Length is missing
-				//for this usecase realloc the iRespBody with the data received					
-				HBufC8* buffertmp = HBufC8::NewLC( dataChunk.Length() + 1 );
-        		TPtr8 buffertmpPtr( buffertmp->Des() );
-        		buffertmpPtr.Copy( (const TDesC8&)dataChunk );
-        		
-   				TInt tempSize;
-				tempSize = iRespBody->Length() + dataChunk.Length();
-				
-				iRespBody = iRespBody->ReAllocL( tempSize );
-				TPtr8 ibufferPtr( iRespBody->Des() );
-				ibufferPtr.Append(buffertmpPtr);
-
-
-        		
-				CleanupStack::PopAndDestroy(buffertmp); // buffertmp        		
-				}
-			body->ReleaseData();
-			}
-			break;
-
-		case THTTPEvent::EResponseComplete:
-			{
-			//No implementation
-			}
-			break;
-
-		case THTTPEvent::ESucceeded:
-	        {
-			iTransaction.Close();
-			if(iIsConditionalGET)
-				{
-				iIsConditionalGET = EFalse;					
-				}
-		 
-			iRunning = EFalse;
-			//set the downloaded logo in the preset and send it back to the requestor
-			SendPresetWithLogoL();
-			ManagePresetArrayIndexL();
-	        }
-			break;
-
-		case THTTPEvent::EFailed:
-			{
-			aTransaction.Close();
-			iRunning = EFalse;
-			iState = EIdle;
-			if( iRespCode == KStatusNotModified )//304 means, the content has not modified
-				{
-				//do nothing;					
-				}
-			else
-				{
-				if(iTempReqFrom == 0)
-					{
-					//do nothing
-					}
-				else
-					{
-					iTempLogoHandle->PresetLogoDownloadError(iTempPreset);					
-					}
-				}
-			ManagePresetArrayIndexL();
-			}
-	        break;
-
-		default:
-
-			if (aEvent.iStatus < 0)
-				{
-				aTransaction.Close();
-				iRunning = EFalse;
-				iState = EIdle;
-				if(iTempReqFrom == 0)
-					{
-					//do nothing
-					}
-				else
-					{
-					iTempLogoHandle->PresetLogoDownloadError(iTempPreset);					
-					}
-				ManagePresetArrayIndexL();
-		        }
-			break;
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunL - Exiting" );
-	}
-
-
-// ------------------------------------------------------------------------------------------------------------------
-// CIRLogoDownloadEngine::MHFRunError(TInt /*aError*/, RHTTPTransaction aTransaction, const THTTPEvent& /*aEvent*/)
-// callback API from MHTTPTransactionCallback
-// ------------------------------------------------------------------------------------------------------------------
-//
-TInt CIRLogoDownloadEngine::MHFRunError(TInt /*aError*/, RHTTPTransaction aTransaction, const THTTPEvent& /*aEvent*/)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunError - Entering" );
-	aTransaction.Close();
-	iRunning = EFalse;
-	iState = EIdle;
-	if(iIsConditionalGET)
-		{
-		iIsConditionalGET = EFalse;	
-		}
-	if(iTempReqFrom == 0)
-		{
-		//do nothing	
-		}
-	else
-		{
-		iTempLogoHandle->PresetLogoDownloadError(iTempPreset);		
-		}
-	TRAP_IGNORE(ManagePresetArrayIndexL())
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunError - Exiting" );
-	return KErrNone;
-	}
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::GetNextDataPart(TPtrC8& aDataPart)
-// callback API from MHTTPDataSupplier
-// --------------------------------------------------------------------
-TBool CIRLogoDownloadEngine::GetNextDataPart(TPtrC8& aDataPart)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::GetNextDataPart - Entering" );
-    aDataPart.Length();
-    iReqBody->Length();
-    aDataPart.Set(*iReqBody);
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::GetNextDataPart - Exiting" );
-	return ETrue;
-	}
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::ReleaseData()
-// callback API from MHTTPDataSupplier
-// --------------------------------------------------------------------
-void CIRLogoDownloadEngine::ReleaseData()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseData" );
-   //No implementaion
-	}
-
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::Reset()
-// callback API from MHTTPDataSupplier
-// --------------------------------------------------------------------
-TInt CIRLogoDownloadEngine::Reset()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::Reset" );
-	return KErrNone;
-	}
-
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::OverallDataSize()
-// callback API from MHTTPDataSupplier
-// --------------------------------------------------------------------
-TInt CIRLogoDownloadEngine::OverallDataSize()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::OverallDataSize" );
-	return iReqBody->Length();
-	}
-
-// ---------------------------------------------------------------------------
-// CIRLogoDownloadEngine::ExtractResponseHeadersL( RHTTPTransaction aTransaction )
-// Used to Extract the response headers.
-// ---------------------------------------------------------------------------
-//
-
-void CIRLogoDownloadEngine::ExtractResponseHeadersL(const RHTTPTransaction&
-	aTransaction )
-    {
-    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Entering" );
-    RHTTPResponse response = aTransaction.Response();
-    RHTTPHeaders respHeader = response.GetHeaderCollection();
-    THTTPHdrFieldIter iterator = respHeader.Fields();
-    RStringPool httpStringPool = aTransaction.Session().StringPool();
-    iterator.First();
-    HBufC8 *headerField = HBufC8::NewLC( KMaxHeaderNameLength +
-		KMaxHeaderValueLength );
-    HBufC8 *fieldValBuf = HBufC8::NewLC( KMaxHeaderValueLength );
-    while ( iterator.AtEnd() == EFalse )
-        {
-        RStringTokenF fieldName = iterator();
-        RStringF fieldNameStr = httpStringPool.StringF( fieldName );
-        THTTPHdrVal fieldVal;
-        if ( respHeader.GetField( fieldNameStr, 0, fieldVal ) == KErrNone )
-            {
-            const TDesC8 &fieldNameDesC = fieldNameStr.DesC();
-            headerField->Des().Copy( fieldNameDesC.Left(
-				KMaxHeaderNameLength ) );
-            fieldValBuf->Des().Zero();
-            switch ( fieldVal.Type() )
-                {
-                // the value is an integer
-                //lint restore -e747:Significant prototype
-                //coercion (arg. no. 1) int to long long  :
-                case THTTPHdrVal::KTIntVal: fieldValBuf->Des().Num(
-					fieldVal.Int() );
-                break;
-                // the value is a case-insensitive string
-                case THTTPHdrVal::KStrFVal:
-                    {
-                    RStringF fieldValStr = httpStringPool.StringF(
-						fieldVal.StrF() );
-                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
-                    fieldValBuf->Des().Copy( fieldValDesC.Left(
-						KMaxHeaderValueLength ) );
-                    }
-                break;
-                // the value is a case-sensitive string
-                case THTTPHdrVal::KStrVal:
-                    {
-                    RString fieldValStr = httpStringPool.String(
-						fieldVal.Str() );
-                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
-                    fieldValBuf->Des().Copy( fieldValDesC.Left(
-						KMaxHeaderValueLength ) );
-                    }
-                break;
-                // the value is a date/time
-                case THTTPHdrVal::KDateVal:
-                    {
-                    TDateTime date = fieldVal.DateTime();
-                    TTime t( date );
-//                    if ( iSetNonUAProfUserAgent )
-//       					{
-       		            HttpDateHeaderReceived( *headerField ,t );
-//       					}
-                    }
-                break;
-                // the value is type is unknown
-                default:
-                    break;
-                }
-            // Display HTTP header field name and value
-            headerField->Des().Append( KDPColon );
-            headerField->Des().Append( *fieldValBuf );
-            HttpHeaderReceived( *headerField );
-            }
-        ++iterator;
-        }
-    
-    CleanupStack::PopAndDestroy( fieldValBuf );
-    CleanupStack::PopAndDestroy( headerField );
-    IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractResponseHeadersL - Exiting." );
-    }
-
-
-
-// ---------------------------------------------------------------------------
-//  CIRLogoDownloadEngine::HttpHeaderReceived( const TDesC8& aHeaderData )
-//  indicate that an HTTP header is received.
-// ---------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::HttpHeaderReceived( const TDesC8& aHeaderData )
-    {
-    IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpHeaderReceived - Entering." );
-	_LIT8(KDelim,":");
-	_LIT8(KContentType,"Content-Type");
-	ExtractHeaderValue(aHeaderData,KContentType,KDelim,iResponseHeaders->
-		iContentType);
-	_LIT8(KMaxAge,"max-age");
-	_LIT8(KDelimEqual,"=");
-	ExtractHeaderValue(aHeaderData,KMaxAge,KDelimEqual,iResponseHeaders->
-		iMaxAge);
-	_LIT8(KContentLength,"Content-Length");
-	ExtractHeaderValue(aHeaderData,KContentLength,KDelim,iResponseHeaders->
-		iContentLength);
-	_LIT8(KExpires,"Expires");
-	ExtractHeaderValue(aHeaderData,KExpires,KDelim,iResponseHeaders->iExpires);
-	_LIT8(KETag,"ETag");
-	ExtractHeaderValue(aHeaderData,KETag,KDelim,iResponseHeaders->iETag);
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpHeaderReceived - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-//  CIRLogoDownloadEngine::ExtractHeaderValue(const TDesC8& aHeaderData,const
-//	TDesC8& aHeaderName,const TDesC8& aDelimeter,TDes8& aHolder) const
-//  Used to build the CIRHttpResponseData
-// ---------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::ExtractHeaderValue(const TDesC8& aHeaderData,const
-	TDesC8& aHeaderName,const TDesC8& aDelimeter,TDes8& aHolder) const
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractHeaderValue - Entering" );
-	TInt position = aHeaderData.Find(aHeaderName);
-	if( position >= 0)
-		{
-		TPtrC8 headerValue = aHeaderData.Mid(position);
-		TInt delimeterPosition = headerValue.Find(aDelimeter);
-		if( delimeterPosition != KErrNotFound )
-			{
-			delimeterPosition++;
-			TPtrC8 value = headerValue.Mid(delimeterPosition);
-			aHolder.Copy(value);
-			aHolder.TrimAll();
-			}
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractHeaderValue - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//  CIRLogoDownloadEngine::HttpDateHeaderReceived(const TDesC8 &aHeader,
-//	const TTime& aTime )
-//  Used to build the CIRHttpResponseData members
-// ---------------------------------------------------------------------------
-//
-void CIRLogoDownloadEngine::HttpDateHeaderReceived(const TDesC8 &aHeader,
-	const TTime& aTime )
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpDateHeaderReceived - Entering." );
-	_LIT8(KDate,"Date");
-	_LIT8(KLastModified,"Last-Modified");
-	TInt position = aHeader.Find(KDate);
-	if( position != KErrNotFound )
-		{
-		iResponseHeaders->iDate = aTime;
-		return ;
-		}
-	position = aHeader.Find(KLastModified);
-	if( position != KErrNotFound )
-		{
-		iResponseHeaders->iLastModified = aTime;
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpDateHeaderReceived - Exiting." );
-	}
-
-
-
-
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::ManagePresetArrayIndexL()
-// To make another download request if exists in the queue
-// To update the iPresetArray current index
-// --------------------------------------------------------------------
-void CIRLogoDownloadEngine::ManagePresetArrayIndexL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ManagePresetArrayIndexL - Entering" );
-	TInt PresetArrayLength = iPresetArray->Count();
-	if((PresetArrayLength>0) && (iPresetArrayPos < PresetArrayLength))
-		{
-		CIRIsdsPreset* tempPreset = CIRIsdsPreset::NewL();
-		CleanupStack::PushL(tempPreset);
-    	*tempPreset = *(iPresetArray->At(iPresetArrayPos));
-    		if(iReqFromArrayPos < iReqFromArray->Count()  &&  iReqFromArray->At(iReqFromArrayPos) == 0 )
-        		{
-    			FetchLogoDataL(tempPreset);
-        		}
-        	else if(iObserverArrayPos < iObserverArray->Count())
-    	    	{
-    			FetchLogoDataL(tempPreset,iObserverArray->At(iObserverArrayPos),
-    							iReqFromArray->At(iReqFromArrayPos));
-    			++iObserverArrayPos;
-    	    	}
-		++iPresetArrayPos;
-		++iReqFromArrayPos;
-//		delete tempPreset;
-		CleanupStack::PopAndDestroy(tempPreset);
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ManagePresetArrayIndexL - Exiting" );
-	}
-
-
-// --------------------------------------------------------------------
-// CIRLogoDownloadEngine::ManageCachePresetArrayIndexL()
-// To make another download request if exists in the queue
-// To update the iCachePresetArray current index
-// --------------------------------------------------------------------
-void CIRLogoDownloadEngine::ManageCachePresetArrayIndexL()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ManageCachePresetArrayIndexL - Exiting" );
- 	TInt CachePresetArrayLength = iCachePresetArray->Count();
-	if((CachePresetArrayLength>0) && (iCachePresetArrayPos < CachePresetArrayLength))
-		{
-		CIRIsdsPreset* tempPreset;
-		tempPreset = CIRIsdsPreset::NewL();
-		CleanupStack::PushL(tempPreset);
-		*tempPreset = *(iCachePresetArray->At(iCachePresetArrayPos));
-		
-		if(iCacheReqFromArrayPos < iCacheReqFromArray->Count()  &&
-					 iCacheReqFromArray->At(iCacheReqFromArrayPos) == 0 )
-    		{
-			SendRequestL(tempPreset,KLogoSize,KLogoSize);
-    		}
-    	else if(iCacheObserverArrayPos < iCacheObserverArray->Count())
-	    	{
-			SendRequestL(tempPreset,iCacheObserverArray->At(iCacheObserverArrayPos),
-					iCacheReqFromArray->At(iCacheReqFromArrayPos));
-			++iCacheObserverArrayPos;
-	    	}
-		++iCachePresetArrayPos;
-		++iCacheReqFromArrayPos;
-//		delete tempPreset;
-		CleanupStack::PopAndDestroy(tempPreset);
- 		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::ManageCachePresetArrayIndexL - Exiting" );
-	}
-
-// -----------------------------------------------------
-// CIRLogoDownloadEngine::CacheError()
-// Called from cachemgmt in case of an error
-// callback API from MIRCacheObserver
-// -----------------------------------------------------
-void CIRLogoDownloadEngine::CacheError()
- 	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheError" );
-
- 	//code here, if needed
- 	}
-
-// -----------------------------------------------------
-// CIRLogoDownloadEngine::CacheFailed()
-// Called from cachemgmt in case of cache failure
-// callback API from MIRCacheObserver
-// -----------------------------------------------------
-void CIRLogoDownloadEngine::CacheFailed()
- 	{
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheFailed" );
- 	//code here, if needed
- 	}
-
-// -----------------------------------------------------
-// CIRLogoDownloadEngine::CacheInvalid()
-// Called from cachemgmt in case cache is invalid
-// callback API from MIRCacheObserver
-// -----------------------------------------------------
-void CIRLogoDownloadEngine::CacheInvalid()
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheInvalid - Entering" );
-	iETag = iCache->iETag;
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheInvalid - Exiting" );
-	}
-
-// -----------------------------------------------------
-// CIRLogoDownloadEngine::CachedStructureL(TInt aChoice)
-// Called from cachemgmt data retrival is successful
-// callback API from MIRCacheObserver
-// -----------------------------------------------------
-void CIRLogoDownloadEngine::CachedStructureL(TInt aChoice)
- 	{
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::CachedStructureL - Entering" );
-	if(iCacheReqMade)
-		{
-		iCacheReqMade = EFalse;
-		if(aChoice == KCacheAvailable)
-			{
-			
-		 	TInt sizeImgUrlWithPmts = 0;
-		 	//Remove the imgUrl with parameters from the Preset
-			//now set imgUrl without parameters in to the Preset
-			if(iSendingLogo==0)
-				{
-				sizeImgUrlWithPmts = iCacheTempPreset->GetImgUrl().Length();		
-				}
-			else if(iSendingLogo==1)
-				{
-				sizeImgUrlWithPmts = iTempPreset->GetImgUrl().Length();		
-				}
-			else if(iSendingLogo==2)
-				{
-				sizeImgUrlWithPmts = KTen;			
-				}
-			TBool hasParameters = EFalse;
-			RBuf urlWithPar;
-			urlWithPar.Create(sizeImgUrlWithPmts);
-			if(iSendingLogo==0)
-				{
-				urlWithPar.Copy(iCacheTempPreset->GetImgUrl());
-				}
-			else if(iSendingLogo==1)
-				{
-				urlWithPar.Copy(iTempPreset->GetImgUrl());
-				}
-			else if(iSendingLogo==2)
-				{
-				_LIT(KNone,"");
-				urlWithPar.Copy(KNone);
-				}
-				
-			RBuf tempBuf;
-			tempBuf.Create(sizeImgUrlWithPmts);
-
-			TLex urlLex(urlWithPar);
-			for(;!urlLex.Eos();)
-				{
-				tempBuf.Zero();
-				while(urlLex.Peek() != '?' && !urlLex.Eos())		
-					{
-					tempBuf.Append(urlLex.Get());
-					}
-				if(urlLex.Peek() == '?')
-					{
-					hasParameters = ETrue;			
-					}
-				urlLex.Inc();	
-				}
-			
-			RBuf imgUrl;		
-			if(hasParameters)		
-				{
-				//let say urlWithPar has the value http://www.logos.com/images/test.pngx=100&y=100
-				//now the tempBuf contains the value  x=100&y=100
-				TInt sizeUrlParameters = tempBuf.Length();
-				sizeUrlParameters++; // now this integer contains the size of x=100&y=100 
-				TInt sizeImgUrl = sizeImgUrlWithPmts - sizeUrlParameters;
-				
-				//Create a buffer to store the imgUrl without parameters
-				imgUrl.Create(sizeImgUrl);
-				imgUrl.Copy(urlWithPar.Left(sizeImgUrl));
-				if(iSendingLogo==0)
-					{
-					iCacheTempPreset->SetImgUrl(imgUrl);			
-					}
-				else if(iSendingLogo==1)
-					{
-					iTempPreset->SetImgUrl(imgUrl);			
-					}
-				}
-			else
-				{
-				//nothing to be done
-				//the imgUrl present in the preset is correct, no need to change anything
-				}
-			
-			
-			
-			if(iSendingLogo==0)
-			 	{
-			 	if(aChoice == KCacheAvailable)//logo is available in the cache
-				 	{
-					iCacheTempPreset->SetLogoData(iCache->iLogoData);	 		
-				 	}
-				if(iCacheReqFrom == 0)
-					{
-					iPresetModifiedStatus = ETrue;
-					}
-				else
-					{
-					iCacheTempLogoHandle->PresetLogoDownloadedL(iCacheTempPreset);
-					}	
-				
-				
-				ManageCachePresetArrayIndexL(); 	
-			 	}
-			else if(iSendingLogo==1)	
-				{
-			 	if(aChoice == KCacheAvailable)//logo is available in the cache
-				 	{
-					iTempPreset->SetLogoData(iCache->iLogoData);	 		
-				 	}
-				if(iTempReqFrom == 0)
-					{
-					iPresetModifiedStatus = ETrue;
-					}
-				else
-					{
-					iTempLogoHandle->PresetLogoDownloadedL(iTempPreset);
-					}		 	
-					
-			 	ManagePresetArrayIndexL();
-			 	}
-			else if(iSendingLogo==2)//logo request from the search results (while displaying logo)
-				{
-				//code here, if needed			
-				}
-
-			//close all the buffers
-			imgUrl.Close();
-			tempBuf.Close();
-			urlWithPar.Close();
-			}
-			
-		}
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::CachedStructureL - Exiting" );
- 	}
- 	
-// -----------------------------------------------------
-// CIRLogoDownloadEngine::ReleaseResources()
-// Releases the resources held by logo download engine
-// Used to close the Http Session if already open
-// -----------------------------------------------------
-void CIRLogoDownloadEngine::ReleaseResources()
-	{
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseResources - Entering" );
-	CancelTransaction();
-	iLogoSession.Close();
-    iFirstTime = ETrue;
- 	IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseResources - Exiting" );
-	} 	
-
-// -----------------------------------------------------------------------------
-// Notified by network controller when network is active, to reissue the request  
-// NotifyActiveNetworkObserversL()
-// -----------------------------------------------------------------------------
-
-void CIRLogoDownloadEngine::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)
-	{
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::NotifyActiveNetworkObserversL - Entering" );
-	switch(aEvent)
-		{
-		case ENetworkConnectionDisconnected:
-			{
-			ReleaseResources();
-			}
-			break;
-		case ENetworkConnectionEstablished:
-			{
-			if( iLogoRequestPending )
-				{
-				IssueLogoDownloadRequestL();
-				}
-			}
-		}
-	IRLOG_DEBUG( "CIRLogoDownloadEngine::NotifyActiveNetworkObserversL - Exiting" );
-	}
-
- 	
-// -----------------------------------------------------------------------------
-// Notified by network controller when user cancels network connection, to reset 
-// the pending requests  
-// ResetPendingRequests()
-// -----------------------------------------------------------------------------
-void CIRLogoDownloadEngine::ResetPendingRequests(TBool /*aValue*/)
-	{
-		
-	}
-	
--- a/internetradio2.0/datastructuresinc/iradvertisement.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +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 IRADVERTISEMENT_H
-#define IRADVERTISEMENT_H
-
-#include <e32base.h>
-
-/**
-*This class is being used by xml parser.
-*code is ready to support advertisement
-*not being used in current release
-*/
-
-class CIRAdvertisement : public CBase
-	{
-	public :
-	
-	/**
-	*CIRAdvertisement::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return CIRAdvertisement*
-	*/
-	IMPORT_C	static CIRAdvertisement* NewLC();
-	
-	/**
-	*CIRAdvertisement::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return CIRAdvertisement*
-	*/
-	IMPORT_C	static CIRAdvertisement* NewL();
-	
-	/**
-	*CIRAdvertisement::ConstructL()
-	*standard second phase constructor
-	*/
-	IMPORT_C	void ConstructL() const;
-	
-	/**
-	*CIRAdvertisement::~CIRAdvertisement()
-	*standard C++ destructor
-	*/
-	~CIRAdvertisement();
-	
-	/**
-	*CIRAdvertisement::SetAdvInUse()
-	*Function to set the advertisement in use
-	*@param TDesC
-	*/
-	IMPORT_C	void     SetAdvInUse(const TDesC& aAdvInUse);
-	
-	/**
-	*CIRAdvertisement::SetUsage()
-	*Function to set the url of the global advertisement
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetUsage(const TDesC& aUsageVisibleTimes);
-	
-	/**
-	*CIRAdvertisement::SetVisibleTime()
-	*Function to set the duration of the advertisement to be displayed
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetVisibleTime(const TDesC& aVisibleTime);
-	
-	/**
-	*CIRAdvertisement::SetURL()
-	*Function to set the url of the global advertisement
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetURL(const TDesC& aUrl);
-	
-	private :
-	//url to fetch the ad from		
-	HBufC*   iUrl;
-	//url of the current ad in use
-	HBufC*   iAdvInUse; 
- 	//defines the time for which the ad is visible
-	TInt   iVisibleTime;
-	//no of times the ad to be shown
-	TInt   iUsageVisibleTimes;
-	
-   };
-	
-#endif//IRADVERTISEMENT_H
\ No newline at end of file
--- a/internetradio2.0/datastructuresinc/irbrowsecatagoryitems.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +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 IRBROWSECATAGORYITEMS_H
-#define IRBROWSECATAGORYITEMS_H
-
-#include <e32base.h>
-
-class RReadStream;
-class RWriteStream;
-
-/**
- * This class provides the basic structure to hold the browse information 
- *information that come from the isds server.
- *It also provides the basic getter and setter functions to 
- *manage the browse information.
- * @code
- *CIRBrowseCatagoryItems* browse = CIRBrowseCatagoryItems::NewL()
- *browse->SetXXX();
- *browse->GetXXX()
- * *browse = *browse2
- *delete browse;
- * @endcode
- *   
- */
-
-class CIRBrowseCatagoryItems : public CBase
-	{
-public :
-
-	/**
-	*CIRBrowseCatagoryItems::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return CIRBrowseCatagoryItems*
-	*/
-	IMPORT_C	static CIRBrowseCatagoryItems* NewL();
-	
-
-	/**
-	*CIRBrowseCatagoryItems::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return CIRBrowseCatagoryItems*
-	*/
-	IMPORT_C	static CIRBrowseCatagoryItems* NewLC();
-
-	/**
-	*CIRBrowseCatagoryItems::ConstructL()
-	*standard second phase constructor
-	*/
-	void ConstructL() const;
-
-	/**
-	*CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
-	*standard C++ destructor
-	*/
-	~CIRBrowseCatagoryItems();
-
-	/**
-	*CIRBrowseCatagoryItems::SetTextL()
-	*sets the category name and category id
-	**/
-	IMPORT_C	void SetTextL(const TDesC& aCatName,const TDesC& aCatId);
-
-	/**
-	*CIRBrowseCatagoryItems::SetSize()
-	*sets the count of the no of items present under that type
-	*/
-	IMPORT_C	void	SetSize(const TDesC& aCatSize);
-	
-	/**
-	*CIRBrowseCatagoryItems::SetGetOperation()
-	*sets the url that is used to get the next level of data
-	*/
-	IMPORT_C void SetGetOperation(const TDesC& aCatGetOperation);
-	
-	/**
-	*CIRBrowseCatagoryItems::SetBannerUrl(const TDesC& aBannerUrl)
-	*Set data Banner Url
-	*@param TDesC
-	*/
-	IMPORT_C void SetBannerUrl(const TDesC& aBannerUrl);
-	
-	
-	/**
-	*CIRBrowseCatagoryItems::SetClickThroughUrl(const TDesC& aClickThroughUrl)
-	*Set data Banner Url
-	*@param TDesC
-	*/
-	IMPORT_C  void SetClickThroughUrl(const TDesC& aClickThroughUrl);
-
-	/**
-	*CIRBrowseCatagoryItems::ExternalizeL()
-	*Externalizes the data from file
-	*@param RWriteStream
-	**/
-	IMPORT_C	void  ExternalizeL(RWriteStream& aStream) const;
-
-
-	/**
-	*CIRBrowseCatagoryItems::InternalizeL()
-	*Internalizes the data from file
-	*@param RWriteStream&
-	**/
-	IMPORT_C	void  InternalizeL(RReadStream& aStream);
-
-
-public:
-	//category name
-	HBufC*   iCatName;
-	//category id
-	HBufC*   iCatId;
-	//get operation
-	HBufC*	 iCatGetOperation;
-	//no of entities
-	TInt 		iSize;
-	
-	//For Advertisements
-	HBufC* iCatBannerUrl;
-	HBufC* iCatClickThroughUrl;
-	};
-	
-#endif// IRBROWSECATAGORYITEMS_H
\ No newline at end of file
--- a/internetradio2.0/datastructuresinc/irbrowsechannelitems.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +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 IRBROWSECHANNELITEMS_H
-#define IRBROWSECHANNELITEMS_H
-
-#include <e32base.h>
-
-class RReadStream;
-class RWriteStream;
-
-/**
- * This class provides the basic structure to hold the browse information 
- *information that come from the isds server.
- *It also provides the basic getter and setter functions to 
- *manage the browse information.
- * @code
- *CIRBrowseChannelItems* browse = CIRBrowseChannelItems::NewL()
- *browse->SetXXX();
- *browse->GetXXX()
- *delete browse;
- * @endcode
- *   
- */
-class CIRBrowseChannelItems : public CBase
-	{
-public :
-
-	/**
-	*CIRBrowseChannelItems::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return CIRBrowseChannelItems*
-	*/
-	IMPORT_C	static CIRBrowseChannelItems* NewLC();
-
-	/**
-	*CIRBrowseChannelItems::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return CIRBrowseChannelItems*
-	*/
-	IMPORT_C	static CIRBrowseChannelItems* NewL();
-
-	/**
-	*CIRBrowseChannelItems::ConstructL()
-	*standard two phased constructor
-	*/
-	void ConstructL() const;
-
-	/**
-	*CIRBrowseChannelItems::~CIRBrowseChannelItems()
-	*standard C++ destructor
-	*/
-	~CIRBrowseChannelItems();
-
-public:
-
-	/**
-	*CIRBrowseChannelItems::SetTextL()
-	*Set data namely channelname,channelid,description
-	*@param TDesC,TDesC,TDesC
-	*/
-	IMPORT_C	void   SetTextL(
-		const TDesC& aChannelName,const TDesC& aChannelId,const TDesC& aDescription);
-
-	/**
-	*CIRBrowseChannelItems::SetGetOperationL()
-	*Set data get methord
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetGetOperationL(const TDesC& aChannelGetOperation);
-
-	/**
-	*CIRBrowseChannelItems::SetSize()
-	*Set data size of data
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetSize(const TDesC& aSize);
-
-	/**
-	*CIRBrowseChannelItems::SetImageUrl()
-	*Set data for iImgUrl
-	*@param TDesC
-	*/
-	IMPORT_C	void	 SetImageUrl(const TDesC& aImgUrl);
-
-	/**
-	*CIRBrowseChannelItems::SetGetOperation()
-	*Set data for the get operation
-	*@param TDesC
-	*/
-	IMPORT_C	void 	 SetGetOperation(TDesC& aCatGetOperation);
-
-	/**
-	*CIRBrowseChannelItems::ExternalizeL()
-	*Externalizes data into persistent storage
-	*@param RWriteStream
-	*/
-	IMPORT_C	void   ExternalizeL(RWriteStream& aStream) const;
-
-	/**
-	*CIRBrowseChannelItems::InternalizeL()
-	*internalizes data from persistent storage
-	*@param RReadStream
-	*/
-	IMPORT_C	void   InternalizeL(RReadStream& aStream);
-
-	/**
-	*CIRBrowseChannelItems::SetLastPlayedUrl()
-	*Sets the last played url
-	*/
-	IMPORT_C	void SetLastPlayedUrl();
-
-	/**
-	*CIRBrowseChannelItems::SetBitrate()
-	*Set data for 3bitrates
-	*@param TDesC,TDesC,TDesC
-	*/
-	IMPORT_C	void SetBitrate(
-		const TDesC &aBitrate1,const TDesC &aBitrate2,const TDesC &aBitrate3);
-
-	/**
-	*CIRBrowseChannelItems::SetBitrate()
-	*Set data for 2 bitrates
-	*@param TDesC,TDesC
-	*/
-	IMPORT_C	void SetBitrate(const TDesC &aBitrate1,const TDesC &aBitrate2);
-
-	/**
-	*CIRBrowseChannelItems::SetBitrate()
-	*Set data for 1 bitrate
-	*@param TDesC
-	*/
-	IMPORT_C	void SetBitrate(const TDesC &aBitrate1);
-
-	//For Advertisements
-	/**
-	*CIRBrowseChannelItems::SetBannerUrl(const TDesC& aBannerUrl)
-	*Set data Banner Url
-	*@param TDesC
-	*/
-	IMPORT_C void SetBannerUrl(const TDesC& aBannerUrl);
-	
-	
-	/**
-	*CIRBrowseChannelItems::SetClickThroughUrl(const TDesC& aClickThroughUrl)
-	*Set data Banner Url
-	*@param TDesC
-	*/
-	IMPORT_C  void SetClickThroughUrl(const TDesC& aClickThroughUrl);
-
-public :
-	//channel name
-	HBufC*   iChannelName;
-	//short description
-	HBufC*   iShortDescription;
-	//url to fetch the preset from
-	HBufC*   iChannelGetOperation;
-	//url to fetch the image from
-	RBuf     iImgUrl;
-	//supported bitrates(were required for bitrate view)
-	//not in use now
-	TInt     iBitrate1;
-	TInt     iBitrate2;
-	TInt     iBitrate3;
-	//channel id
-	TUint    iChannelID;
-	TInt	 iSize;
-	
-	
-		//For Advertisements
-	HBufC* iBannerUrl;
-	HBufC* iClickThroughUrl;
-
-	};
-
-#endif // IRBROWSECHANNELITEMS_H
--- a/internetradio2.0/datastructuresinc/irchannelserverurl.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +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 IRCHANNELSERVERURL_H
-#define IRCHANNELSERVERURL_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.
- *for url selection for a particular bitrate some functionality 
- *has been provided
- *copy constructor and assignment operator has been provided to 
- *override the default ones 
- *
- * @code
- *CIRChannelServerUrl* presetUrl = CIRChannelServerUrl::NewL()
- *preset->SetXXX();
- *preset->GetXXX();
- * @endcode
- *   
- */
- 
-class CIRChannelServerUrl:public CBase
-	{
-public:
-	
-	/**
-	*CIRChannelServerUrl::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRChannelServerUrl
-	*/
-	IMPORT_C	static CIRChannelServerUrl* NewL();
-	
-	/**
-	*CIRChannelServerUrl::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRChannelServerUrl
-	*/
-	IMPORT_C	static CIRChannelServerUrl* NewLC();
-	
-	/**
-	*CIRChannelServerUrl::SetServerName()
-	*sets server name 
-	*@param TDesC
-	*/
-	IMPORT_C	void SetServerName(const TDesC& aServerName);
-	
-	/**
-	*CIRChannelServerUrl::SetServerUrl()
-	*sets server url 
-	*@param TDesC
-	*/
-	IMPORT_C	void SetServerUrl(const TDesC& aServerUrl);
-	
-	/**
-	*CIRChannelServerUrl::SetBitRate()
-	*sets server bitrate 
-	*@param TInt
-	*/
-	IMPORT_C	void SetBitRate(TInt aBitrate);
-	
-	/**
-	*CIRChannelServerUrl::GetServerName()
-	*gets server name 
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetServerName() const;
-	
-	/**
-	*CIRChannelServerUrl::GetServerUrl()
-	*gets server url 
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetServerUrl() const;
-	
-	/**
-	*CIRChannelServerUrl::GetBitRate()
-	*gets server bitrate
-	*@return TInt
-	*/
-	IMPORT_C	TInt GetBitRate() const;
-	
-	/**
-	*CIRChannelServerUrl::~CIRChannelServerUrl()
-	*standard C++ destructor 
-	*/	
-	~CIRChannelServerUrl();
-	
-	/**
-	*CIRChannelServerUrl::=()
-	*standard C++ copy constructor(deep copy) 
-	*@param CIRChannelServerUrl
-	*/	
-	IMPORT_C	CIRChannelServerUrl& operator=(const CIRChannelServerUrl& churl);
-		
-	/**
-	*CIRChannelServerUrl::ExternalizeL()
-	*function to externalize url data
-	*@param CIRChannelServerUrl
-	*/
-	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream);	
-	
-	/**
-	*CIRChannelServerUrl::InternalizeL()
-	*function to internalize url data
-	*@param CIRChannelServerUrl
-	*/
-	IMPORT_C void InternalizeL(RReadStream& aReadStream);
-
-protected:
-	
-	/**
-	*CIRChannelServerUrl::ConstructL()
-	*standard second phase construction
-	*/	
-	void ConstructL() const;
-	
-public:
-	//server name
-	HBufC *iServerName;
-	HBufC *iURL;
-	//bit rate
-	TInt iBitrate;
-	};
-	
-#endif //IRCHANNELSERVERURL_H
--- a/internetradio2.0/datastructuresinc/irisdspreset.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,539 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  iSDS preset structure.
-*
-*/
-
-
-#ifndef IRISDSPRESET_H
-#define IRISDSPRESET_H
-
-#include <badesca.h>
-
-class CIRChannelServerUrl;
-class RReadStream;
-class RWriteStream;
-
-/**
- * This class provides the basic structure to hold the preset
- *information that come from the isds server.
- *It also provides the basic getter and setter functions to
- *manage the preset information.
- *for url selection for a particular bitrate some functionality
- *has been provided
- *copy constructor and assignment operator has been provided to
- *override the default ones
- *
- * @code
- *CIRIsdsPreset* preset = CIRIsdsPreset::NewL()
- *preset->SetXXX();
- *preset->GetXXX()
- * *preset1 = *preset2
- * @endcode
- *
- */
-
-class CIRIsdsPreset:public CBase
-	{
-
-	public:
-
-	/**
-	*CIRIsdsPreset::NewL()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRIsdsPreset
-	*/
-	IMPORT_C	static CIRIsdsPreset* NewL();
-
-
-	/**
-	*CIRIsdsPreset::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRIsdsPreset
-	*/
-	IMPORT_C	static CIRIsdsPreset* NewLC();
-
-
-	/**
-	*CIRIsdsPreset::~CIRIsdsPreset()
-	*standard C++ destructor
-	*/
-	~CIRIsdsPreset();
-
-	protected:
-    /**
-    *CIRIsdsPreset::CIRIsdsPreset()
-    *standard C++ constructor
-    */
-	CIRIsdsPreset();
-	
-	/**
-	*CIRIsdsPreset::ConstructL()
-	*standard second phase constructor(Leaveable)
-	*/
-	void ConstructL();
-
-
-	public:
-
-
-	//setter functions
-
-	/**
-	*CIRIsdsPreset::SetId()
-	*sets id
-	*@param TDesC,supplied by xml parser
-	*/
-	IMPORT_C	void SetId(const TDesC &aId);
-
-	/**
-	*CIRIsdsPreset::SetId()
-	*sets id
-	*@param TInt,provided to manipulate the id number
-	*/
-	IMPORT_C	void SetId(TInt aId);
-
-	/**
-	*CIRIsdsPreset::SetName()
-	*sets the preset name
-	*@param TdesC aname,the name to be set
-	*/
-	IMPORT_C	void SetName(const TDesC &aName);
-
-	/**
-	*CIRIsdsPreset::SetLangInfo()
-	*sets the preset language name and the code
-	*@param TdesC,TdesC language id and name to be set
-	*/
-	IMPORT_C	void SetLangInfo(const TDesC &aLangId,const TDesC& aLangName);
-
-	/**
-	*CIRIsdsPreset::SetCountryInfo()
-	*sets the preset country name and the code
-	*@param TdesC,TdesC country id and country name to be set
-	*/
-	IMPORT_C void SetCountryInfo(const TDesC& aCountryId,
-		const TDesC& aCountryName);
-
-	/**
-	*CIRIsdsPreset::SetLangCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	IMPORT_C     void SetLangCode(const TDesC &aLangId);
-
-	/**
-	*CIRIsdsPreset::SetLang()
-	*sets the language
-	*@param TdesC language
-	*/
-	IMPORT_C	void SetLang(const TDesC& aLangName);
-
-	/**
-	*CIRIsdsPreset::SetCountryCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	IMPORT_C	void SetCountryCode(const TDesC &aCountryId);
-
-	/**
-	*CIRIsdsPreset::SetCountryName()
-	*sets the language name
-	*@param TdesC language name
-	*/
-	IMPORT_C	void SetCountryName(const TDesC& aCountryName);
-
-	/**
-	*CIRIsdsPreset::SetLastModifiedTime()
-	*sets the lastmodified time stamp
-	*@param TdesC lastmodified time stamp
-	*/
-	IMPORT_C	void SetLastModifiedTime(const TDesC &aLastModified);
-
-	/**
-	*CIRIsdsPreset::SetGenreInfo()
-	*sets the genreid and name
-	*@param aGenreId
-	*@param aGenreName
-	*/
-	IMPORT_C	void SetGenreInfo(const TDesC& aGenreId,const TDesC& aGenreName);
-
-	/**
-	*CIRIsdsPreset::SetImgUrl()
-	*sets the image url
-	*@param aImgUrl
-	*/
-	IMPORT_C	void SetImgUrl(const TDesC& aImgUrl);
-
-	/**
-	*CIRIsdsPreset::SetLogoDataL()
-	*sets the Logo Data
-	*@param aData
-	*@param aSize
-	*/
-    IMPORT_C void SetLogoData( const TDesC8& aData );
-
-	/**
-	*CIRIsdsPreset::SetAdvertisementInUse()
-	*sets the advertisementinuse url
-	*@param aAdvertisementInUse
-	*/
-	IMPORT_C	void SetAdvertisementInUse(const TDesC& aAdvertisementInUse);
-
-	/**
-	*CIRIsdsPreset::SetDescription()
-	*sets the description for the channel
-	*@param aDescription
-	*/
-	IMPORT_C	void SetDescription(const TDesC& aDescription);
-
-	/**
-	*CIRIsdsPreset::SetAdvertisementUrl()
-	*sets the advertisement url
-	*@param aAdvertisementUrl
-	*/
-	IMPORT_C	void SetAdvertisementUrl(const TDesC& aAdvertisementUrl);
-
-	/**
-	*CIRIsdsPreset::SetUrlCount()
-	*sets the count of the number of urls
-	*/
-	IMPORT_C	void SetUrlCount();
-
-	/**
-	*CIRIsdsPreset::SetShortDesc()
-	*sets the short description
-	*@param aShortDesc
-	*/
-	IMPORT_C	void SetShortDesc(const TDesC& aShortDesc);
-
-	/**
-	 * Sets the genre name
-	 * @param aGenreName
-	 */
-	IMPORT_C	void SetGenreName(const TDesC& aGenreName);
-
-	/**
-	 * Sets the genre id
-	 * @param aGenreId
-	 */
-	IMPORT_C	void SetGenreId(const TDesC& aGenreId);
-
-	/**
-	*CIRIsdsPreset::SetUrlCount()
-	*sets the count of the number of urls
-	*@param aCnt ,count
-	*/
-	IMPORT_C	void SetUrlCount(TInt aCnt);
-
-	/**
-	*CIRIsdsPreset::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate .server bitrate
-	*/
-	IMPORT_C void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,const TDesC &aBitrate);
-
-	/**
-	*CIRIsdsPreset::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate ,server bitrate
-	*/
-	IMPORT_C void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate);
-
-	/**
-	*CIRIsdsPreset::SetChannelType()
-	*sets the channel type
-	*@param aChannelType userdefined,isds,adhoc
-	*/
-	IMPORT_C	void SetChannelType(TInt aChannelType);
-	
-	
-	/**
-	*CIRIsdsPreset::SetMusicStoreStatus()
-	*sets the musicStoreEnabled 
-	*@param aMusicStoreStatus
-	*/
-	IMPORT_C    void SetMusicStoreStatus(const TDesC& aMusicStoreStatus);
-	
-	
-	
-	
-
-	//for serialization
-	/**
-	*CIRIsdsPreset::ExternalizeL()
-	*serializes the preset data into a stream
-	*@param aWriteStream
-	*/
-	IMPORT_C	void ExternalizeL(RWriteStream& aWriteStream);
-
-	/**
-	*CIRIsdsPreset::InternalizeL()
-	*serializes the preset data from a stream to a structure
-	*@param aReadStream
-	*/
-	IMPORT_C 	void InternalizeL(RReadStream& aReadStream);
-
-	//getter functions
-	/**
-	*CIRIsdsPreset::GetId()
-	*gets the channel id
-	*@return TInt
-	*/
-	IMPORT_C	TInt GetId() const;
-
-	/**
-	*CIRIsdsPreset::GetName()
-	*gets the channel name
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetName() const;
-
-	/**
-	*CIRIsdsPreset::GetLangId()
-	*gets the channel channelid
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetLangId() const;
-
-	/**
-	*CIRIsdsPreset::GetLangName()
-	*gets the channel language name
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetLangName() const;
-
-	/**
-	*CIRIsdsPreset::GetCountryId()
-	*gets the channel countryid
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetCountryId() const;
-
-	/**
-	*CIRIsdsPreset::GetCountryName()
-	*gets the channel country name
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetCountryName() const;
-
-	/**
-	*CIRIsdsPreset::GetLastModifiedTime()
-	*gets the channel last modified time stamp
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetLastModifiedTime() const;
-
-	/**
-	*CIRIsdsPreset::GetDescription()
-	*gets the channel description
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetDescription() const;
-
-	/**
-	*CIRIsdsPreset::GetShortDescription()
-	*gets the channel  short description
-	*@return TDesC
-	*/
-	IMPORT_C   const TDesC& GetShortDescription() const;
-
-    /**
-    *CIRIsdsPreset::GetChannelType()
-	*gets the channel  Type
-	*@return TInt
-	*/
-	IMPORT_C	TInt GetChannelType() const;
-
-	/**
-	*CIRIsdsPreset::GetGenreId()
-	*gets the channel  genreid
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetGenreId() const;
-
-	/**
-	*CIRIsdsPreset::GetGenreName()
-	*gets the channel  genre name
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetGenreName() const;
-
-	/**
-	*CIRIsdsPreset::GetAdvertisementUrl()
-	*gets the channel  advertisement url
-	*@return TDesC
-	*/
-	IMPORT_C	const TDesC& GetAdvertisementUrl() const;
-
-	/**
-	 * Gets the channel advertisement in use
-	 * @return TDesC
-	 */
-	IMPORT_C	const TDesC& GetAdvertisementInUse() const;
-
-	/**
-	 * Gets the image url
-	 * @return TDesC
-	 */
-	IMPORT_C	const TDesC& GetImgUrl() const;
-
-    /**
-    *CIRIsdsPreset::GetUrlCount()
-	*gets the channel  url count
-	*@return TDesC
-	*/
-	IMPORT_C	TInt GetUrlCount() const;
-
-	/*
-	*CIRIsdsPreset::GetLogoData()
-	*gets the Logo Data
-	*@return TDesC&
-	*/
-    IMPORT_C const TDesC8& GetLogoData() const;
-
-		/**
-	*CIRIsdsPreset::GetMusicStoreStatus()
-	*gets the musicStoreEnabled 
-	*@return TDesC&
-	*/
-	IMPORT_C    const TDesC& GetMusicStoreStatus() const;
-
-
-	/**
-	*CIRIsdsPreset::SetLastModifiedTime()
-	*gets the channel  url at a particular index
-	*@param aindex
-	*@return CIRChannelServerUrl
-	*/
-	IMPORT_C	CIRChannelServerUrl& GetUrl(TInt aInt);
-
-    /**
-    *CIRIsdsPreset::operator=()
-	*assignment operator
-	*@param CIRIsdsPreset& aPreset
-	*@return CIRIsdsPreset
-	*/
-	IMPORT_C CIRIsdsPreset& operator=(const CIRIsdsPreset& aPreset);
-
-	/**
-	*CIRIsdsPreset::GetAvailableBitrates()
-	*gets the bitrate array
-	*@return RArray<TInt>
-	*/
-	IMPORT_C 	TInt GetAvailableBitrates(RArray<TInt>& aBitrates) const;
-
-	/**
-	*CIRIsdsPreset::GetUrlForBitrateL()
-	*gets the array of bitrates for a particular bitrate
-	*@param aBitrate
-	*@return CDesCArrayFlat
-	*/
-	IMPORT_C 	CDesCArrayFlat* GetUrlForBitrateL(TInt aBitrate);
-
-	/**
-	*CIRIsdsPreset::GetExactUrlForBitrateL()
-	*Urls exactly matching a given bitrate for display purpose
-	*@param aBitrate
-	*@return CDesCArrayFlat
-	*/
-	IMPORT_C 	CDesCArrayFlat* GetExactUrlForBitrateL(TInt aBitrate);
-
-    /**
-	*CIRIsdsPreset::GetChannelUrlAtL()
-	*sets the lastmodified time stamp
-	*returns the url at the urlarray by index
-	*@param aIndex
-	*@return TDesC
-	*/
-	IMPORT_C const TDesC& GetChannelUrlAtL(TInt aIndex) const;
-    /**
-	*CIRIsdsPreset::GetChannelUrlAtL()
-	*sets the lastmodified time stamp
-	*returns the url at the urlarray by index
-	*@param aIndex
-	*@return TDesC
-	*/
-	IMPORT_C  TInt GetChannelBitrateL(TInt aIndex);
-
-private:
-
-    /**
-	*CIRIsdsPreset::SortInOrderL()
-	*sorts the urls in bitrate order desc.
-	*/
-	void SortInOrderL();
-
-public:
-
-	//url array
-	CArrayPtrFlat<CIRChannelServerUrl>*iUrlArray;
-
-    /**type of presets(source)*/
-    enum TChannelType
-    {
-    	EUserDefined,/**added by user*/
-    	EIsdsPreset,/**fetched from isds*/
-    	EAdhoc /**not in use currently*/
-    };
-
-private:
-	//no of channel urls
-	TInt iChannelUrlCount;
-    //0 for user defined 1 for isds type.
-	TInt iType;
-	//isds generated preset id
-	TInt iPresetId;
-	//preset name
-	RBuf iName;
-	//preset language code
-	RBuf iLanguageCode;
-	//preset language
-	RBuf iLanguage;
-	//preset country of origin code
-	RBuf iCountryCode;
-	//preset country of origin
-	RBuf iCountry;
-	//preset last modified
-	RBuf iLastModified;
-	//musicStoreEnabled value
-	RBuf iMusicStoreStatus;
-	//not in use
-	RBuf iAdvertisementUrl;
-	//not in use
-	RBuf iAdvertisementInUse;
-	//not in use
-	RBuf iImgUrl;
-	//Logo Data
-	RBuf8 iLogoData;
-	//channel description
-	RBuf iDescription;
-	//channel short desription
-	RBuf iShortDesc;
-	//channel genre name
-	RBuf iGenereName;
-	//channel genre id
-	RBuf iGenereId;
-	//channel bitrate
-	TInt iBitrate;
-
-	};
-
-#endif	//IRISDSPRESET_H
--- a/internetradio2.0/datastructuresinc/irlastplayedsongs.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +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 IRLASTPLAYEDSONGS_H
-#define IRLASTPLAYEDSONGS_H
-
-#include <e32base.h>
-
-class RReadStream;
-class RWriteStream;
-
-class CIRLastPlayedSongs:public CBase
-	{
-	public:
-	
-	
-	/**
-	*Function : NewL
-	*Function returns an instance of CIRLastPlayedSongs
-	*Two phase constructor
-	*@return instance of CIRLastPlayedSongs
-	*/
-	IMPORT_C static CIRLastPlayedSongs* NewL();
-	
-	
-	/**
-	*CIRLastPlayedSongs::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRLastPlayedSongs
-	*/
-	IMPORT_C static CIRLastPlayedSongs* NewLC();
-	
-
-	/**
-	*CIRLastPlayedSongs::~CIRLastPlayedSongs()
-	*standard C++ destructor
-	*/
-	~CIRLastPlayedSongs();
-	
-	
-	/**
-	*CIRLastPlayedSongs::SetSongName()
-	*Function to set song name from a TDesC
-	*@param TDesC
-	*/
-	IMPORT_C void SetSongName(const TDesC&aSongName);
-	
-	
-	/**
-	*CIRLastPlayedSongs::GetSongName()
-	*Function to get song name from a TDesC
-	*@return TDesc instance
-	*/
-	IMPORT_C TDesC& GetSongName();
-
-	
-	/**
-	*CIRLastPlayedSongs::SetArtistName()
-	*Function to set artist name from a TDesC
-	*@param TDesc
-	*/
-	IMPORT_C void SetArtistName(const TDesC& aArtistName);
-	
-	
-	/**
-	*CIRLastPlayedSongs::GetArtistName()
-	*Function to get artist name from a TDesC
-	*@return TDesc instance
-	*/
-	IMPORT_C TDesC& GetArtistName();
-	
-	
-	/**
-	*CIRLastPlayedSongs::ExternalizeL()
-	*externalizes the data
-	*@param RWriteStream
-	*/
-	IMPORT_C void ExternalizeL(RWriteStream & aWriteStream);
-	
-	
-	/**
-	*CIRLastPlayedSongs::InternalizeL()
-	*internalizes the data
-	*@param RWriteStream
-	*/
-	IMPORT_C void InternalizeL(RReadStream & aReadStream);		
-	
-	
-	/**
-	*CIRLastPlayedSongs::=()
-	*standard C++ copy constructor(deep copy) 
-	*@param CIRLastPlayedSongs
-	*@return CIRLastPlayedSongs reference
-	*/
-	IMPORT_C CIRLastPlayedSongs& operator=(const CIRLastPlayedSongs& aSng);
-	
-	protected:
-	/**
-	*CIRLastPlayedSongs::ConstructL()
-	*standard second phase constructor
-	*/
-	void ConstructL();
-	
-private:
-	HBufC *iSongName;
-	HBufC *iArtistName;	
-	};
-	
-#endif //IRLASTPLAYEDSONGS_H
\ No newline at end of file
--- a/internetradio2.0/datastructuresinc/irotaupdate.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +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 IROTAUPDATE_H
-#define IROTAUPDATE_H
-
-#include <e32base.h>
-
-class RReadStream;
-class RWriteStream;
-
-/**
- * This class provides the basic structure to hold the OTA information.
- *information that come from the isds server is parsed and put into this structure
- *It also provides the basic setter functions to 
- *manage the OTA information.
- * @code
- *CIROTAUpdate* ota = CIROTAUpdate::NewL()
- *ota->SetXXX();
- *delete ota;
- * @endcode
- *   
- */
-
-class CIROTAUpdate : public CBase
-	{
-	public :
-	
-	/**
-	*Function : NewL
-	*Function returns an instance of CIROTAUpdate
-	*Two phase constructor
-	*@return instance of CIROTAUpdate
-	*/
-	IMPORT_C	static CIROTAUpdate* NewLC();
-	
-	
-	/**
-	*CIROTAUpdate::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIROTAUpdate
-	*/
-	IMPORT_C 	static CIROTAUpdate* NewL();
-    
-	
-	/**
-	*CIROTAUpdate::ConstructL()
-	*standard second phase constructor
-	*/
-	IMPORT_C	void ConstructL();
-	
-	
-	/**
-	*CIROTAUpdate::~CIROTAUpdate()
-	*standard C++ destructor
-	*/
-	~CIROTAUpdate();
-	
-	public:
-	
-	
-	/**
-	*CIROTAUpdate::SetUpdateMethod()
-	*Function to set update method
-	*@param TDesC
-	*/
-	IMPORT_C  void     SetUpdateMethod(const TDesC& aUpdateMethod);
-	
-	
-	/**
-	*CIROTAUpdate::SetVersion()
-	*Function to set version
-	*@param TDesC
-	*/
-	IMPORT_C  void	 SetVersion(const TDesC& aVersion);
-	
-	
-	/**
-	*CIROTAUpdate::SetUpdateInterval()
-	*Function to set update interval
-	*@param TDesC
-	*/
-	IMPORT_C  void	 SetUpdateInterval(const TDesC& aUpdateInterval);
-	
-	
-	/**
-	*CIROTAUpdate::SetOTAUrl()
-	*Function to set OTA Url
-	*@param TDesC
-	*/
-	IMPORT_C  void 	 SetOTAUrl(const TDesC& aOTAUrl);
-	
-	
-	/**
-	*CIROTAUpdate::ExternalizeL()
-	*externalizes the data
-	*@param RWriteStream
-	*/
-	IMPORT_C  void     ExternalizeL(RWriteStream& aStream) const;
-	
-	
-	/**
-	*CIROTAUpdate::InternalizeL()
-	*internalizes the data
-	*@param RWriteStream
-	*/
-	IMPORT_C  void     InternalizeL(RReadStream& aStream);
-	
-	public :
-	//native or browser	
-	HBufC*   iUpdateMethod;
-	//version no
-	HBufC*   iVersion; 
-	//url where the newer version can be found
-	HBufC*	 iOTAUrl;
-	//silence period
-	TInt     iUpdateInterval;
-   };
-   
-   #endif// IROTAUPDATE_H
-	
--- a/internetradio2.0/datastructuressrc/iradvertisement.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +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 "iradvertisement.h"
-#include "irdebug.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewLC
-// Function returns an instance of CIRAdvertisement
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRAdvertisement* CIRAdvertisement::NewLC()
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::NewLC - Entering" );
-	CIRAdvertisement* self = new (ELeave) CIRAdvertisement;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRAdvertisement::NewLC - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::NewL()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRAdvertisement* CIRAdvertisement::NewL()
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::NewL - Entering" );
-	CIRAdvertisement* self = CIRAdvertisement::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRAdvertisement::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::ConstructL()
-//standard second phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAdvertisement::ConstructL() const
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::ConstructL" );
-	return;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::~CIRAdvertisement()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisement::~CIRAdvertisement()
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::~CIRAdvertisement - Entering" );
-	delete  iUrl;
-	iUrl=NULL;
-	delete iAdvInUse;
-	iAdvInUse = NULL;
-	IRLOG_DEBUG( "CIRAdvertisement::~CIRAdvertisement - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::SetAdvInUse()
-//Function to set the advertisement in use
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAdvertisement::SetAdvInUse(const TDesC& aAdvInUse)
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::SetAdvInUse - Entering" );
-	iAdvInUse=aAdvInUse.Alloc();
-	IRLOG_DEBUG( "CIRAdvertisement::SetAdvInUse - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::SetUsage()
-//Function to set the number of times the global adv to be shown
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAdvertisement::SetUsage(const TDesC& aUsageVisibleTimes)
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::SetUsage - Entering" );
-	TLex var(aUsageVisibleTimes);
-	var.Val(iUsageVisibleTimes);
-	IRLOG_DEBUG( "CIRAdvertisement::SetUsage - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::SetVisibleTime()
-//Function to set the duration of the advertisement to be displayed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAdvertisement::SetVisibleTime(const TDesC& aVisibleTime)
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::SetVisibleTime - Entering" );
-	 TLex var(aVisibleTime);
-	var.Val(iVisibleTime);
-	IRLOG_DEBUG( "CIRAdvertisement::SetVisibleTime - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRAdvertisement::SetURL()
-//Function to set the url of the global advertisement
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAdvertisement::SetURL(const TDesC& aUrl)
-	{
-	IRLOG_DEBUG( "CIRAdvertisement::SetURL - Entering" );
-	 iUrl = aUrl.Alloc();
-	IRLOG_DEBUG( "CIRAdvertisement::SetURL - Exiting." );
-	return;
-	}
-
--- a/internetradio2.0/datastructuressrc/irbrowsecatagoryitems.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +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 "irdebug.h"
-#include "irbrowsecatagoryitems.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::NewL()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRBrowseCatagoryItems* CIRBrowseCatagoryItems::NewL()
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewL - Entering" );
-	CIRBrowseCatagoryItems* self = CIRBrowseCatagoryItems::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRBrowseCatagoryItems* CIRBrowseCatagoryItems::NewLC()
-    {
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewLC - Entering" );
-	CIRBrowseCatagoryItems* self = new (ELeave) CIRBrowseCatagoryItems;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewLC - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::ConstructL()
-//standard second phase constructor
-// ---------------------------------------------------------------------------
-//
- void CIRBrowseCatagoryItems::ConstructL() const
-	{
-    IRLOG_DEBUG( "CIRBrowseCatagoryItems::ConstructL" );
-	return;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
- CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems - Entering" );
-	delete iCatName;
-	iCatName=NULL;
-	delete iCatId;
-	iCatId=NULL;
-	delete iCatGetOperation;
-	iCatGetOperation=NULL;
-	
-	delete iCatBannerUrl;
-	iCatBannerUrl=NULL;
-	
-	delete iCatClickThroughUrl;
-	iCatClickThroughUrl=NULL;
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::SetTextL()
-//sets the cache status informa
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseCatagoryItems::SetTextL(const TDesC& aCatName,
-											   const TDesC& aCatId)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetTextL - Entering" );
-	iCatName = aCatName.Alloc();
-	iCatId=aCatId.Alloc();	
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetTextL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::SetSize()
-//sets the size of the object iSize,after converting it from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  void CIRBrowseCatagoryItems::SetSize(const TDesC &aCatSize)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetSize - Entering" );
-	TLex var(aCatSize);
-	var.Val(iSize);
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetSize - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::SetGetOperation()
-//sets params for retriving data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseCatagoryItems::SetGetOperation(const TDesC& aCatGetOperation)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetGetOperation - Entering" );
-	iCatGetOperation = aCatGetOperation.Alloc();
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetGetOperation - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::ExternalizeL()
-//externalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseCatagoryItems::ExternalizeL(RWriteStream& aStream) const
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::ExternalizeL - Entering" );
-	if( !iCatGetOperation )
-		{
-		aStream.WriteInt32L(0);
-		}
-	else
-		{
-		aStream.WriteInt32L(iCatGetOperation->Des().MaxLength());
-		aStream << *iCatGetOperation;
-		}
-	if(!iCatName)
-		{
-		aStream.WriteInt32L(0);
-		}
-	else
-		{
-	aStream.WriteInt32L(iCatName->Des().MaxLength());
-	aStream << *iCatName;
-		}
-	if(!iCatId)
-		{
-		aStream.WriteInt32L(0);			
-		}
-	else
-		{
-	aStream.WriteInt32L(iCatId->Des().MaxLength());
-	aStream << *iCatId;
-		}
-	if(iSize>0)
-		{
-		aStream.WriteInt32L(iSize);
-		}
-	else
-		{
-		aStream.WriteInt32L(0);			
-		}
-	
-	
-	if(!iCatBannerUrl)
-		{
-		aStream.WriteInt32L(0);			
-		}
-	else
-		{
-		aStream.WriteInt32L(iCatBannerUrl->Des().MaxLength());
-		aStream << *iCatBannerUrl;
-		}
-	
-	if(!iCatClickThroughUrl)
-		{
-		aStream.WriteInt32L(0);	
-		}
-	else
-		{
-		aStream.WriteInt32L(iCatClickThroughUrl->Des().MaxLength());
-		aStream << *iCatClickThroughUrl;
-		}
-	
-		
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::ExternalizeL - Exiting." );	
-	}  
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseCatagoryItems::InternalizeL()
-//internalizes the data.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseCatagoryItems::InternalizeL(RReadStream& aStream)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Entering" );
-	TInt maxlen;
-	maxlen=aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iCatGetOperation=HBufC::NewL(aStream,maxlen);
-		}
-	maxlen     = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iCatName = HBufC::NewL(aStream,maxlen);			
-		}
-	maxlen     = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iCatId = HBufC::NewL(aStream,maxlen);	
-		}
-	iSize  = aStream.ReadInt32L();
-	
-	maxlen = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iCatBannerUrl = HBufC::NewL(aStream, maxlen);
-		}
-	
-	maxlen = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iCatClickThroughUrl = HBufC::NewL(aStream, maxlen);	
-		}
-	
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Exiting." );
-	}  
-	
-
-
-EXPORT_C void CIRBrowseCatagoryItems::SetBannerUrl(const TDesC& aBannerUrl)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetBannerUrl() - Entering" );
-	iCatBannerUrl = aBannerUrl.Alloc();
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetBannerUrl - Exiting" );
-	}
-	
-	
-EXPORT_C void CIRBrowseCatagoryItems::SetClickThroughUrl(const TDesC& aClickThroughUrl)
-	{
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetClickThroughUrl() - Entering" );
-	iCatClickThroughUrl = aClickThroughUrl.Alloc();
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetClickThroughUrl() - Exiting" );
-	}
--- a/internetradio2.0/datastructuressrc/irbrowsechannelitems.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,357 +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 "irbrowsechannelitems.h"
-#include "irdebug.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C CIRBrowseChannelItems* CIRBrowseChannelItems::NewLC()
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::NewLC - Entering" );
-	CIRBrowseChannelItems* self = new (ELeave) CIRBrowseChannelItems;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRBrowseChannelItems::NewLC - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::NewL()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRBrowseChannelItems* CIRBrowseChannelItems::NewL()
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::NewL - Entering" );
-	CIRBrowseChannelItems* self = CIRBrowseChannelItems::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRBrowseChannelItems::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::ConstructL()
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
- void CIRBrowseChannelItems::ConstructL() const
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::ConstructL" );
-	return;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::~CIRBrowseChannelItems()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//	
- CIRBrowseChannelItems::~CIRBrowseChannelItems()
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::~CIRBrowseChannelItems - Entering" );
-	delete iChannelName;
-	iChannelName=NULL;
-	delete iChannelGetOperation;
-	iChannelGetOperation=NULL;
-	delete iShortDescription;
-	iShortDescription=NULL;
-	iImgUrl.Close();
-	
-	delete iBannerUrl;
-	iBannerUrl=NULL;
-	delete iClickThroughUrl;
-	iClickThroughUrl=NULL;
-
-	IRLOG_DEBUG( "CIRBrowseChannelItems::~CIRBrowseChannelItems - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetTextL()
-//Set data namely channelname,channelid,description
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetTextL(const TDesC& aChannelName,
-	const TDesC& aChannelId,const TDesC& aDescription)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetTextL - Entering" );
-	iChannelName = aChannelName.Alloc();
-	iShortDescription=aDescription.Alloc();	
-	TLex var(aChannelId);
-	var.Val(iChannelID);
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetTextL - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetGetOperationL()
-//Set data get methord
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C void CIRBrowseChannelItems::SetGetOperationL(
-	const TDesC& aChannelGetOperation)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetGetOperationL - Entering" );
-	iChannelGetOperation = aChannelGetOperation.Alloc();
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetGetOperationL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetSize()
-//Set data size of data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetSize(const TDesC& aSize)
-	{
-    IRLOG_DEBUG( "CIRBrowseChannelItems::SetSize - Entering" );
-	TLex var(aSize);
-	var.Val(iSize);
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetSize - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetImageUrl()
-//Set the url for the iImgUrl
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C void CIRBrowseChannelItems::SetImageUrl(const TDesC& aImgUrl)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetImageUrl - Entering" );
-	iImgUrl.Create(aImgUrl.Length());
-	iImgUrl.Copy(aImgUrl);
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetImageUrl - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::ExternalizeL()
-//Externalizes data into persistent storage
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::ExternalizeL(RWriteStream& aStream) const
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::ExternalizeL - Entering" );
-	if (iChannelName )
-		{
-		aStream.WriteInt32L(iChannelName->Des().MaxLength());
-		aStream << *iChannelName;
-		}
-	else 
-		{
-		aStream.WriteInt32L(0);
-		}
-	if((iShortDescription) && (iShortDescription->Des().MaxLength() != 0))
-		{	
-		TInt a = iShortDescription->Des().MaxLength();
-		aStream.WriteInt32L(iShortDescription->Des().MaxLength());
-		aStream << *iShortDescription;
-		}
-	else
-		{
-		aStream.WriteInt32L(0);
-		}
-	if(iChannelGetOperation)
-		{
-		aStream.WriteInt32L(iChannelGetOperation->Des().MaxLength());
-		aStream << *iChannelGetOperation;
-		}
-	else
-		{
-		aStream.WriteInt32L(0);
-		}
-	aStream.WriteInt32L(iBitrate1);
-	aStream.WriteInt32L(iBitrate2);
-	aStream.WriteInt32L(iBitrate3);
-	aStream.WriteUint32L(iChannelID);
-	if(iBannerUrl)
-		{
-		aStream.WriteInt32L(iBannerUrl->Des().MaxLength());
-		aStream <<*iBannerUrl;
-		}
-	else
-		{
-		aStream.WriteInt32L(0);
-		}
-	
-	if(iClickThroughUrl)	
-		{
-		aStream.WriteInt32L(iClickThroughUrl->Des().MaxLength());
-		aStream <<*iClickThroughUrl;
-		}
-	else
-		{
-		aStream.WriteInt32L(0);
-		}
-		
-	if(iImgUrl.Length() != 0)
-		{
-		aStream.WriteInt32L(iImgUrl.MaxLength());
-		aStream <<iImgUrl;
-		}
-	else
-		{
-		aStream.WriteInt32L(0);	
-		}
-
-	IRLOG_DEBUG( "CIRBrowseChannelItems::ExternalizeL - Exiting." );
-	}  
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::InternalizeL()
-//internalizes data from persistent storage
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::InternalizeL(RReadStream& aStream)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::InternalizeL - Entering" );
-	TInt maxlen;
-	maxlen     = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iChannelName = HBufC::NewL(aStream,maxlen);
-		}
-	maxlen     = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iShortDescription = HBufC::NewL(aStream,maxlen);
-		}
-	maxlen     = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iChannelGetOperation = HBufC::NewL(aStream,maxlen);
-		}
-	iBitrate1  = aStream.ReadInt32L();
-	iBitrate2  = aStream.ReadInt32L();
-	iBitrate3  = aStream.ReadInt32L();
-	iChannelID = aStream.ReadUint32L();
-	
-	
-	
-	maxlen = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iBannerUrl = HBufC::NewL(aStream, maxlen);
-		}
-	maxlen = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iClickThroughUrl = HBufC::NewL(aStream, maxlen);
-		}
-	maxlen = aStream.ReadInt32L();
-	if(maxlen!=0)
-		{
-		iImgUrl.Close();
-		iImgUrl.CreateL(aStream, maxlen);			
-		}
-	
-
-	IRLOG_DEBUG( "CIRBrowseChannelItems::InternalizeL - Exiting." );
-	}  
-	
-
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetBitrate()
-//Set data for 3bitrates
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetBitrate(const TDesC &aBitrate1,
-	const TDesC &aBitrate2,const TDesC &aBitrate3)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate3 - Entering" );
-	TLex var1(aBitrate1);
-	var1.Val(iBitrate1);
-	TLex var2(aBitrate2);
-	var2.Val(iBitrate2);
-	TLex var3(aBitrate3);
-	var3.Val(iBitrate3);	
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate3 - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetBitrate()
-//Set data for 2 bitrates
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetBitrate(const TDesC &aBitrate1,
-	const TDesC &aBitrate2)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate2 - Entering" );
-	TLex var1(aBitrate1);
-	var1.Val(iBitrate1);
-	TLex var2(aBitrate2);
-	var2.Val(iBitrate2);
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate2 - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetBitrate()
-//Set data for 1 bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetBitrate(const TDesC &aBitrate1)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate1 - Entering" );
-	TLex var1(aBitrate1);
-	var1.Val(iBitrate1);	
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate1 - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetBannerUrl()
-//Set data namely BannerUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetBannerUrl(const TDesC& aBannerUrl)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBannerUrl - Entering" );
-	iBannerUrl = aBannerUrl.Alloc();
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetBannerUrl - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRBrowseChannelItems::SetBannerUrl()
-//Set data namely BannerUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRBrowseChannelItems::SetClickThroughUrl(const TDesC& aClickThroughUrl)
-	{
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetClickThroughUrl - Entering" );
-	iClickThroughUrl = aClickThroughUrl.Alloc();
-	IRLOG_DEBUG( "CIRBrowseChannelItems::SetClickThroughUrl - Exiting." );
-	}
--- a/internetradio2.0/datastructuressrc/irchannelserverurl.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +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 "irchannelserverurl.h"
-#include "irdebug.h"
-	
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::NewL()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRChannelServerUrl* CIRChannelServerUrl::NewL()
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::NewL - Entering" );
-	CIRChannelServerUrl* self=CIRChannelServerUrl::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRChannelServerUrl::NewL - Exiting." );
-	return self;
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRChannelServerUrl* CIRChannelServerUrl::NewLC()
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::NewLC - Entering" );
-	CIRChannelServerUrl* self=new(ELeave)CIRChannelServerUrl;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRChannelServerUrl::NewLC - Exiting." );
-	return self;
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::SetServerName()
-//sets server name 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRChannelServerUrl::SetServerName(const TDesC& aServerName)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetServerName - Entering" );
-	iServerName=aServerName.Alloc();
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetServerName - Exiting." );
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::SetServerUrl()
-//sets server url 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRChannelServerUrl::SetServerUrl(const TDesC& aServerUrl)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetServerUrl - Entering" );
-	iURL=aServerUrl.Alloc();
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetServerUrl - Exiting." );
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::SetBitRate()
-//sets server bitrate 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRChannelServerUrl::SetBitRate(TInt aBitrate)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetBitRate - Entering" );
-	iBitrate=aBitrate;
-	//if a negative value comes,set the bitrate to 0,so that it is accessable 
-	//to all the setting combination
-	if ( iBitrate < 0)
-		{
-		iBitrate = 0;
-		}
-	IRLOG_DEBUG( "CIRChannelServerUrl::SetBitRate - Exiting." );
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::GetServerName()
-//gets server name 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRChannelServerUrl::GetServerName() const
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::GetServerName" );	 
-	if( NULL == iServerName )
-	{
-	    CIRChannelServerUrl *tempUrl = const_cast<CIRChannelServerUrl*>(this);
-	    tempUrl->iServerName = HBufC::New(0);
-	}
-	return *iServerName;
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::GetServerUrl()
-//gets server url 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRChannelServerUrl::GetServerUrl() const
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::GetServerUrl" );	 
-	if( NULL == iURL )
-	{
-	    CIRChannelServerUrl *tempUrl = const_cast<CIRChannelServerUrl*>(this);
-	    tempUrl->iURL = HBufC::New(0);
-	}	
-	return *iURL;
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::GetBitRate()
-//gets server bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRChannelServerUrl::GetBitRate() const
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::GetBitRate" );
-	return iBitrate;
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::~CIRChannelServerUrl()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrl::~CIRChannelServerUrl()
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::~CIRChannelServerUrl - Entering" );
-	delete iServerName;
-	iServerName=NULL;
-	delete iURL;
-	iURL=NULL;
-	IRLOG_DEBUG( "CIRChannelServerUrl::~CIRChannelServerUrl - Exiting." );
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::=()
-//standard C++ copy constructor(deep copy) 
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C CIRChannelServerUrl& CIRChannelServerUrl::operator=(
-	const CIRChannelServerUrl& churl)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::operator= - Entering" );
-	if(&churl == this)
-		{
-		return *this;
-		}
-	
-	if(iServerName)
-		{
-		delete iServerName;
-		iServerName=NULL;
-		}
-	if(churl.iServerName)
-		{
-		iServerName=churl.iServerName->Alloc();
-		}
-	if(iURL)
-		{
-		delete iURL;
-		iURL=NULL;
-		}
-	if(churl.iBitrate)
-		{
-		iURL=churl.iURL->Alloc();
-		}
-	iBitrate=churl.iBitrate;
-	IRLOG_DEBUG( "CIRChannelServerUrl::operator= - Exiting." );
-	return *this;
-	}
-	
-	
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::ExternalizeL()
-//function to externalize url data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRChannelServerUrl::ExternalizeL(RWriteStream& aWriteStream)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::ExternalizeL - Entering" );
-	TInt len;
-	if(iServerName && (len=iServerName->Length()) > 0)
-		{
-		aWriteStream.WriteInt32L(len);
-		aWriteStream << *iServerName;
-		}
-	else
-		{
-		aWriteStream.WriteInt32L(0);
-		}
-		
-	if(iURL && (len=iURL->Length()) > 0)
-		{
-		aWriteStream.WriteInt32L(len);
-		aWriteStream << *iURL;
-		}
-	else
-		{
-		aWriteStream.WriteInt32L(0);
-		}
-		
-	aWriteStream.WriteInt32L(iBitrate);
-    IRLOG_DEBUG( "CIRChannelServerUrl::ExternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::InternalizeL()
-//function to internalize url data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRChannelServerUrl::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::InternalizeL - Entering" );
-	TInt len;
-	len= aReadStream.ReadInt32L();
-	if(len!=0)
-		{
-		iServerName=HBufC::NewL(aReadStream,len);	
-		}
-
-	len=aReadStream.ReadInt32L();
-	if(len!=0)
-		{
-		iURL=HBufC::NewL(aReadStream,len);	
-		}
-	iBitrate=aReadStream.ReadInt32L();
-	IRLOG_DEBUG( "CIRChannelServerUrl::InternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRChannelServerUrl::ConstructL()
-//standard second phase construction
-// ---------------------------------------------------------------------------
-//	
- void CIRChannelServerUrl::ConstructL() const
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrl::ConstructL" );
-	return;
-	}
--- a/internetradio2.0/datastructuressrc/irisdspreset.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1141 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  iSDS preset structure.
-*
-*/
-
-
-#include <s32strm.h>
-
-#include "irchannelserverurl.h"
-#include "irdebug.h"
-#include "irisdspreset.h"
-
-const TInt KUrlArrayMaxLength = 128;
-const TInt KUrlForBitrateMaxLength = 128;
-
-_LIT(KComma,",");
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::NewL()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewL()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Entering" );
-	CIRIsdsPreset* self = CIRIsdsPreset::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewLC()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Entering" );
-	CIRIsdsPreset* self = new (ELeave) CIRIsdsPreset;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::~CIRIsdsPreset()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRIsdsPreset::~CIRIsdsPreset()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Entering" );
-	iName.Close();
-	iLanguageCode.Close();
-	iLanguage.Close();
-	iCountryCode.Close();
-	iCountry.Close();
-	iLastModified.Close();
-	iMusicStoreStatus.Close();
-	iAdvertisementUrl.Close();
-	iAdvertisementInUse.Close();
-	iImgUrl.Close();
-	iLogoData.Close();
-	iDescription.Close();
-	iShortDesc.Close();
-	iGenereName.Close();
-	iGenereId.Close();
-
-	if (iUrlArray)
-		{
-		iUrlArray->ResetAndDestroy();
-		}
-	delete iUrlArray;
-	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::CIRIsdsPreset()
-//default C++ constructor
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRIsdsPreset::CIRIsdsPreset()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::CIRIsdsPreset" );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::ConstructL()
-//standard second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRIsdsPreset::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Entering" );
-	iUrlArray = new (ELeave) CArrayPtrFlat<CIRChannelServerUrl>(
-		KUrlArrayMaxLength);
-	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetId()
-//Function to set iPresetId from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetId(const TDesC &aId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Entering" );
-	TLex conv(aId);
-	conv.Val(iPresetId);
-	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetId()
-//Function to set iPresetId
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetId(TInt aId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Entering" );
-	iPresetId=aId;
-	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetName()
-//Function to set iName from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetName(const TDesC &aName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetName - Entering" );
-	iName.Close();
-	iName.Create( aName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetName - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLangInfo()
-//Function to set iLanguageCode, iLanguage
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetLangInfo(const TDesC &aLangId,
-	const TDesC& aLangName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfo - Entering" );
-    SetLangCode( aLangId );
-    SetLang( aLangName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfo - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLangCode()
-//Function to set iLanguageCode from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetLangCode(const TDesC &aLangId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCode - Entering" );
-	iLanguageCode.Close();
-	iLanguageCode.Create( aLangId );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCode - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLang()
-//Function to set iLanguage from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetLang(const TDesC& aLangName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLang - Entering" );
-	iLanguage.Close();
-	iLanguage.Create( aLangName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLang - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetCountryCode()
-//Function to set iCountryCode from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetCountryCode(const TDesC &aCountryId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCode - Entering" );
-	iCountryCode.Close();
-	iCountryCode.Create( aCountryId );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCode - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetCountryName()
-//Function to set iCountry from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetCountryName(const TDesC& aCountryName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryName - Entering" );
-	iCountry.Close();
-	iCountry.Create( aCountryName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryName - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLangInfo()
-//Function to set iCountryCode, iCountry
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetCountryInfo(const TDesC &aCountryId,
-	const TDesC& aCountryName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfo - Entering" );
-	SetCountryCode( aCountryId );
-    SetCountryName( aCountryName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfo - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLastModifiedTime()
-//Function to set iLastModified
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetLastModifiedTime(const TDesC &aLastModified)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTime - Entering" );
-	iLastModified.Close();
-	iLastModified.Create( aLastModified );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTime - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetGenreInfo()
-//Function to set iGenereName, iGenereId
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetGenreInfo(const TDesC& aGenreId,
-	const TDesC& aGenreName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreInfo - Entering" );
-
-	if(iGenereName.Length())
-		{
-		RBuf newBuf;
-		newBuf.Create(
-		    iGenereName.Length() + aGenreName.Length() + KComma().Length() );
-		newBuf.Append( iGenereName );
-		newBuf.Append( KComma );
-		newBuf.Append( aGenreName );
-		iGenereName.Close();
-		iGenereName.Create( newBuf );
-		newBuf.Close();
-		}
-	if(iGenereId.Length())
-		{
-		RBuf newBuf;
-        newBuf.Create(
-            iGenereId.Length() + aGenreId.Length() + KComma().Length() );
-        newBuf.Append( iGenereId );
-        newBuf.Append( KComma );
-        newBuf.Append( aGenreId );
-        iGenereId.Close();
-        iGenereId.Create( newBuf );
-        newBuf.Close();
-		}
-	if(!iGenereName.Length())
-		{
-		iGenereName.Close();
-		iGenereName.Create( aGenreName );
-		}
-	if(!iGenereId.Length())
-		{
-		iGenereId.Close();
-		iGenereId.Create( aGenreId );
-		}
-
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreInfo - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetImgUrl()
-//Function to set iImgUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetImgUrl(const TDesC& aImgUrl)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrl - Entering" );
-	iImgUrl.Close();
-	iImgUrl.Create( aImgUrl );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrl - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetLogoData()
-//Function to set LogoData
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRIsdsPreset::SetLogoData( const TDesC8& aData )
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Entering" );
-
-	iLogoData.Close();
-	iLogoData.Create( aData );
-
-	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetAdvertisementInUse()
-//Function to set iAdvertisementInUse
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetAdvertisementInUse(
-	const TDesC& aAdvertisementInUse)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUse - Entering" );
-	iAdvertisementInUse.Close();
-	iAdvertisementInUse.Create( aAdvertisementInUse );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUse - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetDescription()
-//Function to set iDescription
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset:: SetDescription(const TDesC& aDescription)
-	{
-    IRLOG_DEBUG( "CIRIsdsPreset::SetDescription - Entering" );
-    iDescription.Close();
-    iDescription.Create( aDescription );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetDescription - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetAdvertisementUrl()
-//Function to set iAdvertisementUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetAdvertisementUrl(
-	const TDesC& aAdvertisementUrl)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrl - Entering" );
-	iAdvertisementUrl.Close();
-	iAdvertisementUrl.Create( aAdvertisementUrl );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrl - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetUrlCount()
-//Function to set iChannelUrlCount
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetUrlCount()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
-	iChannelUrlCount=iUrlArray->Count();
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetShortDesc()
-//Function to set iShortDesc
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset:: SetShortDesc(const TDesC& aShortDesc)
-	{
-    IRLOG_DEBUG( "CIRIsdsPreset::SetShortDesc - Entering" );
-    iShortDesc.Close();
-    iShortDesc.Create( aShortDesc );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetShortDesc - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIsdsPreset::SetGenreName()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetGenreName(const TDesC& aGenreName)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreName - Entering" );
-	iGenereName.Close();
-	iGenereName.Create( aGenreName );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreName - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIsdsPreset::SetGenreId()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetGenreId(const TDesC& aGenreId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreId - Entering" );
-	iGenereId.Close();
-	iGenereId.Create( aGenreId );
-	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreId - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetUrlCount()
-//Function to set iChannelUrlCount
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetUrlCount(TInt aCnt)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
-	iChannelUrlCount=aCnt;
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetUrl()
-//Function to set Url parameter
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetUrlL(const TDesC &aServerName,
-	const TDesC &aUrl,const TDesC &aBitrate)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Entering" );
-	CIRChannelServerUrl * hold=CIRChannelServerUrl::NewL();
-	hold->SetServerName(aServerName);
-	hold->SetServerUrl(aUrl);
-	TLex conv(aBitrate);
-	TInt conVal = 0;
-	conv.Val(conVal);
-	//if a negative value comes,set the bitrate to 0,so that it is accessable
-	//to all the setting combination
-	if ( conVal < 0)
-		{
-		conVal = 0;
-		}
-	hold->SetBitRate(conVal);
-	iUrlArray->AppendL(hold);
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetUrl()
-//Function to set Url parameter
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetUrlL(const TDesC &aServerName,
-	const TDesC &aUrl,TInt aBitrate)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Entering" );
-	CIRChannelServerUrl * hold=CIRChannelServerUrl::NewL();
-	hold->SetServerName(aServerName);
-	hold->SetServerUrl(aUrl);
-
-	//if a negative value comes,set the bitrate to 0,so that it is accessable
-	//to all the setting combination
-	if (aBitrate < 0)
-		{
-		aBitrate = 0;
-		}
-	hold->SetBitRate(aBitrate);
-	iUrlArray->AppendL(hold);
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetChannelType()
-//Function to set iType
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetChannelType(TInt aType)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Entering" );
-
-	if ( aType != EUserDefined && aType!=EIsdsPreset && aType!=EAdhoc)
-		{
-		aType=EUserDefined;
-		}
-	iType = aType;
-	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetMusicStoreStatus()
-//Function to set iMusicStoreStatus parameter
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetMusicStoreStatus(const TDesC& aMusicStoreStatus)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatus - Entering" );
-	iMusicStoreStatus.Close();
-	iMusicStoreStatus.Create( aMusicStoreStatus );	
-	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatus - Exiting" );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::ExternalizeL()
-//externalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  void CIRIsdsPreset::ExternalizeL(RWriteStream& aWriteStream)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Entering" );
-//! externalize TInts s
-	aWriteStream.WriteInt32L(iPresetId);
-	aWriteStream.WriteInt32L(iType);
-	aWriteStream.WriteInt32L(iChannelUrlCount);
-
-	// Externalize RBufs
-    aWriteStream << iLanguageCode;
-    aWriteStream << iLanguage;
-    aWriteStream << iCountryCode;
-    aWriteStream << iCountry;
-    aWriteStream << iGenereName;
-    aWriteStream << iGenereId;
-    aWriteStream << iName;
-    aWriteStream << iLastModified;
-    aWriteStream << iAdvertisementUrl;
-    aWriteStream << iAdvertisementInUse;
-    aWriteStream << iImgUrl;
-    aWriteStream << iDescription;
-    aWriteStream << iShortDesc;
-	aWriteStream << iMusicStoreStatus;
-	aWriteStream << iLogoData;
-
-
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		GetUrl(cnt).ExternalizeL(aWriteStream);
-		}
-	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::InternalizeL()
-//internalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Entering" );
-	//! Internalize TInts s
-	iPresetId=aReadStream.ReadInt32L();
-	iType=aReadStream.ReadInt32L();
-	iChannelUrlCount=aReadStream.ReadInt32L();
-
-	// Internalize RBufs
-	iLanguageCode.Close();
-	iLanguageCode.CreateL(aReadStream, KMaxTInt);
-
-	iLanguage.Close();
-	iLanguage.CreateL(aReadStream, KMaxTInt);
-
-	iCountryCode.Close();
-	iCountryCode.CreateL(aReadStream, KMaxTInt);
-
-	iCountry.Close();
-	iCountry.CreateL(aReadStream, KMaxTInt);
-
-	iGenereName.Close();
-	iGenereName.CreateL(aReadStream, KMaxTInt);
-
-	iGenereId.Close();
-	iGenereId.CreateL(aReadStream, KMaxTInt);
-
-	iName.Close();
-	iName.CreateL(aReadStream, KMaxTInt);
-
-	iLastModified.Close();
-	iLastModified.CreateL(aReadStream, KMaxTInt);
-
-	iAdvertisementUrl.Close();
-	iAdvertisementUrl.CreateL(aReadStream, KMaxTInt);
-
-	iAdvertisementInUse.Close();
-	iAdvertisementInUse.CreateL(aReadStream, KMaxTInt);
-
-	iImgUrl.Close();
-	iImgUrl.CreateL(aReadStream, KMaxTInt);
-
-	iDescription.Close();
-	iDescription.CreateL(aReadStream, KMaxTInt);
-
-	iShortDesc.Close();
-	iShortDesc.CreateL(aReadStream, KMaxTInt);
-
-	iMusicStoreStatus.Close();
-	iMusicStoreStatus.CreateL(aReadStream, KMaxTInt);
-
-
-    iUrlArray->ResetAndDestroy();
-
-	iLogoData.Close();
-	iLogoData.CreateL(aReadStream, KMaxTInt);
-	
-	
-	
-	CIRChannelServerUrl* url = NULL;
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		url=CIRChannelServerUrl::NewLC();
-		url->InternalizeL(aReadStream);
-		iUrlArray->AppendL(url);
-		CleanupStack::Pop( url );
-		}
-	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetId()
-//Function to get iPresetId
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsPreset::GetId() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetId" );
-	return iPresetId;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetId()
-//Function to get iName
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  const TDesC& CIRIsdsPreset::GetName() const 
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetName" );
-	return iName;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetLangId()
-//Function to get iLanguageCode
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetLangId() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetLangId" );
-	return iLanguageCode;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetLangName()
-//Function to get iLanguage
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetLangName() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetLangName" );
-	return iLanguage;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetCountryId()
-//Function to get iCountryCode
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetCountryId() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryId" );
-	return iCountryCode;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetCountryName()
-//Function to get iCountry
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetCountryName() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryName" );
-	return iCountry;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetLastModifiedTime()
-//Function to get iLastModified
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetLastModifiedTime() const 
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetLastModifiedTime" );
-	return iLastModified;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetDescription()
-//Function to get iDescription
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetDescription() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetDescription" );
-	return iDescription;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetShortDescription()
-//Function to get iDescription
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  const TDesC& CIRIsdsPreset::GetShortDescription() const 
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetShortDescription" );
-	return iShortDesc;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetChannelType()
-//Function to get iType
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsPreset::GetChannelType() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelType" );
-	return iType;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetGenreId()
-//Function to get iGenereId
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetGenreId() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreId" );
-	return iGenereId;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetGenreName()
-//Function to get iGenereName
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetGenreName() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreName" );
-	return iGenereName;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetAdvertisementUrl()
-//Function to get iAdvertisementUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementUrl() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementUrl" );
-	return iAdvertisementUrl;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIsdsPreset::GetAdvertisementInUse()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementInUse() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementInUse" );
-	return iAdvertisementInUse;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIsdsPreset::GetImgUrl()
-// Function to get iImgUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetImgUrl() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetImgUrl" );
-	return iImgUrl;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetUrlCount()
-//Function to get iChannelUrlCount
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsPreset::GetUrlCount() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlCount" );
-	return iChannelUrlCount;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetUrl()
-//Function to get iLanguageCode
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRChannelServerUrl& CIRIsdsPreset::GetUrl(TInt aInt)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrl" );
-	ASSERT( aInt >= 0 && aInt < iUrlArray->Count() ); 
-	return ((*iUrlArray->At(aInt)));
-	}
-
-
-EXPORT_C  const TDesC& CIRIsdsPreset::GetMusicStoreStatus() const 
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetMusicStoreStatus" );
-	return iMusicStoreStatus;	
-	}
-
-
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetLogoData()
-//Function to get LogoData
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  const TDesC8& CIRIsdsPreset::GetLogoData() const 
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetLogoData" );
-	return iLogoData;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::=()
-//standard C++ copy constructor(deep copy)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRIsdsPreset& CIRIsdsPreset::operator=(const CIRIsdsPreset& aPreset)
-	{
-    IRLOG_DEBUG( "CIRIsdsPreset::operator=  - Entering" );
-
-    if(&aPreset == this)
-		{
-		return *this;
-		}
-
-    iName.Close();
-	iName.Create(aPreset.iName);
-
-	iLanguageCode.Close();
-	iLanguageCode.Create(aPreset.iLanguageCode);
-
-	iLanguage.Close();
-	iLanguage.Create(aPreset.iLanguage);
-
-	iCountryCode.Close();
-	iCountryCode.Create(aPreset.iCountryCode);
-
-	iCountry.Close();
-	iCountry.Create(aPreset.iCountry);
-
-	iLastModified.Close();
-	iLastModified.Create(aPreset.iLastModified);
-
-	iAdvertisementUrl.Close();
-	iAdvertisementUrl.Create(aPreset.iAdvertisementUrl);
-
-	iAdvertisementInUse.Close();
-	iAdvertisementInUse.Create(aPreset.iAdvertisementInUse);
-
-	iImgUrl.Close();
-	iImgUrl.Create(aPreset.iImgUrl);
-
-	iLogoData.Close();
-	iLogoData.Create(aPreset.iLogoData);
-
-	iDescription.Close();
-	iDescription.Create(aPreset.iDescription);
-
-	iShortDesc.Close();
-	iShortDesc.Create(aPreset.iShortDesc);
-	
-	iMusicStoreStatus.Close();
-	iMusicStoreStatus.Create(aPreset.iMusicStoreStatus);
-
-	iGenereName.Close();
-	iGenereName.Create(aPreset.iGenereName);
-
-	iGenereId.Close();
-	iGenereId.Create(aPreset.iGenereId);
-
-
-	iUrlArray->ResetAndDestroy();
-		
-	for(TInt cnt=0;cnt<aPreset.iChannelUrlCount;cnt++)
-		{
-		ASSERT( cnt >= 0 && cnt < aPreset.iUrlArray->Count() );
-		TRAPD(errUrl,SetUrlL(aPreset.iUrlArray->At(cnt)->GetServerName(),
-		aPreset.iUrlArray->At(cnt)->GetServerUrl(),
-		aPreset.iUrlArray->At(cnt)->GetBitRate()))
-		if(errUrl!=KErrNone)
-			{
-			return *this ;
-			}
-		}
-	iChannelUrlCount=aPreset.iChannelUrlCount;
-	iType=aPreset.iType;  //0 for user defined 1 for isds type.
-	iPresetId = aPreset.iPresetId;
-	IRLOG_DEBUG( "CIRIsdsPreset::operator= - Exiting." );
- 	return *this;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetAvailableBitrates()
-//Function to get available bitrates
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsPreset::GetAvailableBitrates(RArray<TInt>& aBitrates) const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Entering." );
-	aBitrates.Reset();
-	TInt err = KErrNone;
-	for(TInt loop=0;loop<iUrlArray->Count() && !err;loop++)
-		{
-		err = aBitrates.InsertInOrder(iUrlArray->At(loop)->GetBitRate());
-		if (err == KErrAlreadyExists)
-		    {
-		    // Do not allow duplicates, but strip them away.
-		    err = KErrNone;
-		    }
-		}
-
-    if (err)
-        {
-        aBitrates.Reset();
-        }
-	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Exiting." );
-	return err;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetUrlForBitrateL()
-//Function to get Url for a given bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetUrlForBitrateL(TInt aBitrate)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
-	CDesCArrayFlat* urlForBitrate = new (ELeave) CDesCArrayFlat(KUrlForBitrateMaxLength);
-	CleanupStack::PushL(urlForBitrate);
-	iBitrate=aBitrate;
-	SortInOrderL();
-	//appending the urls with bit rate less than or
-	//equal to given bit rate limit
-	for(TInt loop=0;loop<iUrlArray->Count();loop++)
-		{
-		if(aBitrate>=iUrlArray->At(loop)->GetBitRate())
-			{
-			urlForBitrate->AppendL(iUrlArray->At(loop)->GetServerUrl());
-			}
-		}
-	//appending	the url	with bit rate greater than given
-	//bit rate limit
-	for(TInt loop = (iUrlArray->Count()-1);loop >= 0;loop--)
-		{
-		if(aBitrate<iUrlArray->At(loop)->GetBitRate())
-			{
-			urlForBitrate->AppendL(iUrlArray->At(loop)->GetServerUrl());
-			}
-		}
-	if ( urlForBitrate->MdcaCount()==0 && iUrlArray->Count() > 0 )
-		{
-		urlForBitrate->AppendL(iUrlArray->At(0)->GetServerUrl());
-		}
-
-
-    CleanupStack::Pop(urlForBitrate);
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
-	return urlForBitrate;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetExactUrlForBitrateL()
-//Function to get Urls exactly matching a given bitrate for display purpose
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetExactUrlForBitrateL(TInt aBitrate)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
-	CDesCArrayFlat* urlForBitrate = new (ELeave) CDesCArrayFlat(KUrlForBitrateMaxLength);
-	CleanupStack::PushL(urlForBitrate);
-
-	SortInOrderL();
-	//appending the urls with bit rate less than or
-	//equal to given bit rate limit
-	for(TInt loop=0;loop<iUrlArray->Count();loop++)
-		{
-		if(aBitrate==iUrlArray->At(loop)->GetBitRate())
-			{
-			urlForBitrate->AppendL(iUrlArray->At(loop)->GetServerUrl());
-			}
-		}
-
-    CleanupStack::Pop(urlForBitrate);
-	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
-	return urlForBitrate;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetChannelUrlAtL()
-//Function to get channel Url for a given index
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRIsdsPreset::GetChannelUrlAtL(TInt aIndex) const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
-	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
-	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
-	return iUrlArray->At(aIndex)->GetServerUrl();
-	}
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetChannelBitrateL()
-//Function to get channel Url for a given index
-// ---------------------------------------------------------------------------
-//
-EXPORT_C  TInt CIRIsdsPreset::GetChannelBitrateL(TInt aIndex)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
-	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
-	CDesCArrayFlat* urlForBitrate = new (ELeave) CDesCArrayFlat(KUrlForBitrateMaxLength);
-	CleanupStack::PushL(urlForBitrate);
-	SortInOrderL();
-	//appending the urls with bit rate less than or
-	//equal to given bit rate limit
-	for(TInt loop=0;loop<iUrlArray->Count();loop++)
-		{
-		if(iBitrate>=iUrlArray->At(loop)->GetBitRate())
-			{
-			urlForBitrate->AppendL(iUrlArray->At(loop)->GetServerUrl());
-			}
-		}
-	//appending	the url	with bit rate greater than given
-	//bit rate limit
-	for(TInt loop = (iUrlArray->Count()-1);loop >= 0;loop--)
-		{
-		if(iBitrate<iUrlArray->At(loop)->GetBitRate())
-			{
-			urlForBitrate->AppendL(iUrlArray->At(loop)->GetServerUrl());
-			}
-		}
-	if ( urlForBitrate->MdcaCount()==0 && iUrlArray->Count() > 0 )
-		{
-		urlForBitrate->AppendL(iUrlArray->At(0)->GetServerUrl());
-		}
-    for(TInt i=0;i<iUrlArray->Count();i++)
-	    {
-	    if(iUrlArray->At(i)->GetServerUrl().Compare(urlForBitrate->MdcaPoint(aIndex))==0)
-		    {
-		 IRRDEBUG2("CIRIsdsPreset:: - GetChannelBitrateL", KNullDesC);
-		    CleanupStack::Pop(urlForBitrate);
-			return iUrlArray->At(i)->GetBitRate();
-		    }
-	    }
-    CleanupStack::Pop(urlForBitrate);
-	IRRDEBUG2("CIRIsdsPreset:: - GetChannelUrlAtL Exiting", KNullDesC);
-	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
-	return 0;
-	}
-//----------------------------------------------------------------------------
-// CIRIsdsPreset::SortInOrderL()
-// simple bubble shot
-// to sort the  bitrates in desc order
-//----------------------------------------------------------------------------
-//
-void CIRIsdsPreset::SortInOrderL()
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
-	//temporary holder for pointer
-	CIRChannelServerUrl* holdTemp = NULL;
-	TInt urlcount = iUrlArray->Count();
-	//sorts the array pointers [of urls] in the descending order of bit rate
-	//bubble sort algorithm is used for this
-	for (TInt sortcount = (urlcount - 1); sortcount >= 0; sortcount--)
-	  	{
-	    for (TInt index = 1; index <= sortcount; index++)
-	    	{
-	      	if (iUrlArray->At(index-1)->GetBitRate() <
-	      			iUrlArray->At(index)->GetBitRate())
-		       {
-		       holdTemp = iUrlArray->At(index-1);
-		       iUrlArray->At(index-1) = iUrlArray->At(index);
-		       iUrlArray->At(index) = holdTemp;
-		       }
-	    	}
-	  	}
-	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
-	return;
-	}
--- a/internetradio2.0/datastructuressrc/irlastplayedsongs.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +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 "irdebug.h"
-#include "irlastplayedsongs.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewL
-// Function returns an instance of CIRLastPlayedSongs
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRLastPlayedSongs* CIRLastPlayedSongs::NewL()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::NewL - Entering" );
-	CIRLastPlayedSongs *self=CIRLastPlayedSongs::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRLastPlayedSongs::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRLastPlayedSongs* CIRLastPlayedSongs::NewLC()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::NewLC - Entering" );
-	CIRLastPlayedSongs *self=new(ELeave)CIRLastPlayedSongs;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRLastPlayedSongs::NewLC - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::~CIRLastPlayedSongs()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRLastPlayedSongs::~CIRLastPlayedSongs()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::~CIRLastPlayedSongs - Entering" );
-	delete iSongName;
-	iSongName=NULL;
-	delete iArtistName;
-	iArtistName=NULL;
-	IRLOG_DEBUG( "CIRLastPlayedSongs::~CIRLastPlayedSongs - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::SetSongName()
-//Function to set song name from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRLastPlayedSongs:: SetSongName(const TDesC&aSongName)
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::SetSongName - Entering" );
-	iSongName=aSongName.Alloc();
-	IRLOG_DEBUG( "CIRLastPlayedSongs::SetSongName - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::GetSongName()
-//Function to get song name from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TDesC& CIRLastPlayedSongs::GetSongName()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::GetSongName" );
-	return *iSongName;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::SetArtistName()
-//Function to set artist name from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void  CIRLastPlayedSongs::SetArtistName(const TDesC& aArtistName)
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::SetArtistName - Entering" );
-	iArtistName=aArtistName.Alloc();
-	IRLOG_DEBUG( "CIRLastPlayedSongs::SetArtistName - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::GetArtistName()
-//Function to get artist name from a TDesC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TDesC& CIRLastPlayedSongs:: GetArtistName()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::GetArtistName" );
-	return *iArtistName;
-	}
-	
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::ExternalizeL()
-//externalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRLastPlayedSongs:: ExternalizeL(RWriteStream & aWriteStream)
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::ExternalizeL - Entering" );
-	TInt32 len;
-    	len=iSongName->Length();
-	TRAP_IGNORE(aWriteStream.WriteInt32L(len))
-	aWriteStream<< *iSongName;
-	len=iArtistName->Length();
-	TRAP_IGNORE(aWriteStream.WriteInt32L(len))
-	aWriteStream<< *iArtistName;	
-	IRLOG_DEBUG( "CIRLastPlayedSongs::ExternalizeL - Exiting." );	
-	}
-	
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::InternalizeL()
-//internalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void  CIRLastPlayedSongs::InternalizeL(RReadStream & aReadStream)
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::InternalizeL - Entering" );
-	TInt8 len;
-	len=aReadStream.ReadInt8L();
-	iSongName=HBufC::NewL(aReadStream,len);
-	len=aReadStream.ReadInt8L();
-	iArtistName=HBufC::NewL(aReadStream,len);
-	IRLOG_DEBUG( "CIRLastPlayedSongs::InternalizeL - Exiting." );
-	}
-		
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::=()
-//standard C++ copy constructor(deep copy) 
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C CIRLastPlayedSongs& CIRLastPlayedSongs::operator=(const 
-	CIRLastPlayedSongs& aSng)
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::operator= - Entering" );
-	 if(&aSng == this)
-		{
-		return *this;
-		}
-	iArtistName=aSng.iArtistName;
-	iSongName=aSng.iSongName;
-	IRLOG_DEBUG( "CIRLastPlayedSongs::operator= - Exiting." );
-	return *this;
-	}
-
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::ConstructL()
-//standard second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRLastPlayedSongs::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRLastPlayedSongs::ConstructL" );
-	return;
-	}
-
--- a/internetradio2.0/datastructuressrc/irotaupdate.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +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 "irdebug.h"
-#include "irotaupdate.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-//----------------------------------------------------------------------------
-// Function : NewLC
-// Function returns an instance of CIROTAUpdate
-// Two phase constructor
-//----------------------------------------------------------------------------
-//
-EXPORT_C CIROTAUpdate* CIROTAUpdate::NewLC()
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::NewLC - Entering" );
-	CIROTAUpdate* self = new (ELeave) CIROTAUpdate;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIROTAUpdate::NewLC - Exiting." );
-	return self;
-	}
-
-
-//----------------------------------------------------------------------------
-// Function : NewL
-// Function returns an instance of CIROTAUpdate
-// Two phase constructor
-//----------------------------------------------------------------------------
-//
-EXPORT_C CIROTAUpdate* CIROTAUpdate::NewL()
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::NewL - Entering" );
-	CIROTAUpdate* self = CIROTAUpdate::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIROTAUpdate::NewL - Exiting." );
-	return self;
-	}
-
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::ConstructL()
-//standard second phase constructor
-//----------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::ConstructL()
-	{
-    IRLOG_DEBUG( "CIROTAUpdate::ConstructL" );
-	return;
-	}
-
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::~CIROTAUpdate()
-//standard C++ destructor
-//----------------------------------------------------------------------------
-//	
-CIROTAUpdate::~CIROTAUpdate()
-	{
-    IRLOG_DEBUG( "CIROTAUpdate::~CIROTAUpdate - Entering" ); 
-    delete iUpdateMethod;
-    delete iVersion;
-    delete iOTAUrl;
-    IRLOG_DEBUG( "CIROTAUpdate::~CIROTAUpdate - Exiting." );
-	}
-
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::SetUpdateMethod()
-//Function to set update method
-//----------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::SetUpdateMethod(const TDesC& aUpdateMethod)
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateMethod - Entering" );
-	iUpdateMethod=aUpdateMethod.Alloc();
-	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateMethod - Exiting." );
-	}
-	
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::SetVersion()
-//Function to set version
-//----------------------------------------------------------------------------
-//	
-EXPORT_C  void CIROTAUpdate::SetVersion(const TDesC& aVersion)
-	{          
-	IRLOG_DEBUG( "CIROTAUpdate::SetVersion - Entering" );
-	iVersion=aVersion.Alloc();
-	IRLOG_DEBUG( "CIROTAUpdate::SetVersion - Exiting." );
-	}
-
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::SetUpdateInterval()
-//Function to set update interval
-//----------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::SetUpdateInterval(const TDesC& aUpdateInterval)
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateInterval - Entering" );
-	 TLex var(aUpdateInterval);
-	var.Val(iUpdateInterval);
-	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateInterval - Exiting." );
-	}
-	
-
-//----------------------------------------------------------------------------
-//CIROTAUpdate::SetOTAUrl()
-//Function to set OTA Url
-//----------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::SetOTAUrl(const TDesC& aOTAUrl)
-  {
-    IRLOG_DEBUG( "CIROTAUpdate::SetOTAUrl - Entering" );
-	iOTAUrl=aOTAUrl.Alloc();
-	IRLOG_DEBUG( "CIROTAUpdate::SetOTAUrl - Exiting." );
-  }
-// ---------------------------------------------------------------------------
-//CIROTAUpdate::ExternalizeL()
-//externalizes the data
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::ExternalizeL(RWriteStream& aStream) const
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::ExternalizeL - Entering" );
-	aStream.WriteInt32L(iUpdateInterval);
-	TInt length;
-	if(iVersion)
-		{
-		length = iVersion->Length();
-		aStream.WriteInt32L(length);
-		aStream << *iVersion;
-		}
-	else
-		{
-		length = 0;
-		aStream.WriteInt32L(length);
-		}
-
-	if(iOTAUrl)
-		{
-		length = iOTAUrl->Length();
-		aStream.WriteInt32L(length);
-		aStream << *iOTAUrl;
-		}
-	else
-		{
-		length = 0;
-		aStream.WriteInt32L(length);
-		}
-		
-	if(iUpdateMethod)
-		{
-		length = iUpdateMethod->Length();
-		aStream.WriteInt32L(length);
-		aStream << *iUpdateMethod;
-		}
-	else
-		{
-		length = 0;
-		aStream.WriteInt32L(length);
-		}
-    IRLOG_DEBUG( "CIROTAUpdate::ExternalizeL - Exiting." );
-	}  
-
-
-// ---------------------------------------------------------------------------
-//CIROTAUpdate::InternalizeL()
-//internalizes the data.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIROTAUpdate::InternalizeL(RReadStream& aStream)
-	{
-	IRLOG_DEBUG( "CIROTAUpdate::InternalizeL - Entering" );
-	TInt length;
-	iUpdateInterval=aStream.ReadInt32L();
-	length = aStream.ReadInt32L();
-	
-	if(length)
-		{
-		iVersion = HBufC::NewL(aStream,length);
-		}
-		
-	length = aStream.ReadInt32L();
-	if(length)
-		{
-		iOTAUrl = HBufC::NewL(aStream,length);
-		}
-		
- 	length = aStream.ReadInt32L();
-	if(length)
-		{
-		iUpdateMethod = HBufC::NewL(aStream,length);
-		}
-	IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Exiting." );
-	}  
-	
-	
--- a/internetradio2.0/favoritesdbinc/irfavoritesdb.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +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  IRFAVORITESDB_H
-#define  IRFAVORITESDB_H
-
-#include "pspresetobserver.h"
-#include "psserv.h"
-
-class CIRIsdsPreset;
-class CIRPreset;
-class CPSPresetNotifier;
-
-
-//typedefed to array of pointer array
-typedef RPointerArray<CIRPreset> RIRPresetArray;
-
-//this class is an handle to the presetclient
-//provides apis to access the presetserver functionalities
-
-NONSHARABLE_CLASS( CIRFavoritesDb ):public CBase ,public MPSPresetObserver
-	{
-
-public:
-
-    /**CIRFavoritesDb::NewL()
-    *standard symbian 1st phase constructor
-    *@return CIRFavoritesDb* ,db instance
-    */
-    IMPORT_C static CIRFavoritesDb* NewL();
-
-
-    /**CIRFavoritesDb::~CIRFavoritesDb()
-    *standard c++ destructor
-    */
-    ~CIRFavoritesDb();
-
-
-    /**CIRFavoritesDb::AddPresetL()
-    *exported function to add a preset
-    *@param CIRIsdsPreset& the isds preset,TInt index(not in use for 3.2)
-    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
-    */
-   IMPORT_C void AddPresetL(CIRIsdsPreset& aPreset,TInt& aIndex, TBool aIsLogoAvialable=EFalse);
-
-
-    /**CIRFavoritesDb::AddPresetL()
-    *exported,overloaded function to add a preset manually
-    *@param TDesC name,TDesC url of the preset,TInt,TIntindex and id not in use for 3.2
-    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
-    */
-	IMPORT_C void AddPresetL(const TDesC& aName,const TDesC& aURl,
-		TInt& aReturn, TBool aIsLogoAvialable=EFalse);
-
-
-    /**CIRFavoritesDb::DeletePresetL()
-    *exported, function to delete a preset
-    *@param TInt is the id of the preset to be deleted
-    *@return KerrNone on success,
-    */
-   IMPORT_C void DeletePresetL( TInt aUniqId );
-
-
-    /**CIRFavoritesDb::GetAllPresetL()
-    *exported,function to get the list of saved presets in the array iFavPresetList
-    */
-   IMPORT_C void GetAllPreset();
-
-    /*
-     * get all presets sorted by played times
-     */
-    IMPORT_C const RIRPresetArray& GetAllSortedPresets();
-    
-    /**CIRFavoritesDb::SearchPreset()
-    *exported, function to find out if a preset exists in the favorites list
-    *@param TInt the id of the preset to search.
-    *@return the index number of the preset being searched(if found) else KErrNotFound
-    */
-   IMPORT_C  TInt SearchPreset( const TInt aUniqPresetId,
-							  const TInt aIsdsPresetId);
-
-
-    /**CIRFavoritesDb::GetPreviousPreset()
-    *exported, function to find out if a preset exists in the favorites list
-    *@param TInt the id of the preset .
-    *@return the index number of the previous preset
-    */
-   IMPORT_C TInt GetPreviousPreset(TInt aIndex);
-
-
-    /**CIRFavoritesDb::GetNextPreset()
-    *exported, function to find out if a preset exists in the favorites list
-    *@param TInt the id of the preset .
-    *@return the index number of the next preset
-    */
-   IMPORT_C TInt GetNextPreset(TInt aIndex);
-
-
-
-	/**CIRFavoritesDb::SwapPresetsInDbL()
-	*returns the previous preset for a given presetId
-	*@param TInt,TInt,TInt,TIntswaps the presets between two
-	*channelIds for given channel Indices
-	*@return TInt system wode error code
-	**/
-   IMPORT_C void SwapPresetsInDbL(TInt aChannelIdFrom,TInt aChannelIdTo,
-   			TInt aChannelIndexFro,TInt aChannelIndexTo);
-
-
-	/**CIRFavoritesDb::ReplacePresetL()
-	*replaces a preset with a new preset
-	*@param CIRIsdsPreset instance
-	*for presetSync
-	*@return TInt system wode error code
-	**/
-   IMPORT_C void ReplacePresetL(CIRIsdsPreset& aNewPreset);
-
-
-   /**CIRFavoritesDb::ReplaceUserDefinedPresetL()
-	*replaces a userdefined preset with a new userdefined preset
-	*@param CIRIsdsPreset instance
-	*for presetSync
-	*@return TInt system wide error code
-	**/
-   IMPORT_C void ReplaceUserDefinedPresetL(CIRIsdsPreset& aNewPreset);
-
-
-	/**CIRFavoritesDb::MakePresetUserDefinedL()
-	*for a favorite preset that has been removed from the isds.
-	*it is made a user defined preset by changing the type to 0.
-	*index value is preseved so that the relative positions in the saved
-	*stations view remains the same.
-	*@param TInt,TInt
-	*@return TInt
-	**/
-   IMPORT_C void MakePresetUserDefinedL(TInt aChannelId,TInt aUserDefinedChannelId);
-
-	/**
-	*const RVRPresetArray& CVRPresetHandler::Presets() const
-	* @return RIRPresetArray& an array containing all Internet Radio presets.
-	*/
-	IMPORT_C const RIRPresetArray& Presets() const;
-	/**
-	*TInt CIRFavoritesDb::EmptyPresetCount() const
-	*Returns the number of empty presets
-	*@return TInt the number of empty presets
-	*/
-	IMPORT_C TInt EmptyPresetCount() const;
-
-   /**
-	*TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
-	*Adds an observer that is notified upon changes in presets.
-	*@param MPSPresetObserver&
-	*/
-
-	IMPORT_C TInt AddObserver( const MPSPresetObserver& aObserver );
-
-   /**
-	*TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
-	*Removes an observer for a preset.
-	*/
-	IMPORT_C void RemoveObserver(const MPSPresetObserver& aObserver );
-
-	/**CIRFavoritesDb::MaxPresetCount()
-	*returns the maximum number of presets that can be stored in the favorites list
-	*@return TInt maximum number of presets that can be stored in the favorites list
-	**/
-	IMPORT_C TInt MaxPresetCount();
-	
-	/** CIRFavoritesDb::SetMoveStatus(TBool aStatus)
-	* @aStatus, sets the status of the Move functionality progression
-	**/
-	IMPORT_C void SetMoveStatus(TBool aStatus);
-	
-	/** CIRFavoritesDb::GetMoveStatus()
-	* returns the status of the Move functionality
-	**/
-	IMPORT_C TBool GetMoveStatus();
-
-    /*
-     * Increase the played times of a channel if it has been in the favorites
-     * return : KErrNone if success
-     *          KErrNotFound if the preset is not in the favorites
-     */
-	IMPORT_C TInt IncreasePlayedTimesL(const CIRIsdsPreset &aIsdsPreset);
-	
-	IMPORT_C TInt RenamePresetL(const CIRIsdsPreset &aIsdsPreset, const TDesC &aNewName);
-	
-	private:
-
-    /**CIRFavoritesDb::HandlePresetChangedL()
-    *function to notify a change in saved presets
-    *@param TInt,TUid,TPSReason the id of the preset,the id of the
-    *preset handler i.e CIRPreset,the reason of change.
-    */
-    void HandlePresetChangedL( TInt aId, TUid aDataHandler, MPSPresetObserver::TPSReason aReason );
-
-      
-	/**CIRFavoritesDb::MovePresetL()
-	*moves a preset to destination index
-	*@param TInt,TInt,the preset id ,the destination index
-	**/
-	void MovePresetL( const TInt aId,const TInt aDestinationIndex );
-
-
-	/**CIRFavoritesDb::ConstructL()
-	*Standard 2nd phase construction
-	**/
-    void ConstructL();
-
-
-    /**CIRFavoritesDb::SortByIndex()
-	*sorts the preset list by index
-	**/
-    void SortByIndex();
-
-	/**
-	*TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
-	*returns the index of the preset whose id is aId
-	*@return TInt the index of the preset whose id is aId
-	*/
-	TInt MatchingPresetId( TInt aId );
-
-
-	/**
-	*TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
-	*creates a preset by the index aIndex
-	*@param TInt aIndex,index of the new preset
-	*@return CIRPreset*
-	*/
-	CIRPreset* CreatePresetL( TInt aIndex );
-
-	/*
-	 * Search a user defined preset by name and url
-	 */
-	TInt SearchUserDefinedPreset(const TDesC &aName, const TDesC &aUrl);
-	
-public:
-
-	/**
-	 *CIRFavoritesDb::PresetByIndex(TInt aIndex)
-	 * Returns a preset by its id.
-	 * @param   aId     Id of the preset.
-	 * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
-	 */
-	CIRPreset* PresetByIndex( TInt aIndex );
-
-
-	 /**
-	 * CIRFavoritesDb::PresetById(TInt aIndex)
-	 * Returns a preset by its id.
-	 * @param   aId     Id of the preset.
-	 * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
-	 */
-	IMPORT_C CIRPreset* PresetById( TInt aId );
-
-
-	/**the preset list accessible to ui*/
-    /** Internet Radio presets currently stored in the preset server. */
-    RIRPresetArray iFavPresetList;
-private:
-
-    /** Session with the preset server. */
-    RPSServ iServ;
-//private:
-    
-    /** Notifier that informs about changes in presets. */
-    CPSPresetNotifier* iNotifier;
-    /** Observers to notify when presets change. */
-    RPointerArray<MPSPresetObserver> iObservers;
-
-    /** The maximum number of supported presets. */
-    TInt iMaxPresetCount;
-
-    /**type of presets(source)*/
-    enum TChannelType
-    {
-    	EUserDefined,/**added by user*/
-    	EIsdsPreset,/**fetched from isds*/
-    };
-    
-    /** iMoveStatus, to know the status of the Move funcitionality */
-    TBool iMoveStatus;
-};
-
-#endif  //end IRFAVORITESDB_H
--- a/internetradio2.0/favoritesdbsrc/irfavoritesdb.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,916 +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 "pspresetnotifier.h"
-#include "pstransaction.h"
-#include "irdebug.h"
-#include "irfavoritesdb.h"
-#include "irisdspreset.h"
-#include "irpreset.h"
-#include "irsettings.h"
-
-const TInt KNullId = 0;
-const TInt KNineteen = 19;
-
-namespace PresetHandler
-{
-//-------------------------------------------------------------------------------
-//TInt OrderByIndex( const CIRPresetImpl& aPreset1, const CIRPresetImpl& aPreset2 )
-//-------------------------------------------------------------------------------
-//
-    //Sort algorithm
-    // Orders presets by their index.
-    //
-    TInt OrderByIndex( const CIRPreset& aPreset1, const CIRPreset& aPreset2 )
-        {
-        if ( aPreset1.Index() < aPreset2.Index() )
-            {
-            return -1;
-            }
-        else if ( aPreset1.Index() > aPreset2.Index() )
-            {
-            return 1;
-            }
-        else
-            {
-            return 0;
-            }
-        }
-    
-    TInt OrderByPlayedTimes(const CIRPreset& aPreset1, const CIRPreset& aPreset2)
-    {
-        int difference = aPreset1.GetPlayedTimes() - aPreset2.GetPlayedTimes();
-        if (difference > 0)
-        {
-            return -1;
-        }
-        else if (difference == 0)
-        {
-            return aPreset1.Name().Compare(aPreset2.Name());
-        }
-        else 
-        {
-            return 1;
-        }
-    }
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::NewL()
-//standard symbian 1st phase constructor
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C CIRFavoritesDb* CIRFavoritesDb::NewL()
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::NewL" );
-    CIRFavoritesDb* self = new ( ELeave ) CIRFavoritesDb;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRFavoritesDb::NewL - Exiting." );
-    return self;
-    }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::~CIRFavoritesDb()
-//standard c++ destructor
-//---------------------------------------------------------------------------
-//
-
-CIRFavoritesDb::~CIRFavoritesDb()
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb" );
-    delete iNotifier;
-    iObservers.Close();
-    //resets the preset array
-    iFavPresetList.ResetAndDestroy();
-    iFavPresetList.Close();
-    iServ.Close();
-
-	IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb - Exiting." );
-    }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::AddPresetL()
-//exported function to add a preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::AddPresetL(CIRIsdsPreset& aPreset,
-			TInt& aRetVal, TBool /*aIsLogoAvialable*/)
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL" );
-    iMoveStatus=EFalse;
-    SortByIndex() ;//sorted by index
-    TBool presetSaved = EFalse;
-
-    // Check the existence of preset before checking if the list is full 
-    // to avoid KErrNoMemory for a preset that exists in the list.
-    TInt searchResult = 0;
-    if (aPreset.GetChannelType() == 0)
-    {
-        searchResult = SearchUserDefinedPreset(aPreset.GetName(), aPreset.GetChannelUrlAtL(0));
-        //we don't allow user to add presets with the same name
-        if (searchResult >= 0)
-        {
-            ReplaceUserDefinedPresetL(aPreset);
-            aRetVal = KErrAlreadyExists;
-            return;
-        }
-    }
-    else
-    {
-        searchResult = SearchPreset( aPreset.GetId(), KNullId );
-        if( KErrNotFound !=  searchResult)
-        {
-            //Eventhough the preset exists in the favorites db, replace the
-            //same with the new preset i.e. aPreset.  Because the db should 
-            //contain the updated values of the preset.
-            ReplacePresetL(aPreset);
-            
-            aRetVal = KErrAlreadyExists;
-
-            return;
-        }
-    }
-
-    if ( EmptyPresetCount()<=0 )
-	{
-	 	//max limit reached no more processing
-		aRetVal = KErrNoMemory;
-		return;
-	}
-    
-    // Found the next empty place or replace
-    for ( TInt j=0; j < MaxPresetCount() && !presetSaved; j++ )
-        {
-        CIRPreset* preset = PresetByIndex( j );
-        TBool presetExisted = preset ? ETrue : EFalse;//presetExisted=1 if preset exists
-
-        if ( !preset )
-            {
-            preset = CreatePresetL( j );//create if preset==NULL
-            }
-
-        if ( !presetExisted )//crete if preset did not exists
-            {
-            //open a transaction with the preset server
-            CPSTransaction* transaction = preset->CreateTransactionLC();
-            //Convert to Plugnized Preset
-            //That is accepted by the preset server
-            preset->CIRIsdsPresetToCIRPresetImpl(aPreset);
-            //setname of CPSPresetInterface is called
-            preset->SetNameL( aPreset.GetName() );
-            transaction->CommitL();
-            CleanupStack::PopAndDestroy( transaction );
-            //added to check multiple insertion
-            presetSaved = ETrue;
-            }
-        }
-
-    aRetVal = KErrNone;
-    IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::AddPresetL()
-//exported,overloaded function to add a preset manually
-//converts the minimum data(name ,url) into an preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::AddPresetL(const TDesC& aName,
-	const TDesC& aURl,TInt& aReturn, TBool /*aIsLogoAvialable*/)
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int)" );
-	iMoveStatus=EFalse;
-    CIRIsdsPreset* saveItem;
-    saveItem = CIRIsdsPreset::NewLC();
-    saveItem->SetName(aName);
-	saveItem->SetUrlCount(1);//only one url is saved for manually added channel
-	saveItem->SetChannelType(EUserDefined);
-	_LIT(KNotAvailable,"NA");
-	//bitrate set to zero so that it is accessible to all kinds of bitrate settings
-	saveItem->SetUrlL(KNotAvailable,aURl,0);
-	AddPresetL(*saveItem,aReturn);
-	CleanupStack::PopAndDestroy(saveItem);
-
-	IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int) - Exiting." );
-	}
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::DeletePresetL()
-//exported, function to delete a preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::DeletePresetL( TInt aId )
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL" );
-    iMoveStatus=EFalse;
-	iServ.DeletePresetL( aId);
-	
-	TInt count = iFavPresetList.Count();
-	//when we delete one preset in the server's db, we also
-	//need to delete it in the favorite list. 
-	for( TInt i=0; i<count; i++ )
-	{	     
-	    if( aId == iFavPresetList[i]->Id())
-	    {
-	    	  //before Remove, the memory should be freed ahead. 
-	        delete iFavPresetList[i];
-	        iFavPresetList.Remove(i);	         
-	        break;
-	    }
-	}
-	IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetAllPresetL()
-//exported,function to get the list of saved presets in the array iFavPresetList
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::GetAllPreset()
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL" );
-	//sort the array according to the index values
-	SortByIndex();
-	IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL - Exiting." );
-	}
-
-/*
- * get all presets sorted by played times
- */
-EXPORT_C const RIRPresetArray& CIRFavoritesDb::GetAllSortedPresets()
-{
-    iFavPresetList.Sort( TLinearOrder<CIRPreset>(PresetHandler::OrderByPlayedTimes));
-    return iFavPresetList;
-}
-    
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SwapPresetsInDbL()
-//returns the previous preset for a given presetId
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::SwapPresetsInDbL( TInt aChannelIdFrom,
-	TInt /*aChannelIdTo*/,TInt /*aChannelIndexFro*/,TInt aChannelIndexTo )
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL" );
-	MovePresetL(  aChannelIdFrom,aChannelIndexTo);
-	IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::MovePresetL()
-//moves a preset to destination index
-//---------------------------------------------------------------------------
-//
-
- void CIRFavoritesDb::MovePresetL( const TInt aId, const TInt aDestinationIndex )
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL" );
-	ASSERT( aDestinationIndex >= 0 && aDestinationIndex < iFavPresetList.Count() );
-	if( aDestinationIndex < 0 || aDestinationIndex >= iFavPresetList.Count())
-	{
-	    User::Leave(KErrArgument);
-	}
-	
-	TInt fakeIndex=iFavPresetList[aDestinationIndex]->Index();
-	SetMoveStatus(ETrue);
-    iServ.MovePresetL( aId, fakeIndex );
-	IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL - Exiting." );
-    }
-    
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SetMoveStatus()
-//sets the status of Move functionality
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::SetMoveStatus(TBool aStatus)
-	{
-	iMoveStatus = aStatus;
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetMoveStatus()
-//returns the status of the Move functionality
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRFavoritesDb::GetMoveStatus()
-	{
-	return iMoveStatus;
-	}
-    
-    
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SearchPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::SearchPreset( const TInt aIsdsPresetId,
-							  const TInt aUniqPresetId)
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset" );
-	TInt count = iFavPresetList.Count();
-	TInt iter;
-	//for isds presets
-	if(aIsdsPresetId!=KNullId)
-		{
-		for(iter=0;iter<count;iter++)
-			{
-			if(iFavPresetList[iter]->GetId() == aIsdsPresetId)
-				{
-			    IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (1)." );
-				return iter;
-				}
-			}
-		}
-	if(aUniqPresetId != KNullId )
-	//for manually added presets
-		{
-		for(iter=0;iter<count;iter++)
-			{
-			if(aUniqPresetId==iFavPresetList[iter]->Id())
-				{
-			    IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (2)." );
-				return iter;
-				}
-			}
-		}
-	// both the parameters are null implies that the preset is a non saved station
-	IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (3)." );
-	return KErrNotFound;
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetPreviousPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRFavoritesDb::GetNextPreset(TInt aIndex)
-	{
-	if ( (aIndex==(iFavPresetList.Count()-1))||aIndex==KNineteen )
-		{
-		return 0;
-		}
-	else
-		{
-		return aIndex+1;
-		}
-	}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetNextPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRFavoritesDb::GetPreviousPreset( TInt aIndex )
-	{
-	if ( aIndex==0 )
-		{
-		TInt val=(iFavPresetList.Count()-1);
-		return val;
-		}
-	else
-		{
-		return aIndex-1;
-		}
-	}
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::ReplacePresetL()
-//replaces a preset with a new preset
-//for presetSync
-//---------------------------------------------------------------------------
-//
-
-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();
-        	//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);
-        	transaction->CommitL();
-        	CleanupStack::PopAndDestroy( transaction );
-    	}
-    }
-	IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL - Exiting." );
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::ReplaceUserDefinedPresetL()
-//replaces a userdefined preset with a new userdefiend preset
-//for presetSync
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::ReplaceUserDefinedPresetL(CIRIsdsPreset& aNewPreset)
-{
-	IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL" );
-	iMoveStatus=EFalse;
-	TInt index = SearchUserDefinedPreset(aNewPreset.GetName(), aNewPreset.GetChannelUrlAtL(0));
-	
-    if (index >= 0 && index < iFavPresetList.Count())
-    {
-        CIRPreset* preset = iFavPresetList[index];
-        if (preset)
-        {
-            CPSTransaction* transaction = preset->CreateTransactionLC();
-            /**
-             * change the preset data and commit
-             */
-            preset->CIRIsdsPresetToCIRPresetImpl(aNewPreset);
-            preset->SetChannelType(EUserDefined);
-            preset->SetNameL(aNewPreset.GetName());
-            preset->SetDescription(aNewPreset.GetShortDescription());
-            transaction->CommitL();
-            CleanupStack::PopAndDestroy(transaction);
-        }
-    }
-	IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL - Exiting." );	
-}
-
-
-
-
-
-
-//---------------------------------------------------------------------------
-//IRFavoritesDb::MakePresetUserDefinedL()
-//for a favorite preset that has been removed from the isds.
-//it is made a user defined preset by changing the type to 0.
-//index value is preseved so that the relative positions in the saved
-//stations view remains the same.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::MakePresetUserDefinedL( TInt aChannelId,
-	TInt /*aUserDefinedChannelId*/ )
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL" );
-	iMoveStatus=EFalse;
-	//to match the function signature
-	TInt index = SearchPreset(aChannelId,KNullId);
-	CIRPreset* preset;
-	//actual index
-    if (index >= 0)
-        {
-        ASSERT( index >= 0 || index < iFavPresetList.Count() );
-    	index = iFavPresetList[index]->Index();
-    	preset = PresetByIndex(index);
-    	if(preset)
-    		{
-        	CPSTransaction* transaction = preset->CreateTransactionLC();
-        	//convert the flag to user defined and commit
-        	preset->SetChannelType(EUserDefined);
-        	//assign null id
-        	preset->SetId(KNullId);
-
-        	//make logo as null;;;; added for 2.0
-        	_LIT8(KEmpty, "");
-        	RBuf8 tempLogo;
-        	tempLogo.Create(KEmpty);
-        	preset->SetLogoData(tempLogo);
-        	tempLogo.Close();
-        	_LIT(KEmptyString, "");
-        	RBuf tempString;
-        	tempString.Create(KEmptyString);
-			//set imgurl to null
-			preset->SetImgUrl(tempString);
-			//set genre to null
-			preset->SetGenreInfo(tempString,tempString);
-			//set language to null
-			preset->SetLang(tempString);
-			//set country to null
-			preset->SetCountryName(tempString);
-			tempString.Close();
-			//set musicStoreEnabled filed to "no";;;;added for 2.0
-        	_LIT(KNo, "no");
-        	RBuf tempMusicStoreEnabled;
-        	tempMusicStoreEnabled.Create(KNo);
-        	preset->SetMusicStoreStatus(tempMusicStoreEnabled);
-        	tempMusicStoreEnabled.Close();
-        	
-        	transaction->CommitL();
-        	CleanupStack::PopAndDestroy( transaction );
-    		}
-        }
-	IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//const RVRPresetArray& CVRPresetHandler::Presets() const
-// RIRPresetArray& an array containing all Internet Radio presets.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C const RIRPresetArray& CIRFavoritesDb::Presets() const
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::Presets" );
-	//sort by 
-   	return iFavPresetList;
-    }
-
-/*
- * Increase the played times of a channel if it has been in the favorites
- * return : KErrNone if success
- *          KErrNotFound if the preset is not in the favorites
- */
-EXPORT_C TInt CIRFavoritesDb::IncreasePlayedTimesL(const CIRIsdsPreset &aIsdsPreset)
-{
-    //step 1 : search the preset in favorites
-    SortByIndex();
-    TInt index = 0;
-    if (aIsdsPreset.GetChannelType() == 0)
-    {
-        index = SearchUserDefinedPreset(aIsdsPreset.GetName(), aIsdsPreset.GetChannelUrlAtL(0));
-    }
-    else
-    {
-        index = SearchPreset(aIsdsPreset.GetId(), KNullId);
-    }
-    
-    if (KErrNotFound == index)
-    {
-        return KErrNotFound;
-    }
-    
-    //step 2 : update the played times of the preset
-    CIRPreset *irPreset = iFavPresetList[index];
-    //open a transaction with the preset server
-    CPSTransaction* transaction = irPreset->CreateTransactionLC();
-    irPreset->SetPlayedTimes(irPreset->GetPlayedTimes() + 1);
-    transaction->CommitL();
-    CleanupStack::PopAndDestroy(transaction);
-    
-    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
-//---------------------------------------------------------------------------
-//
-
-void CIRFavoritesDb::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::ConstructL" );
-	//cenrep handle
-    CIRSettings *settings = CIRSettings::OpenL();
-    iMaxPresetCount=settings->MaxPresetCount();
-    settings->Close();
-    
-	User::LeaveIfError( iServ.Connect() );
-	//a session to the client of the preset server
-    iServ.GetPresetsL( iFavPresetList, KIRPreset );
-    //notifier
-    iNotifier = CPSPresetNotifier::NewL( iServ, *this );
-    
-    //initialization of the list for UI use
-	//iFavPresetList=new(ELeave)CArrayPtrFlat<CIRPreset>(KGranularity)
-	iMoveStatus=EFalse;
-	IRLOG_DEBUG( "CIRFavoritesDb::ConstructL - Exiting." );
-	}
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SortByIndex()
-//sorts the preset list by index
-//---------------------------------------------------------------------------
-//
-
-void CIRFavoritesDb::SortByIndex()
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex" );
-    //The sort order is determined by an algorithm supplied by the caller
-    //and packaged as a TLinerOrder<T>
-    iFavPresetList.Sort( TLinearOrder<CIRPreset>( PresetHandler::OrderByIndex ) );
-	IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex - Exiting." );
-    }
-
-//---------------------------------------------------------------------------
-//EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
-//returns the maximum number of presets that can be stored in the favorites list
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::MaxPresetCount" );
-	return iMaxPresetCount;
-	}
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::EmptyPresetCount() const
-//Returns the number of empty presets
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::EmptyPresetCount() const
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::EmptyPresetCount" );
-    return iMaxPresetCount - iFavPresetList.Count();
-    }
-
-
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
-//Adds an observer that is notified upon changes in presets.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::AddObserver(const MPSPresetObserver& aObserver )
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::AddObserver" );
-    return iObservers.InsertInAddressOrder( &aObserver );
-    }
-
-
-//---------------------------------------------------------------------------
-//TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
-//Removes an observer for a preset.
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::RemoveObserver(const MPSPresetObserver& aObserver )
-    {
-    TInt idx = iObservers.FindInAddressOrder( &aObserver );
-
-    if ( idx >= 0 )
-        {
-        iObservers.Remove( idx );
-        iObservers.Compress();
-        }
-    }
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
-//---------------------------------------------------------------------------
-//
-
-TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
-    {
-    TInt indx = KErrNotFound;
-
-    SortByIndex() ;
-
-    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
-        {
-     	 if (iFavPresetList[i]->Id() == aId )
-            {
-            indx = iFavPresetList[i]->Index();
-          /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
-          non-switch break used*/
-          break;
-          /*lint -restore */
-           }
-        }
-
-    return indx;
-    }
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
-//creates a preset by the index aIndex
-//---------------------------------------------------------------------------
-//
-
-CIRPreset* CIRFavoritesDb::CreatePresetL( TInt aIndex )
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL" );
-    CIRPreset* preset = static_cast<CIRPreset*>( iServ.CreatePresetL(
-    	aIndex, KIRPreset) );
-    CleanupStack::PushL( preset );
-    iFavPresetList.AppendL( preset );
-    CleanupStack::Pop( preset );
-	IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL - Exiting." );
-    return preset;
-    }
-
-/*
- * Search a user defined preset by name and url
- */
-TInt CIRFavoritesDb::SearchUserDefinedPreset(const TDesC &aName, const TDesC &aUrl)
-    {
-    TInt count = iFavPresetList.Count();
-    for (TInt index = 0; index < count; ++index)
-        {
-            CIRPreset *preset = iFavPresetList[index];
-            const TDesC &name = preset->Name();
-            TInt urlCount = preset->GetUrlCount();
-            if(preset->GetUrlCount()>0)
-                {
-                const TDesC &url = preset->GetChannelUrlAt(0);
-                if (preset->GetChannelType() == 0 &&
-                    name == aName &&
-                    url  == aUrl)
-                    {
-                        return index;
-                    }
-                }
-            else
-                {
-                if (preset->GetChannelType() == 0 &&
-                    name == aName &&
-                    aUrl == KNullDesC)
-                    {
-                        return index;
-                    }                
-                }
-        }
-    
-    return KErrNotFound;
-    }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::PresetByIndex(TInt aIndex)
-// Returns a preset by its id.
-//---------------------------------------------------------------------------
-//
-EXPORT_C CIRPreset* CIRFavoritesDb::PresetByIndex( TInt aIndex )
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex" );
-
-    CIRPreset* preset = NULL;
-
-    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
-        {
-        if (iFavPresetList[i]->Index()==aIndex)
-            {
-            preset = iFavPresetList[i];
-            /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
-            break;
-            /*lint -restore*/
-            }
-        }
-	IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex - Exiting." );
-    return preset;
-	}
-
-//---------------------------------------------------------------------------
-// CIRFavoritesDb::PresetById(TInt aIndex)
-//Returns a preset by its id.
-//---------------------------------------------------------------------------
-//
-EXPORT_C CIRPreset* CIRFavoritesDb::PresetById( TInt aId )
-    {
-	IRLOG_DEBUG( "CIRFavoritesDb::PresetById" );
-
-    CIRPreset* preset = NULL;
-
-    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
-        {
-        if ( iFavPresetList[i]->Id() == aId )
-            {
-            preset = iFavPresetList[i];
-            /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
-            non-switch break used*/
-            break;
-            /*lint -restore */
-            }
-        }
-	IRLOG_DEBUG( "CIRFavoritesDb::PresetById - Exiting." );
-
-    return preset;
-    }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::HandlePresetChangedL()
-//function to notify a change in saved presets
-//preset handler i.e CIRPreset,the reason of change.
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::HandlePresetChangedL( TInt aId,
-	TUid aDataHandler, MPSPresetObserver::TPSReason aReason )
-	{
-	IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL" );
-    if ( aDataHandler == KIRPreset )
-        {
-        switch ( aReason )
-            {
-            case MPSPresetObserver::EPSCreated:
-                {
-                //call back from the preset client
-                //to append a preset when the preset is added
-                CPSPresetInterface* preset = NULL;
-                preset = PresetById( aId );
-                if ( !preset )
-                    {
-                    preset = iServ.OpenPresetL( aId );
-                    CleanupStack::PushL( preset );
-                    iFavPresetList.AppendL( static_cast<CIRPreset*>( preset ) );
-                    CleanupStack::Pop( preset );
-                    }
-
-                }
-            break;
-            case MPSPresetObserver::EPSDeleted:
-                {
-                //call back from the preset client
-                //to remove a preset when the preset is deleted
-                for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
-                    {
-                    if ( iFavPresetList[i]->Id() == aId )
-                        {
-                        delete iFavPresetList[i];
-                        iFavPresetList.Remove( i );
-                        /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
-                        break;
-                        /*lint -restore*/
-                        }
-                    }
-                }
-            break;
-            case MPSPresetObserver::EPSModified:
-            break;
-            default:
-            break;
-            }
-
-        for ( TInt i = 0; i < iObservers.Count(); i++ )
-            {
-            iObservers[i]->HandlePresetChangedL( aId, aDataHandler, aReason );
-            }
-            
-        }
-	IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL - Exiting." );
-
-    }
-
-
--- a/internetradio2.0/filerecognizerinc/irrecognizer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +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 IRRECOGNIZER_H
-#define IRRECOGNIZER_H
-
-#include <apmrec.h>
-
-const TInt KIRRecognizerImplementationUid = 0x2000B4DE;
-const TUid KIRRecognizerDllUid = {0x2000B4A9};
-/**
- * Recognizer plug-in for .Pls files.
- * 
- * @code
- * Uses Methods from the base class CApaDataRecognizerType
- * to recognise the .pls files  
- * @endcode
- *
-*/
-class CApaRecognizerEx: public CApaDataRecognizerType
-    {
-public:
-    /**
-    * Default constructor
-    */
-    CApaRecognizerEx();
-
-    /**
-    * Destructor.
-    */
-    virtual ~CApaRecognizerEx();
-
-    /**
-    * CreateRecognizerL()
-    * From CApaDataRecognizerType CreateRecognizerL.
-    * creates and returns recognizer
-    */
-	static CApaDataRecognizerType* CreateRecognizerL();
-
-    /**
-    * PreferredBufSize()
-    * From CApaDataRecognizerType PreferredBufSize.
-    * returns preferred buffer size
-    */
-	TUint PreferredBufSize();
-
-    /**
-    * SupportedDataTypeL(SupportedDataTypeL)
-    * From CApaDataRecognizerType SupportedDataTypeL.
-    * @param aIndex is index that identifies the data type
-    * returns supported mime type
-    */
-	TDataType SupportedDataTypeL(TInt aIndex) const;
-
-private:
-        /**
-	 * DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer)
-	 * From CApaDataRecognizerType DoRecognizeL.
-	 * recognises the file by name and/or buffer
-	 * @param aName is file name containing the data to be recognized
-	 * @param aBuffer is buffer containing data to be recognized
-	 */
-	void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer);
-	
-	/*
-	 * try to recognize a m3u file and decide whether it should be launched by InternetRadio application
-	 */
-	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 Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +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 <implementationproxy.h>
-#include <f32file.h>
-
-#include "irdebug.h"
-#include "irrecognizer.h"
-
-// CONSTANTS
-//voilate PC Lint Warning 569: Loss of information (initialization) 
-//(32 bits to 31 bits)
-// Uid of the recogniser
-//const TUid KUidIRRecognizer={0x2000B499}
-
-// If the file name length > 4, the file extension might be valid                  
-const TInt KPlsFileExtensionsMightBeValid = 4;  
-const TInt KM3uFileExtensionsMightBeValid = 4;
-
-//extension of File to be recognised.
-_LIT(KPlsExtension, ".pls");
-//Mime type of the .pls file
-_LIT8(KPlsMimeType,"audio/x-scpls");
-
-_LIT(KM3uExtension, ".m3u");
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::RecognizerEx()
-// constructs the object
-// ---------------------------------------------------------------------------
-//
-CApaRecognizerEx::CApaRecognizerEx():CApaDataRecognizerType(KIRRecognizerDllUid, 
-	CApaDataRecognizerType::EHigh)
-    {
-    IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx()" );
-    // It only supports 1 mime type
-    iCountDataTypes = 1;
-    IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx() - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::~RecognizerEx()
-// Destroys the object
-// ---------------------------------------------------------------------------
-//
-CApaRecognizerEx::~CApaRecognizerEx()
-    {
-    IRLOG_DEBUG( "CApaRecognizerEx::~CApaRecognizerEx" );
-    // no implementation
-    }
-
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::CreateRecognizerL()
-// Returns pointer to the new object
-// ---------------------------------------------------------------------------
-//
-CApaDataRecognizerType* CApaRecognizerEx::CreateRecognizerL()
-    {
-    IRLOG_DEBUG( "CApaRecognizerEx::CreateRecognizerL" );
-    return new (ELeave) CApaRecognizerEx();
-    }
-
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::PreferredBufSize()
-// Returns preferred buffer size
-// ---------------------------------------------------------------------------
-//
-TUint CApaRecognizerEx::PreferredBufSize()
-    {
-    IRLOG_DEBUG( "CApaRecognizerEx::PreferredBufSize" );
-    return 0;
-    }
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::SupportedDataTypeL()
-// Returns supported mime type
-// ---------------------------------------------------------------------------
-//
-TDataType CApaRecognizerEx::SupportedDataTypeL(TInt aIndex) const
-    {
-    IRLOG_DEBUG( "CApaRecognizerEx::SupportedDataTypeL" );
-    if (0 == aIndex)
-	{
-        return TDataType(KPlsMimeType);
-	}
-	else
-    {
-        ASSERT(0);
-        return TDataType(KNullDesC8);
-    }
-    }
-
-// ---------------------------------------------------------------------------
-// RecognizerEx::DoRecognizeL()
-// Recognizes the file by name and/or head buffer
-// ---------------------------------------------------------------------------
-//
-void CApaRecognizerEx::DoRecognizeL(const TDesC& aName, 
-	const TDesC8& aBuffer)
-    {
-	IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL" );    
-    // To keep code simple, we only check file name extension
-    TInt len = aBuffer.Length();
-    if (aName.Length()>KPlsFileExtensionsMightBeValid)
-		{
-		//Compare the extension of the file to be recognised with .pls
-		if (aName.Right(KPlsFileExtensionsMightBeValid).CompareF(
-			KPlsExtension)==0)
-	    {
-			iConfidence=ECertain;   // is certainly something totally new
-			iDataType=TDataType(KPlsMimeType);
-			IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (1)." );
-			return;
-		}
-		else if (aName.Right(KM3uFileExtensionsMightBeValid).CompareF(
-            KM3uExtension)==0)
-		{
-		    RecognizeM3uFileL(aName);
-		    IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (2)." );
-		    return;
-		}
-	    IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (3)." );					
-		}
-    }
-
-void CApaRecognizerEx::RecognizeM3uFileL(const TDesC& aFileName)
-{
-    _LIT8(KHttpProtocol, "http");
-    _LIT8(KMmsProtocol, "mms");
-    _LIT8(KRtspProtocol, "rtsp");
-
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-    RFile file;
-    TInt ret = file.Open(fs, aFileName, EFileRead);
-    if (KErrNone != ret)
-    {
-        fs.Close();
-        return;
-    }
-    
-    RBuf8 content;
-    TInt maxLen = 0;
-    file.Size(maxLen);
-    content.Create(maxLen);
-    file.Read(content);
-    
-    //try to use descriptor method to parse the buffer
-    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;
-}
-
-// -----------------------------------------------------------------------------
-// ImplementationTable
-// violates PC lint error :: Warning 611: Suspicious cast
-// required by the ECOM framework to correctly identify the instantiation 
-// method pointer to provide to a client's resolution request.
-// -----------------------------------------------------------------------------
-//
-const TImplementationProxy ImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY(KIRRecognizerImplementationUid, 
-    	CApaRecognizerEx::CreateRecognizerL)
-    };
-    
-// ---------------------------------------------------------------------------
-// ImplementationGroupProxy
-// Provides access to the implementationtable
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
-	TInt& aTableCount)
-    {
-    IRLOG_DEBUG( "ImplementationGroupProxy" );
-    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-    IRLOG_DEBUG( "ImplementationGroupProxy - Exiting." );
-    return ImplementationTable;
-    }
-
-
-
--- a/internetradio2.0/generalsettingsinc/irgeneralsettingsview.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CIRGeneralSettingsView
-*
-*/
-
-
-#ifndef C_CIRGENERALSETTINGSVIEW_H
-#define C_CIRGENERALSETTINGSVIEW_H
-
-#include "irsettingsviewbase.h"
-
-/**
- * Implements the general settings plugin interface.
- *
- * Loads the necessary resources and constructs the view and model of the plugin.
- */
-NONSHARABLE_CLASS( CIRGeneralSettingsView ) : public CIRSettingsViewBase
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     *
-     * @param   aInitParams     The ECom plugin initialization parameters.
-     * @return  The newly created object.
-     */
-    static CIRGeneralSettingsView* NewL( TAny* aInitParams );
-    
-    /**
-     * NewLC()
-     * Static constructor.
-     */
-    static CIRGeneralSettingsView* NewLC();
-
-    /**
-     * Destructor.
-     */
-    ~CIRGeneralSettingsView();
-    
-    /**
-     * HandleCommandL()
-     * Command Handler
-     */
-    void HandleCommandL( TInt aCommand );
-    
-    /**
-     * DynInitMenuPaneL()
-     * Dynamically initialises a menu pane
-     */
-    void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
-
-
-private:
-
-    /**
-     * Constructor.
-     */
-    CIRGeneralSettingsView();
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-    
-// from base class CAknView
-
-	/**
-     * Id()
-     * returns the Id of the view
-     */
-    TUid Id() const;
-    
-    
-    /**
-     * DoActivateL()
-     * Activates the view
-     */
-    void DoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId,
-    				 const TDesC8& aCustomMessage );
-    				 
-
-// from base class CGSPluginInterface
-
-	/** GetCaptionL()
-     * Gets the caption of general settings
-     */
-    void GetCaptionL( TDes& aCaption ) const;
-    
-    /** PluginProviderCategory()
-     * Getter for provider category
-     */
-    TInt PluginProviderCategory() const;
-    
-     /** CreateIconL()
-     * Creates icon for the general settings
-     */
-    CGulIcon* CreateIconL( const TUid aIconType );
-    
-     /** Visible()
-     * Getter for general settings view visibility status
-     */
-    virtual TBool Visible() const;
-    
-// from base class CVRSettingsViewBase
-
- 	/** CreateContainerL()
-     * Constructs new container
-     */
-    void CreateContainerL();
-
-private:
-
-    /**
-     * iGeneralSettingsResourceLoader
-     * The resource loader for the resource file.
-     */
-    RConeResourceLoader iGeneralSettingsResourceLoader;
-    
-    };
-
-#endif // C_CIRGENERALSETTINGSVIEW_H 
--- a/internetradio2.0/generalsettingssrc/irgeneralsettingsimplementationtable.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*        ECOM proxy table for this plugin
-*
-*/
-
-
-// System includes
-#include <e32std.h>
-#include <implementationproxy.h>
-
-#include "irgeneralsettingsview.h"
-#include "irdebug.h"
-#include  "irgeneralsettings.hrh"
-
- 
-
-// Constants
-const TImplementationProxy KGenSettingGSPluginImplementationTable[] = 
-	{
-	
-	IMPLEMENTATION_PROXY_ENTRY( IRGENERAL_SETTINGS_PLUGIN_DLL_UID,	CIRGeneralSettingsView::NewL )
-	};
-
-
-// ---------------------------------------------------------------------------
-// ImplementationGroupProxy
-// Gate/factory function
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	IRLOG_DEBUG( "In ImplementationGroupProxy - Entering");
-	aTableCount = sizeof(KGenSettingGSPluginImplementationTable) 
-        / sizeof(TImplementationProxy);
-	IRLOG_DEBUG( "In ImplementationGroupProxy - Exiting");
-	return KGenSettingGSPluginImplementationTable; 
-	}
-
--- a/internetradio2.0/generalsettingssrc/irgeneralsettingsview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CIRGeneralSettingsView
-*
-*/
-
-
-#include <akntitle.h>
-#include "irgeneralsettingsview.h"
-#include "irgeneralsettings.hrh"
-#include "ircommonsettingscontainer.h"
-#include "irdebug.h"
-#include <irgeneralsettings.rsg>
-#include <internetradio.mbg>
-#include <stringloader.h>
-#include <internetradio.rsg>
-#include "ir.hrh"
-
-
-// General settings plugin bitmap file.
-
-_LIT(KIRMifFileName,"InternetRadio.mif");
-
-// General settings plugin resource file.
-_LIT( KIRGeneralSettingsResourceFile, "irgeneralsettings.rsc" );
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRGeneralSettingsView* CIRGeneralSettingsView::NewL( TAny* /*aInitParams*/ )
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::NewL - entering");
-    CIRGeneralSettingsView* self = CIRGeneralSettingsView::NewLC();
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( " CIRGeneralSettingsView::NewL - exiting");
-    return self;
-    }
- 
-// ---------------------------------------------------------------------------
-// CIRGeneralSettingsView::NewLC()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRGeneralSettingsView* CIRGeneralSettingsView::NewLC()
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::NewLC - Entering" );
-    CIRGeneralSettingsView* self = new( ELeave ) CIRGeneralSettingsView();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    IRLOG_DEBUG( "CIRGeneralSettingsView::NewLC - Exiting" );
-    return self;
-    }
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-CIRGeneralSettingsView::CIRGeneralSettingsView()
-    : iGeneralSettingsResourceLoader( *iCoeEnv )
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView ::CIRGeneralSettingsView");
-    }
-    
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::ConstructL()
-    {
-	IRLOG_DEBUG( "CIRGeneralSettingsView::ConstructL - entering");
-    BaseConstructL();
-    LoadResourcesL( iGeneralSettingsResourceLoader, KIRGeneralSettingsResourceFile );
-    IRLOG_DEBUG( "CIRGeneralSettingsView::ConstructL - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRGeneralSettingsView::~CIRGeneralSettingsView()
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::~CIRGeneralSettingsView - entering");
-    iGeneralSettingsResourceLoader.Close();
-    if(iContainer)
-    	{
-    	delete iContainer;
-    	iContainer = NULL;
-    	}
-    IRLOG_DEBUG( "CIRGeneralSettingsView::~CIRGeneralSettingsView - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Getter for the view id
-// ---------------------------------------------------------------------------
-//
-TUid CIRGeneralSettingsView::Id() const
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView :: Id");
-    return TUid::Uid( IRGENERAL_SETTINGS_PLUGIN_DLL_UID );
-    }
-
-// ---------------------------------------------------------------------------
-// View activation
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::DoActivateL( const TVwsViewId& aPrevViewId, 
-                                          TUid aCustomMessageId, 
-                                          const TDesC8& aCustomMessage )
-    {
-	
-    IRLOG_DEBUG( " CIRGeneralSettingsView::DoActivateL - Entering" );
-    
-    CIRSettingsViewBase::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
-
-    HBufC* title = NULL;
-    title = iCoeEnv->AllocReadResourceLC( R_IRAPP_GENERAL_SETTINGS_PLUGIN_TITLE );
-    static_cast<CAknTitlePane*>( AppUi()->StatusPane()->ControlL(
-    			 TUid::Uid( EEikStatusPaneUidTitle ) ) )->SetTextL( *title );
-    CleanupStack::PopAndDestroy( title );
-    IRLOG_DEBUG( " CIRGeneralSettingsView::DoActivateL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// Getter for the caption of general settings
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::GetCaptionL( TDes& aCaption ) const
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::GetCaptionL - Entering");
-    StringLoader::Load(aCaption,R_IRAPP_GENERAL_SETTINGS_PLUGIN_LISTBOX_CAPTION);
-    IRLOG_DEBUG( "CIRGeneralSettingsView::GetCaptionL - Exiting");
-	
-	return;
-    }
-
-// ---------------------------------------------------------------------------
-// Getter for provider category
-// ---------------------------------------------------------------------------
-//
-TInt CIRGeneralSettingsView::PluginProviderCategory() const
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::PluginProviderCategory");
-    return EGSPluginProviderOEM;
-    }
-
-// ---------------------------------------------------------------------------
-// Creates icon for the general settings
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRGeneralSettingsView::CreateIconL( const TUid aIconType )
-    {
-	IRLOG_DEBUG( "CIRGeneralSettingsView::CreateIconL - Entering");
-    if ( aIconType == KGSIconTypeLbxItem )
-	    {
-	    TParse parse;
-		parse.Set( KIRMifFileName, &KDC_APP_RESOURCE_DIR, NULL );
-		TFileName bitmapFile = parse.FullName();
-		CompleteWithAppPath( bitmapFile );
-
-	    CIRSettingsViewBase::ResolveDriveL( iCoeEnv->FsSession(), bitmapFile );
-
-		IRLOG_DEBUG( "CIRGeneralSettingsView::CreateIconL - exiting");
-	    return AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(), 
-	                                      KAknsIIDDefault, 
-	                                      bitmapFile, 
-	                                      EMbmInternetradioQgn_prop_set_apps_ir, 
-	                                      EMbmInternetradioQgn_prop_set_apps_ir_mask );
-	    }
-    else
-	    {
-	    IRLOG_DEBUG( "CIRGeneralSettingsView::CreateIconL - exiting");
-	    return CGSPluginInterface::CreateIconL( aIconType );
-	    }
-    }
-
-// ---------------------------------------------------------------------------
-// Getter for general settings view visibility status
-// ---------------------------------------------------------------------------
-//
-TBool CIRGeneralSettingsView::Visible() const
-    {
-    IRLOG_DEBUG( "CIRGeneralSettingsView::Visible");
-	return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructs new container
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::CreateContainerL()
-    {
-	IRLOG_DEBUG( "CIRGeneralSettingsView::CreateContainer - entering");
-    if( !iContainer )
-        {
-        iContainer = CIRCommonSettingsContainer::NewL();
-        }
-    IRLOG_DEBUG( "CIRGeneralSettingsView::CreateContainer - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// HandleCommandL()
-// Command handler
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::HandleCommandL( TInt aCommand )
-	{
-	IRLOG_DEBUG( "CIRGeneralSettingsView::HandleCommandL - entering");
-	
-	switch ( aCommand )
-		{
-		case EEikCmdExit:
-		case EExitCmd:  //lint -fallthrough
-	    case EIRExit:
-		case EAknSoftkeyExit:
-			{
-			AppUi()->Exit();
-			}
-		break;
-				
-		default:
-			{
-			CIRSettingsViewBase::HandleCommandL( aCommand );
-			}
-		break;
-		}
-
-	IRLOG_DEBUG( "CIRGeneralSettingsView::HandleCommandL - Exiting");
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// void CIRGeneralSettingsView::DynInitMenuPaneL()
-// Dynamically initialises a menu pane
-// ---------------------------------------------------------------------------
-//
-void CIRGeneralSettingsView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
-	{
-	IRLOG_DEBUG( "CIRGeneralSettingsView::DynInitMenuPaneL - Entering" );
-
-	if(!aMenuPane) User::Leave(KErrNotFound);
-		{
-		if(aResourceId == R_IR_MENU_SETTINGS)
-			{				
-			// Now Playing option
-			 aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,ETrue);
-			}
-		}
-	IRLOG_DEBUG( "CIRGeneralSettingsView::DynInitMenuPaneL - Exiting" );
-	}
-
-// ======== GLOBAL FUNCTIONS ========
--- a/internetradio2.0/group/bld.inf	Tue Jul 06 14:07:20 2010 +0300
+++ b/internetradio2.0/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* 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"
@@ -11,47 +11,31 @@
 *
 * Contributors:
 *
-* Description:  Build information file for project InternetRadio
+* Description: Build information file for project InternetRadio
 *
 */
 
-#include 		<platform_paths.hrh>
-#include        <bldvariant.hrh>
+
+#include <platform_paths.hrh>
+#include <bldvariant.hrh>
 
-PRJ_PLATFORMS
-WINSCW ARMV5
+#include "../ircachemgmt/group/bld.inf"
+#include "../ircommon/group/bld.inf"
+#include "../irdataprovider/group/bld.inf"
+#include "../irfavoritesdb/group/bld.inf"
+#include "../irfilerecognizer/group/bld.inf"
+#include "../irisdsclient/group/bld.inf"
+#include "../irnetworkcontroller/group/bld.inf"
+#include "../irpresetplugin/group/bld.inf"
+#include "../irrfsplugin/group/bld.inf"
+#include "../irsessionlog/group/bld.inf"
+#include "../irsettings/group/bld.inf"
+#include "../irxmlparser/group/bld.inf"
 
 PRJ_EXPORTS
-
-// Cenrep
-../cenrep/2000b499.txt                          /epoc32/data/z/private/10202be9/2000b499.txt
-../cenrep/2000b499.txt                          /epoc32/release/winscw/udeb/z/private/10202be9/2000b499.txt
-../cenrep/2000b499.txt                          /epoc32/release/winscw/urel/z/private/10202be9/2000b499.txt
-#ifdef __WINS__
-../cenrep/2000b499.txt  		        /epoc32/winscw/c/private/10202be9/2000b499.txt
-#endif
-
 backup_registration.xml                         /epoc32/data/z/private/2000B499/backup_registration.xml
 
 //ROM Build
 // THESE COMMENTED IBYS SHOULD BE EXPORTED BY PRODUCTS
 ../rom/internetradio.iby                      CORE_APP_LAYER_IBY_EXPORT_PATH(internetradio.iby)  
 ../rom/internetradiosettings.iby              CORE_APP_LAYER_IBY_EXPORT_PATH(internetradiosettings.iby)
-
-
-PRJ_MMPFILES
-
-irsettings.mmp
-irrfsplugin.mmp
-irnetworkcontroller.mmp
-irdatastructures.mmp
-presetplugin.mmp
-ircachemgmt.mmp 
-irxmlparser.mmp
-irfavoritesdb.mmp
-irdataprovider.mmp
-irsessionlog.mmp
-isdsclient.mmp
-irrecognizer.mmp
-
- 
--- a/internetradio2.0/group/bld_loc.bat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:
-rem
-
-@echo off
-
-REM 
-REM This is a temporary way to localise Internet Radio into SIS.
-REM This script is only for Internet Radio development and testing and is dependent on hardcoded paths,
-REM languages and files, so it is only for internal use.
-REM 
-
-setlocal
-
-set _MMP=internetradio.mmp
-set _MMP_ORIG=%_MMP%.saved
-set _MMP_NO_LANG=%_MMP%.tmp
-
-
-REM Save original internetradio.mmp and avkon.loc
-move %_MMP% %_MMP_ORIG%
-copy \epoc32\include\avkon.loc \epoc32\include\avkon.loc.saved
-
-
-REM Copy the mmp without the LANG tag
-FOR /F "tokens=1*" %%A IN (%_MMP_ORIG%) DO (
-  IF NOT %%A==LANG (
-    echo %%A %%B >> %_MMP_NO_LANG%
-  )
-)
-
-REM Delete existing compiled resource files
-IF EXIST \epoc32\data\z\system\apps\internetradio\internetradio.r??? (
-  del \epoc32\data\z\system\apps\internetradio\internetradio.r???
-)
-
-
-REM Go through all localisation directories and build resources with the corresponding language.
-REM For each language, use the corresponding localised avkon.loc
-FOR /F %%i IN ('dir /AD /B ..\resources') DO (
-  IF EXIST \s60\s60LocFiles\%%i\avkon_%%i.loc (
-    echo.
-    echo LOCALISING LANGUAGE %%i
-    copy \s60\s60locfiles\%%i\avkon_%%i.loc \epoc32\include\avkon.loc
-    copy %_MMP_NO_LANG% %_MMP%
-    echo LANG %%i >> %_MMP%
-    call abld makefile armv5
-    call abld resource armv5 urel
-  ) ELSE (
-  IF EXIST \s60\misc\release\s60locfiles\%%i\avkon_%%i.loc ( 
-    echo.
-    echo LOCALISING LANGUAGE %%i
-    copy \s60\misc\release\s60locfiles\%%i\avkon_%%i.loc \epoc32\include\avkon.loc
-    copy %_MMP_NO_LANG% %_MMP%
-    echo LANG %%i >> %_MMP%
-    call abld makefile armv5
-    call abld resource armv5 urel
-  ) ELSE (
-    echo.
-    echo \s60\s60locfiles\%%i\avkon_%%i.loc doesn't exist!
-    echo \s60\s60locfiles\%%i\avkon_%%i.loc doesn't exist! >> LOCALISATION_ERRORS.txt
-    echo.
-    REM pause
-  )
-  )
-)
-
-
-REM Delete temp files and restore originals
-move \epoc32\include\avkon.loc.saved \epoc32\include\avkon.loc
-move %_MMP_ORIG% %_MMP%
-del %_MMP_NO_LANG%
-
-
-REM build makefiles again with the original mmp
-call abld makefile armv5
-
-
-endlocal
--- a/internetradio2.0/group/common.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-//MACRO ENABLE_USAGE_REPORT_TEST
\ No newline at end of file
--- a/internetradio2.0/group/copyradiothemes.bat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:
-rem
-
-@echo off
-
-SETLOCAL
-
-SET THEME_DEST_C_UDEB_DIR=%EPOCROOT%epoc32\RELEASE\winscw\udeb\z\private\10207254\themes\271012080\270513751
-SET THEME_DEST_C_UREL_DIR=%EPOCROOT%epoc32\RELEASE\winscw\urel\z\private\10207254\themes\271012080\270513751
-SET THEME_DEST_Z_DIR=%EPOCROOT%epoc32\data\z\private\10207254\themes\271012080\270513751
-
-echo Copying Active Idle binary themes
-echo *********************************
-if not exist %THEME_DEST_C_UDEB_DIR%\271063149\1.0\sources mkdir %THEME_DEST_C_UDEB_DIR%\271063149\1.0\sources
-copy ..\activeidlethemes\binarythemes\activeidle\AI.* %THEME_DEST_C_UDEB_DIR%\271063149\1.0\
-copy ..\activeidlethemes\themes\activeidle\*.mif %THEME_DEST_C_UDEB_DIR%\271063149\1.0\sources\
-if not exist %THEME_DEST_C_UREL_DIR%\271063149\1.0\sources mkdir %THEME_DEST_C_UREL_DIR%\271063149\1.0\sources
-copy ..\activeidlethemes\binarythemes\activeidle\AI.* %THEME_DEST_C_UREL_DIR%\271063149\1.0\
-copy ..\activeidlethemes\themes\activeidle\*.mif %THEME_DEST_C_UREL_DIR%\271063149\1.0\sources\
-if not exist %THEME_DEST_Z_DIR%\271063149\1.0\sources mkdir %THEME_DEST_Z_DIR%\271063149\1.0\sources
-copy ..\activeidlethemes\binarythemes\activeidle\AI.* %THEME_DEST_Z_DIR%\271063149\1.0\
-copy ..\activeidlethemes\themes\activeidle\*.mif %THEME_DEST_Z_DIR%\271063149\1.0\sources\
-
-echo Copying Classic Idle binary themes
-echo **********************************
-if not exist %THEME_DEST_C_UDEB_DIR%\271063147\1.0\sources mkdir %THEME_DEST_C_UDEB_DIR%\271063147\1.0\sources
-copy ..\activeidlethemes\binarythemes\classicidle\CI.* %THEME_DEST_C_UDEB_DIR%\271063147\1.0\
-copy ..\activeidlethemes\themes\classicidle\*.mif %THEME_DEST_C_UDEB_DIR%\271063147\1.0\sources\
-if not exist %THEME_DEST_C_UREL_DIR%\271063147\1.0\sources mkdir %THEME_DEST_C_UREL_DIR%\271063147\1.0\sources
-copy ..\activeidlethemes\binarythemes\classicidle\CI.* %THEME_DEST_C_UREL_DIR%\271063147\1.0\
-copy ..\activeidlethemes\themes\classicidle\*.mif %THEME_DEST_C_UREL_DIR%\271063147\1.0\sources\
-if not exist %THEME_DEST_Z_DIR%\271063147\1.0\sources mkdir %THEME_DEST_Z_DIR%\271063147\1.0\sources
-copy ..\activeidlethemes\binarythemes\classicidle\CI.* %THEME_DEST_Z_DIR%\271063147\1.0\
-copy ..\activeidlethemes\themes\classicidle\*.mif %THEME_DEST_Z_DIR%\271063147\1.0\sources
-
-ENDLOCAL
--- a/internetradio2.0/group/iconlist.txt	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/c24,8 ..\aif\qgn_menu_irradio.svg 
-/c24,8 ..\mbm\qgn_prop_set_apps_ir.svg
-/c8,8 ..\mbm\qgn_indi_ai_music_play.svg
-/c8,8 ..\mbm\qgn_indi_ai_music_stop.svg
-/c8,8 ..\mbm\qgn_prop_ir_list_play.svg
-/c8,8 ..\mbm\qgn_prop_ir_list_stopped.svg
-/c8,8 ..\mbm\qgn_indi_tb_copy.svg
-/c8,8 ..\mbm\qgn_indi_tb_paste.svg
-/c8,8 ..\mbm\qgn_indi_fmradio_tb_listen.svg
-/c8,8 ..\mbm\qgn_indi_tb_next.svg
-/c8,8 ..\mbm\qgn_indi_tb_play.svg
-/c8,8 ..\mbm\qgn_indi_tb_previous.svg
-/c8,8 ..\mbm\qgn_indi_tb_stop.svg
-/c8,8 ..\mbm\qgn_indi_tb_next_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_play_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_previous_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_stop_white.svg
-/c8,8 ..\mbm\qgn_indi_fmradio_tb_listen_white.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_history.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_history_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_find.svg
-/c8,8 ..\mbm\qgn_indi_tb_find_white.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_addtofav.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_addtofav_white.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_addstation.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_addstation_white.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_findnshop.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_findnshop_white.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_saveall.svg
-/c8,8 ..\mbm\qgn_indi_irradio_tb_saveall_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_details.svg
-/c8,8 ..\mbm\qgn_indi_tb_details_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_paste_white.svg
-/c8,8 ..\mbm\qgn_indi_tb_copy_white.svg
-/c8,8 ..\mbm\qgn_ir_transparent.svg
--- a/internetradio2.0/group/installradiothemes.bat	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:
-rem
-
-@echo off
-
-SETLOCAL
-
-SET THEME_INSTALL_DIR1=%EPOCROOT%epoc32\winscw\C\Data\themeinstalltemp\activeidle
-SET THEME_INSTALL_DIR3=%EPOCROOT%epoc32\winscw\C\Data\themeinstalltemp\classicidle
-
-SET THEME_INSTALLED_DIR=%EPOCROOT%epoc32\winscw\c\private\10207254\themes\271012080\270513751
-
-SET THEME_DEST_C_UDEB_DIR=%EPOCROOT%epoc32\RELEASE\winscw\udeb\z\private\10207254\themes\271012080\270513751
-SET THEME_DEST_C_UREL_DIR=%EPOCROOT%epoc32\RELEASE\winscw\urel\z\private\10207254\themes\271012080\270513751
-SET THEME_DEST_Z_DIR=%EPOCROOT%epoc32\data\z\private\10207254\themes\271012080\270513751
-
-if not exist %THEME_INSTALL_DIR1% mkdir %THEME_INSTALL_DIR1%
-if not exist %THEME_INSTALL_DIR3% mkdir %THEME_INSTALL_DIR3%
-if not exist %THEME_INSTALL_DIR1%\Loc mkdir %THEME_INSTALL_DIR1%\loc
-if not exist %THEME_INSTALL_DIR3%\Loc mkdir %THEME_INSTALL_DIR3%\loc
-
-echo Copying Active Idle theme files
-echo *******************************
-copy ..\activeidlethemes\themes\activeidle\activeidle_dat.dat %THEME_INSTALL_DIR1%
-copy ..\activeidlethemes\themes\activeidle\*.dtd %THEME_INSTALL_DIR1%
-copy ..\activeidlethemes\themes\activeidle\*.xml %THEME_INSTALL_DIR1%
-copy ..\activeidlethemes\themes\activeidle\*.css %THEME_INSTALL_DIR1%
-copy ..\activeidlethemes\themes\activeidle\*.mif %THEME_INSTALL_DIR1%
-copy ..\activeidlethemes\themes\activeidle\*.svg %THEME_INSTALL_DIR1%
-
-echo Copying Active Idle localized theme files
-echo *****************************************
-copy ..\activeidlethemes\themes\activeidle\activeidle_loc.dat %THEME_INSTALL_DIR1%\loc\
-copy ..\activeidlethemes\themes\activeidle\*.xml %THEME_INSTALL_DIR1%\loc
-copy ..\activeidlethemes\themes\activeidle\*.css %THEME_INSTALL_DIR1%\loc
-
-echo Copying Classic Idle theme files
-echo ********************************
-copy ..\activeidlethemes\themes\classicidle\classicidle_dat.dat %THEME_INSTALL_DIR3%
-copy ..\activeidlethemes\themes\classicidle\*.dtd %THEME_INSTALL_DIR3%
-copy ..\activeidlethemes\themes\classicidle\*.xml %THEME_INSTALL_DIR3%
-copy ..\activeidlethemes\themes\classicidle\*.css %THEME_INSTALL_DIR3%
-copy ..\activeidlethemes\themes\classicidle\*.mif %THEME_INSTALL_DIR3%
-copy ..\activeidlethemes\themes\classicidle\*.svg %THEME_INSTALL_DIR3%
-
-echo Copying Classic Idle localized theme files
-echo ******************************************
-copy ..\activeidlethemes\themes\classicidle\classicidle_loc.dat %THEME_INSTALL_DIR3%\loc\
-copy ..\activeidlethemes\themes\classicidle\*.xml %THEME_INSTALL_DIR3%\loc
-copy ..\activeidlethemes\themes\classicidle\*.css %THEME_INSTALL_DIR3%\loc
-
-if not exist %EPOCROOT%epoc32\winscw\c\logs\themeinstallercons mkdir %EPOCROOT%epoc32\winscw\c\Logs\themeinstallercons
-
-echo Installing Active Idle theme files
-echo **********************************
-%EPOCROOT%epoc32\release\winscw\udeb\xnthemeinstallercons.exe C:\data\themeinstalltemp\activeidle\
-type %EPOCROOT%epoc32\winscw\c\logs\themeinstallercons\themeinstallercons.log
-
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_C_UDEB_DIR%
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_C_UREL_DIR%
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_Z_DIR%
-
-echo Installing Classic Idle theme files
-echo ***********************************
-%EPOCROOT%epoc32\release\winscw\udeb\xnthemeinstallercons.exe C:\data\themeinstalltemp\classicidle\
-type %EPOCROOT%epoc32\winscw\c\Logs\themeinstallercons\themeinstallercons.log
-
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_C_UDEB_DIR%
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_C_UREL_DIR%
-xcopy /s /i /c %THEME_INSTALLED_DIR% %THEME_DEST_Z_DIR%
-
-echo Copying Active Idle binary themes
-echo *********************************
-copy %THEME_DEST_Z_DIR%\271063149\1.0\AI.*  ..\activeidlethemes\binarythemes\activeidle\
-
-echo Copying Classic Idle binary themes
-echo **********************************
-copy %THEME_DEST_Z_DIR%\271063147\1.0\CI.*  ..\activeidlethemes\binarythemes\classicidle\
-
-ENDLOCAL
--- a/internetradio2.0/group/internetradio.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +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
-*
-*/
-
-
-// To get the APP_LAYER_SYSTEMINCLUDE-definition
-#include 		<platform_paths.hrh>
-#include        <bldvariant.hrh>
-
-#include <data_caging_paths.hrh>
-#include "internetradioconfigurationflags.hrh"
-
-TARGET          internetradio.exe
-TARGETTYPE      exe
-UID             0x100039CE 0x2000B499
-VENDORID        VID_DEFAULT
-CAPABILITY      NetworkServices ProtServ ReadDeviceData ReadUserData  \
-                SwEvent UserEnvironment WriteDeviceData WriteUserData \
-                TrustedUI NetworkControl MultiMediaDD
-
-EPOCSTACKSIZE   0x5000
-EPOCHEAPSIZE    0x8000 0x400000
-
-PAGED
-
-LANGUAGE_IDS
-
-SOURCEPATH      ../uisrc
-SOURCE          ir.cpp
-SOURCE          irapplication.cpp
-SOURCE          irdocument.cpp
-SOURCE          irui.cpp
-SOURCE          irbaseview.cpp
-SOURCE          irnowplayingview.cpp
-SOURCE          irnowplayingviewcontainer.cpp
-SOURCE          irmainview.cpp
-SOURCE          irmaincontainer.cpp
-SOURCE          irhistorylistview.cpp
-SOURCE          irhistorylistcontainer.cpp 
-SOURCE          irsearchresultsview.cpp
-SOURCE          irsearchresultsviewcontainer.cpp
-SOURCE          irisdswrapper.cpp
-SOURCE          irhistory.cpp
-SOURCE          iralarmobserver.cpp
-SOURCE          irmessageobserver.cpp
-SOURCE          irmediaclient.cpp
-SOURCE          irnwinfoobserver.cpp
-SOURCE          irchangeobserver.cpp
-SOURCE          irpropertyobserver.cpp
-SOURCE          irpubsub.cpp
-SOURCE          irviewstack.cpp
-SOURCE          irfirsttimeview.cpp
-SOURCE          irfirsttimecontainer.cpp
-SOURCE          irdialoglauncher.cpp
-SOURCE          iraddmanuallystationview.cpp
-SOURCE          iraddmanuallystationcontainer.cpp
-SOURCE          irstationdirectorycontainer.cpp
-SOURCE          irstationdirectoryview.cpp
-SOURCE          ircostwarningview.cpp
-SOURCE          ircostwarningcontainer.cpp 
-SOURCE          irsettingscontainer.cpp
-SOURCE          irsettingsview.cpp
-SOURCE          irstationsview.cpp
-SOURCE          irstationsviewcontainer.cpp
-SOURCE          ircategoryview.cpp
-SOURCE          ircategoryviewcontainer.cpp
-SOURCE          irtopstationsview.cpp
-SOURCE          irplsplaylistitem.cpp
-SOURCE          irplsplaylist.cpp
-SOURCE          irplsview.cpp 
-SOURCE          irplscontainer.cpp 
-SOURCE          irsystemeventcollector.cpp            //for system events
-SOURCE          iraccessoryobserver.cpp               //for system events
-SOURCE          irsystemeventdetector.cpp             //for system events
-SOURCE          irpropertyobserver2.cpp               //for system events
-SOURCE          irnowplayingwrapper.cpp
-SOURCE          irstationinfoview.cpp
-SOURCE          irstationinfocontainer.cpp
-SOURCE          irstationinfopicture.cpp
-SOURCE          irfilteredmodel.cpp
-SOURCE          mirlistboxarray.cpp
-SOURCE          irradioidle.cpp
-SOURCE			irdiskspacewatcher.cpp
-SOURCE			irdiskspacesession.cpp
-SOURCE			ircontroleventobserver.cpp
-
-#ifdef __IRA_FEATURE_BACKSTEPPING_SERVICE
-SOURCE          irbacksteppingservicewrapper.cpp
-#endif // __IRA_FEATURE_BACKSTEPPING_SERVICE
-
-SOURCEPATH      ../uicontrolssrc
-SOURCE          irimageconverter.cpp
-SOURCE          irimageconverterimpl.cpp
-SOURCE          irstationlogocontrol.cpp
-SOURCE          irstationlogodata.cpp
-SOURCE          irstationinformationdata.cpp
-SOURCE          irstationinformationdisplay.cpp
-SOURCE          irmarqueeclet.cpp
-SOURCE          iriconloader.cpp
-SOURCE          iradvertisinglistbox.cpp
-SOURCE			irlayoututils.cpp
-
-
-
-
-START RESOURCE  ../resources/internetradio.rss
-HEADER
-TARGETPATH APP_RESOURCE_DIR
-END  // RESOURCE
-
-START RESOURCE ../resources/internetradio_reg.rss
-// Do not change the UID below.
-LANG SC
-TARGETPATH /private/10003a3f/import/apps
-END
-
-USERINCLUDE     ../include
-USERINCLUDE     ../group
-USERINCLUDE     ../uiinc
-USERINCLUDE     ../settingsinc
-USERINCLUDE     ../uicontrolsinc
-USERINCLUDE     ../settingsviewinc
-USERINCLUDE     ../datastructuresinc
-USERINCLUDE     ../favoritesdbinc
-USERINCLUDE     ../songhistoryinc
-USERINCLUDE     ../networkcontrollerinc
-USERINCLUDE     ../streamsourceinc
-USERINCLUDE     ../sessionloginc
-USERINCLUDE     ../mediaengineinc
-USERINCLUDE     ../commandchannelinc
-USERINCLUDE     ../isdsclientinc
-USERINCLUDE     ../dataproviderinc
-USERINCLUDE     ../cachemgmtinc
-USERINCLUDE     ../xmlparserinc
-USERINCLUDE     ../presetplugininc
-USERINCLUDE     ../resources
-USERINCLUDE     ../help
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(libc)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-// TODO will be removed after the changes of /epoc32/include
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   MW_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(mmf/common)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
-
-#ifdef MUL_USE_COMMON_COMPONENTS
-LIBRARY gesturehelper.lib
-#endif
-LIBRARY          agentdialog.lib
-LIBRARY          aknicon.lib
-LIBRARY          aknnotify.lib
-LIBRARY          aknlayout2.lib
-LIBRARY          aknlayout2scalable.lib
-LIBRARY          aknskins.lib
-LIBRARY          aknskinsrv.lib
-LIBRARY          alarmclient.lib
-LIBRARY          alfclient.lib 
-LIBRARY          apgrfx.lib
-LIBRARY          apmime.lib
-LIBRARY          apparc.lib
-LIBRARY          apsettingshandlerui.lib
-LIBRARY          avkon.lib
-LIBRARY          bafl.lib
-LIBRARY          bitgdi.lib
-LIBRARY          charconv.lib
-LIBRARY          commdb.lib
-LIBRARY          commonengine.lib
-LIBRARY          commsdat.lib
-LIBRARY          aknlayout.lib
-LIBRARY          cone.lib
-LIBRARY          downloadmgr.lib
-LIBRARY          ecom.lib
-LIBRARY          efsrv.lib
-LIBRARY          egul.lib
-LIBRARY          eikcoctl.lib
-LIBRARY          eikcore.lib
-LIBRARY          estlib.lib
-LIBRARY          estor.lib
-LIBRARY          etel.lib
-LIBRARY          etel3rdparty.lib
-LIBRARY          etelmm.lib
-LIBRARY          etext.lib
-LIBRARY          euser.lib
-LIBRARY          fbscli.lib
-LIBRARY          form.lib
-LIBRARY          fepbase.lib
-LIBRARY          gdi.lib
-LIBRARY          hal.lib
-LIBRARY          hlplch.lib
-LIBRARY          hwrmlightclient.lib
-LIBRARY          inetprotutil.lib
-LIBRARY          ircommandchannel.lib
-LIBRARY          irdatastructures.lib
-LIBRARY          irfavoritesdb.lib
-LIBRARY          irnetworkcontroller.lib
-LIBRARY          irsessionlog.lib
-LIBRARY          irsettings.lib
-LIBRARY          irstreamsource.lib
-LIBRARY          isdsclientinterface.lib
-LIBRARY          psclient100.lib
-LIBRARY          remconcoreapi.lib
-LIBRARY          remconinterfacebase.lib
-LIBRARY          svgengine.lib
-LIBRARY          ws32.lib
-LIBRARY          SWInstCli.lib 
-LIBRARY          imageconversion.lib
-LIBRARY          bitmaptransforms.lib
-LIBRARY          numberconversion.lib
-LIBRARY          irsonghistory.lib
-LIBRARY          eikctl.lib
-LIBRARY          ihl.lib eikdlg.lib
-LIBRARY          dsclient.lib
-LIBRARY          irdataprovider.lib             // for Logo Handling
-LIBRARY          PlatformEnv.lib 
-LIBRARY          gsecomplugin.lib
-LIBRARY          featmgr.lib
-LIBRARY          irsettingsview.lib
-LIBRARY          accclient.lib                  //For Headset Events
-LIBRARY          centralrepository.lib 
-LIBRARY          mediaclientaudio.lib 
-LIBRARY          StereoWideningEffect.lib
-LIBRARY          aknhlist.lib                   //for history's hierarichal list
-LIBRARY          msgs.lib                       //for message handling
-LIBRARY          msgs_autoshutdown.lib 
-LIBRARY          touchfeedback.lib
-LIBRARY          mpxviewplugin.lib
-LIBRARY          profileengine.lib 
-LIBRARY             mmfcontrollerframework.lib //to get the supported MIME types
-
-LIBRARY          flogger.lib
-
-#ifdef FF_IAUPDATE
-LIBRARY          iaupdateapi.lib 
-#endif
-
-#ifdef __IRA_FEATURE_BACKSTEPPING_SERVICE
-LIBRARY 	 liwservicehandler.lib
-#endif
-
--- a/internetradio2.0/group/internetradio_aif.mk	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#
-# Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:  This is file for creating .mif file (scalable icon)
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=$(EPOCROOT)epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\internetradio_aif.mif
-
-ICONDIR=..\aif
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-RESOURCE :	
-	mifconv $(ICONTARGETFILENAME) \
-		/c8,8 $(ICONDIR)\qgn_menu_irradio.svg
-		
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
-
--- a/internetradio2.0/group/internetradioconfigurationflags.hrh	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef INTERNETRADIOCONFIGURATIONFLAGS_HRH
-#define INTERNETRADIOCONFIGURATIONFLAGS_HRH
-
- 
-#include        <bldvariant.hrh>
- 
-
-// INTERNET RADIO FEATURE FLAGS 
-// Enabling: #define
-// Disabling: #undef
-
-/**
-* Flag to enable/disable gesture helpers.
-*/
-/*#ifdef MUL_USE_COMMON_COMPONENTS
-#define __IRA_FEATURE_GESTURE_HELPERS
-#else
-#undef __IRA_FEATURE_GESTURE_HELPERS
-#endif*/
-
-/**
-* Flag to enable/disable WMA support
-*/
-#define __IRA_FEATURE_WMA_ENABLED
-
-/**
-* Flag to enable/disable WMA support
-*/
-#define __IRA_FEATURE_EQUALIZER
-
-/**
-* Flag to enable/disable Back Stepping Framework usage.
-*/
-/*#ifdef FF_HOMESCREEN_COMMON_IDLEFW
-#define __IRA_FEATURE_BACKSTEPPING_SERVICE
-#endif*/
-#ifdef __IRA_FEATURE_BACKSTEPPING_SERVICE
-#undef __IRA_FEATURE_BACKSTEPPING_SERVICE
-#endif
-
-#endif // INTERNETRADIOCONFIGURATIONFLAGS_HRH
-
-// End of File
--- a/internetradio2.0/group/internetradioedwinskin.mk	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-#=====================================================================
-# Name : InternetRadioEdwinSkin.mk
-# Part of : InternetRadio
-#
-# Description:
-#
-#
-#=====================================================================
-#
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=$(EPOCROOT)epoc32\data\z
-endif
-# -------------------------------------------------------------------
-# TODO: Configure these.
-# -------------------------------------------------------------------
-
-TARGETDIR=$(ZDIR)\RESOURCE\APPS
-ICONTARGETFILENAME=$(TARGETDIR)\internetradioedwinskin.mif
-
-HEADERDIR=$(EPOCROOT)epoc32\include
-HEADERFILENAME=$(HEADERDIR)\internetradioedwinskin.mbg
-ICONDIR=..\mbm
-
-do_nothing : 
-	@rem do_nothing
-		
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-		
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# -------------------------------------------------------------------
-# TODO: Configure these.
-#
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included
-# automatically by MifConv if the mask depth is defined.
-# -------------------------------------------------------------------
-
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
-		/c16 $(ICONDIR)\qgn_ir_background.svg
-	
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES : 
-	@echo $(ICONTARGETFILENAME)
-    
-FINAL : do_nothing
--- a/internetradio2.0/group/internetradioiconsskin.mk	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-#=====================================================================
-# Name : InternetRadioIcons.mk
-# Part of : InternetRadio
-#
-# Description:
-#
-#
-#=====================================================================
-#
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=$(EPOCROOT)epoc32\data\z
-endif
-# -------------------------------------------------------------------
-# TODO: Configure these.
-# -------------------------------------------------------------------
-
-TARGETDIR=$(ZDIR)\resource\apps
-HEADERDIR=\epoc32\include
-ICONTARGETFILENAME=$(TARGETDIR)\internetradio.mif
-HEADERFILENAME=$(HEADERDIR)\internetradio.mbg
-
-do_nothing : 
-	@rem do_nothing
-		
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-		
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# -------------------------------------------------------------------
-# TODO: Configure these.
-#
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included
-# automatically by MifConv if the mask depth is defined.
-# -------------------------------------------------------------------
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) /Ficonlist.txt
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME)&& \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/internetradio2.0/group/iractionhandler.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  IR Action Handler Plugin
-*
-*/
-
-// To get the APP_LAYER_SYSTEMINCLUDE-definition
-#include 		<platform_paths.hrh>
-#include "../resources/iractionhandler.hrh"	
-
-TARGET          iractionhandler.dll
-TARGETTYPE      PLUGIN
-UID             0x10009D8D KIRActionHandlerDllUid 
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-PAGED
-
-SOURCEPATH      ../resources
-START RESOURCE 2001A962.rss
-TARGET  iractionhandler.rsc
-LANG SC
-END
-
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-USERINCLUDE     ../actionhandlerinc
-USERINCLUDE     ../resources
-
-USERINCLUDE	   ../include
-
-SOURCEPATH      ../actionhandlersrc
-SOURCE          iractionhandler.cpp
-
-LIBRARY         ecom.lib
-LIBRARY         euser.lib
-LIBRARY         liwservicehandler.lib
-LIBRARY         ws32.lib
-LIBRARY         apgrfx.lib
-LIBRARY         apparc.lib
-
-LIBRARY            flogger.lib
-
-// End of File
--- a/internetradio2.0/group/iractiveidle.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +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
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 21, Tue Mar 11 20:00:00 2008 by Rohit
-*  Ref:
-*  Merged IRv1.0 Engine code changes
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include 		<platform_paths.hrh>
- 
-#include <data_caging_paths.hrh>
-
-
-
-TARGET iractiveidle.dll
-TARGETTYPE PLUGIN
-
-// ECom Dll recognition UID followed by the unique UID for this dll
-UID 0x10009D8D 0x2000B4AB
-//VENDORID 
-
-PAGED
-
-//source file
-SOURCEPATH        ../activeidlesrc	
-SOURCE		iractiveidle.cpp
-SOURCE		iractiveidlemain.cpp
-SOURCE          iractiveidlestatedetector.cpp
-
-//user include
-USERINCLUDE    ../activeidleinc
-USERINCLUDE	   ../include
-USERINCLUDE    ../uiinc
-USERINCLUDE    ../activeidleenginc
-USERINCLUDE    ../resources
-USERINCLUDE    ../group
-USERINCLUDE    ../streamsourceinc
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-SOURCEPATH        ../resources
-
-//resource file
-START RESOURCE  2000B4AB.rss
-TARGET IRActiveIdle.rsc
-end
-
-SOURCEPATH          ../resources
-START RESOURCE      iractiveidle.rss
-LANG SC 01 02 03 04 05 06 07 08 09 10 13 14 15 16 17 18 25 26 27 28 29 30 31 32 33 37 39 42 44 45 49 50 51 54 57 58 59 67 68 70 76 78 79 83 93 94 96 129 157 158 159 160 161 326 327 401 402
-
-HEADER
-TARGETPATH          RESOURCE_FILES_DIR
-end
-LIBRARY 				eikcore.lib
-LIBRARY                 aiutils.lib
-LIBRARY                 apgrfx.lib
-LIBRARY                 apparc.lib
-LIBRARY                 avkon.lib
-LIBRARY                 bafl.lib
-LIBRARY                 commonengine.lib 
-LIBRARY                 cone.lib
-LIBRARY                 ecom.lib
-LIBRARY                 efsrv.lib
-LIBRARY                 euser.lib
-LIBRARY                 iractiveidleengine.lib
-LIBRARY featmgr.lib 
-
-LIBRARY            flogger.lib
-
-//capability
-//CAPABILITY LocalServices Location NetworkServices PowerMgmt ProtServ ReadDeviceData ReadUserData SurroundingsDD SwEvent TrustedUI UserEnvironment WriteDeviceData WriteUserData
-CAPABILITY              CAP_ECOM_PLUGIN		
--- a/internetradio2.0/group/iractiveidleengine.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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
-*
-*/
-
-
-// To get the APP_LAYER_SYSTEMINCLUDE-definition
-#include 		<platform_paths.hrh>
-
-TARGET        iractiveidleengine.dll
-TARGETTYPE    dll
-UID 0x1000008d  0x2000B4A7      
-
-PAGED
-
-//source file
-SOURCEPATH	../activeidleengsrc
-
-SOURCE        iractiveidleeng.cpp
-SOURCE        iractiveidleengpubsub.cpp
-
-USERINCLUDE    ../activeidleenginc
-USERINCLUDE    ../include
-USERINCLUDE    ../uiinc
-USERINCLUDE    ../streamsourceinc
-
-APP_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH	../resources
-
-START RESOURCE	internetradio.rss
-TARGETPATH resource/apps
-END
-
-LIBRARY                 estor.lib
-LIBRARY                 euser.lib
-
-LIBRARY            flogger.lib
-
-//CAPABILITY LocalServices Location NetworkServices PowerMgmt ProtServ ReadDeviceData ReadUserData SurroundingsDD SwEvent TrustedUI UserEnvironment WriteDeviceData WriteUserData
-CAPABILITY		CAP_GENERAL_DLL
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
--- a/internetradio2.0/group/ircachemgmt.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c)  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 		<platform_paths.hrh>
-
-TARGET        ircachemgmt.dll
-TARGETTYPE    dll
-UID          0x1000008d 0x2000B4A1
-
-PAGED
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-SOURCEPATH    ../cachemgmtsrc
-SOURCE        ircachemgmt.cpp
-SOURCE		  ircachecleanup.cpp
-USERINCLUDE   ../cachemgmtinc
-USERINCLUDE   ../include
-USERINCLUDE   ../settingsinc
-USERINCLUDE   ../datastructuresinc
-USERINCLUDE   ../dataproviderinc
-USERINCLUDE   ../networkcontrollerinc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY             bafl.lib
-LIBRARY             edbms.lib
-LIBRARY             efsrv.lib
-LIBRARY             estor.lib
-LIBRARY             euser.lib
-LIBRARY             irdatastructures.lib
-LIBRARY             irsettings.lib
-
-LIBRARY        flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY		CAP_GENERAL_DLL
--- a/internetradio2.0/group/ircommandchannel.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 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:  
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        ircommandchannel.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B49B
-
-PAGED
-
-SOURCEPATH        ../commandchannelsrc
-
-SOURCE        irctrlcmdobserver.cpp
-
-USERINCLUDE       ../commandchannelinc
-USERINCLUDE       ../include
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY                 euser.lib
-
-LIBRARY            flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
--- a/internetradio2.0/group/irdataprovider.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include 		<platform_paths.hrh>
-#include        "common.mmp"
-
-TARGET        irdataprovider.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B49C
-
-PAGED
-
-SOURCEPATH    ../dataprovidersrc
-
-SOURCE        irdataprovider.cpp
-SOURCE        irhttpdataprovider.cpp
-SOURCE        irdataprovidertimer.cpp
-SOURCE        irhttppost.cpp
-SOURCE        irlogodownloadengine.cpp
-
-USERINCLUDE    ../dataproviderinc
-USERINCLUDE    ../include
-USERINCLUDE    ../settingsinc
-USERINCLUDE    ../networkcontrollerinc
-USERINCLUDE    ../datastructuresinc
-USERINCLUDE    ../favoritesdbinc
-USERINCLUDE    ../presetplugininc
-USERINCLUDE    ../cachemgmtinc
-USERINCLUDE    ../sessionloginc
-USERINCLUDE    ../../presetserver/include
-USERINCLUDE    ../../presetserver/clientinc
-USERINCLUDE    ../../presetserver/serverinc
-
-APP_LAYER_SYSTEMINCLUDE
-// TODO will be removed after the changes of /epoc32/include
-SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE    MW_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(mmf/common)
-
-LIBRARY             bafl.lib
-LIBRARY             cone.lib
-LIBRARY             efsrv.lib
-LIBRARY             euser.lib
-LIBRARY             http.lib
-LIBRARY             inetprotutil.lib
-LIBRARY             irnetworkcontroller.lib
-LIBRARY             irsettings.lib
-LIBRARY             irdatastructures.lib
-LIBRARY             irfavoritesdb.lib
-LIBRARY             psclient100.lib
-LIBRARY             ircachemgmt.lib
-LIBRARY             mmfcontrollerframework.lib //to get the supported MIME types
-LIBRARY             avkon.lib //to display the information note
-
-
-
-//test linker error
-LIBRARY cenrepnotifhandler.lib
-LIBRARY	commonengine.lib
-LIBRARY etel.lib
-LIBRARY etel3rdparty.lib
-LIBRARY etelmm.lib
-LIBRARY estor.lib
-LIBRARY xmlframework.lib
-
-
-//LIBRARY avctpplugins.lib
-//LIBRARY eintsock.lib
-LIBRARY impapprotocolcontroller.lib
-LIBRARY imut.lib
-LIBRARY netmsg.lib
-LIBRARY netmeta.lib
-LIBRARY nifman.lib
-LIBRARY pops.lib
-LIBRARY responsemsg.lib
-LIBRARY smts.lib
-LIBRARY ezlib.lib
-
-//test end
-
-
-LIBRARY        flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
--- a/internetradio2.0/group/irdatastructures.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irdatastructures.dll
-TARGETTYPE    dll
-UID            0x1000008d 0x2000B49A
-
-PAGED
-
-SOURCEPATH    ../datastructuressrc
-
-SOURCE		irbrowsecatagoryitems.cpp
-SOURCE		irchannelserverurl.cpp
-SOURCE		irisdspreset.cpp
-SOURCE		irbrowsechannelitems.cpp
-SOURCE		iradvertisement.cpp
-SOURCE		irotaupdate.cpp
-SOURCE		irlastplayedsongs.cpp
-
-USERINCLUDE    ../datastructuresinc
-USERINCLUDE    ../include
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY             bafl.lib
-LIBRARY             estor.lib
-LIBRARY             euser.lib
-
-LIBRARY        flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
--- a/internetradio2.0/group/irfavoritesdb.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include 		<platform_paths.hrh>
-TARGET        irfavoritesdb.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B4A0
-
-PAGED
-
-SOURCEPATH        ../favoritesdbsrc
-
-SOURCE		irfavoritesdb.cpp
-
-USERINCLUDE     ../favoritesdbinc
-USERINCLUDE     ../include
-USERINCLUDE     ../settingsinc
-USERINCLUDE     ../datastructuresinc
-USERINCLUDE     ../presetplugininc
-USERINCLUDE     ../xmlparserinc
-USERINCLUDE     ../../presetserver/include
-USERINCLUDE     ../../presetserver/clientinc
-USERINCLUDE     ../../presetserver/serverinc
-
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-LIBRARY             estor.lib
-LIBRARY             euser.lib
-LIBRARY             irdatastructures.lib
-LIBRARY             irsettings.lib
-LIBRARY             psclient100.lib
-LIBRARY             irxmlparser.lib
-
-LIBRARY        flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY		CAP_GENERAL_DLL
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-
--- a/internetradio2.0/group/irgeneralsettings.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Project definition file for project vrgeneralsettings
-*
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-#include        <bldvariant.hrh>
-
-TARGET                  irgeneralsettings200.dll
-TARGETTYPE              PLUGIN
-UID						0x10009d8d 0x2001A930
-
-//CAPABILITY LocalServices Location NetworkServices ReadUserData SwEvent UserEnvironment WriteUserData ReadDeviceData WriteDeviceData NetworkControl PowerMgmt 
-CAPABILITY              CAP_ECOM_PLUGIN
-VENDORID                VID_DEFAULT
-
-PAGED
-
-SOURCEPATH              ../resources
-START RESOURCE		    2001A930.rss
-TARGET                  irgeneralsettings200.rsc
-TARGETPATH              ECOM_RESOURCE_DIR
-
-
-HEADER
-LANGUAGE_IDS
-END // RESOURCE
-
-
-START RESOURCE          irgeneralsettings.rss
-TARGETPATH              RESOURCE_FILES_DIR
-
-HEADER
-LANGUAGE_IDS
-END // RESOURCE
-
-USERINCLUDE             ../generalsettingsinc
-USERINCLUDE             ../group
-USERINCLUDE             ../resources
-USERINCLUDE             ../settingsinc
-USERINCLUDE             ../settingsviewinc
-USERINCLUDE				../include
-//USERINCLUDE   			 ../networkcontrollerinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-LIBRARY                 aknskins.lib
-LIBRARY                 avkon.lib
-LIBRARY                 commonengine.lib
-LIBRARY                 cone.lib
-LIBRARY                 eikcoctl.lib
-LIBRARY                 eikcore.lib
-LIBRARY                 euser.lib
-LIBRARY                 gsecomplugin.lib
-LIBRARY					irsettingsview.lib
-
-LIBRARY           apparc.lib
-LIBRARY           efsrv.lib CommonEngine.lib
-LIBRARY           GSFramework.lib  bafl.lib
-LIBRARY           eikctl.lib  estor.lib /*eiksrv.lib */
-LIBRARY	flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-SOURCEPATH ../generalsettingssrc
-SOURCE irgeneralsettingsview.cpp irgeneralsettingsimplementationtable.cpp
--- a/internetradio2.0/group/irmcpplugin.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  IR Music Content Publisher Plugin is responsible for publishing content and
-*                actions towards Home screen and Matrix menu.
-*
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-#include "../resources/irmcpplugin.hrh"	
-
-TARGET          irmcpplugin100.dll
-TARGETTYPE      PLUGIN
-UID             0x10009D8D KIRMCPPluginDllUid
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-PAGED
-
-LANGUAGE_IDS
-
-SOURCEPATH      ../resources
-START RESOURCE 2001A961.rss
-TARGET  irmcpplugin100.rsc
-LANG SC
-END
-
-START RESOURCE  irmcpplugin.rss
-HEADER
-TARGET      irmcpplugin.rsc
-TARGETPATH RESOURCE_FILES_DIR
-END
-
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-USERINCLUDE     ../mcpplugininc
-USERINCLUDE     ../resources
-USERINCLUDE     ../activeidleenginc
-USERINCLUDE     ../include
-USERINCLUDE     ../actionhandlerinc
-USERINCLUDE     ../streamsourceinc
-
-
-SOURCEPATH      ../mcppluginsrc
-SOURCE          irmcpplugin.cpp
-
-LIBRARY         bafl.lib 
-LIBRARY         cone.lib
-LIBRARY         commonengine.lib
-LIBRARY         ecom.lib
-LIBRARY         efsrv.lib
-LIBRARY         euser.lib
-LIBRARY         liwservicehandler.lib
-LIBRARY         psclient100.lib
-LIBRARY         iractiveidleengine.lib
-
-LIBRARY flogger.lib
-
-#if defined( WINSCW )
-deffile ../bwinscw/ 
-#else
-deffile ../bmarm/ 
-#endif
-
-// End of File
--- a/internetradio2.0/group/irmediaengine.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Container for data buffer, it has fields for holding
-*							: address and size of memory chunk
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET irmediaengine.dll
-TARGETTYPE PLUGIN
-
-// ECom Dll recognition UID followed by the unique UID for this dll
-UID 0x10009D8D 0x2000B4A8
-VENDORID 0x70000001
-
-PAGED
-
-//source file
-SOURCEPATH        ../mediaenginesrc
-SOURCE		irmediaengineproxy.cpp
-SOURCE		irmp3player.cpp
-SOURCE		iraacplayer.cpp
-SOURCE		irbuffercontainer.cpp
-SOURCE		irtestingaudioplayer.cpp
-
-//user include
-USERINCLUDE		../mediaengineinc
-USERINCLUDE             ../include
-USERINCLUDE             ../commandchannelinc
-USERINCLUDE             ../resources
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(mda/common)
-
-SOURCEPATH        ../resources
-
-//resource file
-start resource 2000b4a8.rss
-TARGET irmediaengine.rsc
-end
-
-LIBRARY             ecom.lib
-LIBRARY             euser.lib
-LIBRARY             ircommandchannel.lib
-LIBRARY             mediaclientaudiostream.lib
-LIBRARY             mmfserverbaseclasses.lib
-
-LIBRARY        flogger.lib
-
-//capability
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-
-CAPABILITY              CAP_ECOM_PLUGIN NetworkControl MultiMediaDD
--- a/internetradio2.0/group/irnetworkcontroller.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irnetworkcontroller.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B4A2
-
-PAGED
-
-SOURCEPATH    ../networkcontrollersrc
-
-SOURCE        	irnetworkcontroller.cpp
-SOURCE		    irnetworkobserver.cpp
-SOURCE		    irdatatransfertracker.cpp
-SOURCE          irfilteredapreader.cpp
-
-USERINCLUDE     ../networkcontrollerinc
-USERINCLUDE     ../include
-USERINCLUDE     ../settingsinc
-
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-// TODO will be removed after the changes of /epoc32/include
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   MW_LAYER_PUBLIC_EXPORT_PATH(http)
-
-LIBRARY             bafl.lib
-LIBRARY             centralrepository.lib
-LIBRARY             commdb.lib
-LIBRARY             commsdat.lib
-LIBRARY             connmon.lib
-LIBRARY             esock.lib
-LIBRARY             euser.lib
-LIBRARY             featdiscovery.lib
-LIBRARY             irsettings.lib
-LIBRARY             http.lib
-LIBRARY 	        inetprotutil.lib
-LIBRARY 	        cmmanager.lib
-LIBRARY             extendedconnpref.lib
-LIBRARY             netmeta.lib
-LIBRARY             flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-
--- a/internetradio2.0/group/irrecognizer.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2005 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: 
-*     This is the project specification file for RecognizerEx.
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET          irfilerecognizer.dll
-TARGETTYPE      PLUGIN
-UID             0x10009D8D 0x2000B4A9
-
-PAGED
-
-SOURCEPATH      ../filerecognizersrc
-
-SOURCE          irrecognizer.cpp
-
-SOURCEPATH	../resources
-
-START RESOURCE  2000b4a9.rss
-TARGET          irfilerecognizer.rsc
-END
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData
-CAPABILITY              CAP_ECOM_PLUGIN
-VENDORID        0
-
-USERINCLUDE     ../filerecognizerinc
-USERINCLUDE     ../include
-USERINCLUDE     ../resources
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-LIBRARY             euser.lib
-LIBRARY             apmime.lib
-LIBRARY             efsrv.lib 
-LIBRARY             flogger.lib
-
--- a/internetradio2.0/group/irrfsplugin.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Project definition file for project Internet Radio RFS plugin
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET                  irrfsplugin.dll
-TARGETTYPE              PLUGIN
-UID                     0x10009D8D 0x2000B4AC
-
-CAPABILITY              CAP_ECOM_PLUGIN
-VENDORID                VID_DEFAULT
-
-PAGED
-
-SOURCEPATH              ../rfspluginsrc
-SOURCE                  irrfsplugin.cpp
-SOURCE                  irrfspluginproxy.cpp
-
-SOURCEPATH              ../resources
-START RESOURCE          2000b4ac.rss
-TARGET                  irrfsplugin.rsc
-END // RESOURCE
-
-USERINCLUDE             ../rfsplugininc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-LIBRARY                 ecom.lib
-LIBRARY                 efsrv.lib
-LIBRARY                 euser.lib
-
--- a/internetradio2.0/group/irsessionlog.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Project definition file for project Internet Radio sessionlog
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irsessionlog.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B4A6
-
-SOURCEPATH    ../sessionlogsrc
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
-PAGED
-
-
-SOURCE        irsessionlogger.cpp
-SOURCE        irsessionloggerutility.cpp
-SOURCE	      irsessiondb.cpp
-SOURCE        irnmslogdb.cpp
-SOURCE        irnmslogger.cpp
-SOURCE        irphoneinfo.cpp
-
-USERINCLUDE   ../sessionloginc
-USERINCLUDE   ../include
-USERINCLUDE   ../settingsinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY             bafl.lib
-LIBRARY             charconv.lib 
-LIBRARY             cone.lib 
-LIBRARY             edbms.lib 
-LIBRARY             efsrv.lib
-LIBRARY             estor.lib 
-LIBRARY             euser.lib
-LIBRARY             ezlib.lib 
-LIBRARY             irsettings.lib
-LIBRARY             sysutil.lib
-LIBRARY             etel3rdparty.lib
-LIBRARY             imut.lib
-LIBRARY             flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-
-
-
--- a/internetradio2.0/group/irsettings.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Settings component definition file.
-*
-*/
-
-
-#include 		<platform_paths.hrh>
-#include            <data_caging_paths.hrh>
-
-TARGET              irsettings.dll
-TARGETTYPE          DLL
-UID                 0x1000008D 0x2000B4A3
-
-
-VENDORID            VID_DEFAULT
-//CAPABILITY          NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
-PAGED
-
-SOURCEPATH          ../settingssrc
-SOURCE              irsettings.cpp
-
-USERINCLUDE         ../include
-USERINCLUDE         ../settingsinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server)
-
-SOURCEPATH          ../resources
-START RESOURCE      irsettings.rss
-HEADER
-TARGETPATH          RESOURCE_FILES_DIR
-END
-
-LIBRARY             bafl.lib
-LIBRARY             commonengine.lib
-LIBRARY             cone.lib
-LIBRARY             efsrv.lib
-LIBRARY             estor.lib
-LIBRARY             euser.lib
-LIBRARY             platformenv.lib
-LIBRARY				centralrepository.lib
-LIBRARY             mmfdevsound.lib
-
-LIBRARY        flogger.lib
-
-#if defined( WINSCW )
-DEFFILE             ../bwinscw/ 
-#else
-DEFFILE             ../bmarm/ 
-#endif
--- a/internetradio2.0/group/irsettingsview.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +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:  Gives the history data
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irsettingsview.dll
-TARGETTYPE    dll
-UID           0x1000008D 0x10282BAF
-
-PAGED
-
-SOURCEPATH    ../settingsviewsrc
-
-SOURCE 		  ircommonsettingscontainer.cpp
-SOURCE		  irsettingsviewbase.cpp
-//SOURCE		  irsnapsettingitem.cpp
-
-
-USERINCLUDE    ../include
-USERINCLUDE    ../networkcontrollerinc
-USERINCLUDE    ../settingsviewinc
-USERINCLUDE    ../settingsinc
-USERINCLUDE    ../resources
-USERINCLUDE	   ../help
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-// TODO will be removed after the changes of /epoc32/include
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   MW_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(mmf/common)
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
-
-LIBRARY             bafl.lib
-LIBRARY             charconv.lib
-LIBRARY             efsrv.lib
-LIBRARY             euser.lib
-LIBRARY             estor.lib
-LIBRARY             irsettings.lib
-LIBRARY		        irnetworkcontroller.lib
-LIBRARY		        PlatformEnv.lib 
-LIBRARY             gsecomplugin.lib
-LIBRARY             featmgr.lib
-LIBRARY             avkon.lib
-LIBRARY             eikcoctl.lib
-LIBRARY             eikcore.lib
-LIBRARY             cone.lib
-LIBRARY             hlplch.lib
-LIBRARY			    CommonEngine.lib
-LIBRARY 		    cmmanager.lib		
-
-
-
-
-//test linker error
-LIBRARY cenrepnotifhandler.lib
-LIBRARY	commonengine.lib
-LIBRARY etel.lib
-LIBRARY etel3rdparty.lib
-LIBRARY etelmm.lib
-LIBRARY inetprotutil.lib
-LIBRARY xmlframework.lib
-
-
-//LIBRARY avctpplugins.lib
-//LIBRARY eintsock.lib
-LIBRARY impapprotocolcontroller.lib
-LIBRARY imut.lib
-LIBRARY netmsg.lib
-LIBRARY netmeta.lib
-LIBRARY nifman.lib
-LIBRARY pops.lib
-LIBRARY responsemsg.lib
-LIBRARY smts.lib
-
-
-//test end
-
-            
-
-LIBRARY        flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI CommDD PowerMgmt MultimediaDD DRM DiskAdmin NetworkControl 
-CAPABILITY CAP_GENERAL_DLL
--- a/internetradio2.0/group/irsonghistory.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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:  Gives the history data
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irsonghistory.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2001A92F
-
-PAGED
-
-SOURCEPATH    ../songhistorysrc
-
-SOURCE 		  irsonghistorydb.cpp	
-SOURCE		  irsonghistoryengine.cpp
-SOURCE		  irsonghistoryengpubsub.cpp
-SOURCE        irsonghistoryinfo.cpp
-
-
-USERINCLUDE    ../include
-USERINCLUDE    ../songhistoryinc
-USERINCLUDE    ../streamsourceinc
-USERINCLUDE    ../uiinc
-USERINCLUDE    ../settingsinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY             bafl.lib
-LIBRARY             charconv.lib
-LIBRARY             efsrv.lib
-LIBRARY             euser.lib
-LIBRARY             edbms.lib  
-LIBRARY             estor.lib
-LIBRARY             irsettings.lib
-
-            
-
-LIBRARY        flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
--- a/internetradio2.0/group/irstreamsource.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c)  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:  Project definition file for project Stream source
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET          irstreamsource.dll
-TARGETTYPE      dll
-UID             0x1000008d 0x2000B49F
-
-PAGED
-
-SOURCEPATH	../streamsourcesrc
-
-SOURCE          irstreamsource.cpp
-SOURCE          irsockettimeouttimer.cpp
-SOURCE          iricyflowinitiator.cpp
-SOURCE          iricyflowreader.cpp
-SOURCE          irsocketopener.cpp
-SOURCE          irstationconnection.cpp
-SOURCE          irnetworkbuffer.cpp
-SOURCE			irasfplayer.cpp
-
-USERINCLUDE     ../streamsourceinc
-USERINCLUDE     ../include
-USERINCLUDE     ../mediaengineinc
-USERINCLUDE     ../networkcontrollerinc
-USERINCLUDE     ../uiinc
-USERINCLUDE     ../commandchannelinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-// TODO will be removed after the changes of /epoc32/include
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(http)
-SYSTEMINCLUDE   MW_LAYER_PUBLIC_EXPORT_PATH(http)
-
-LIBRARY         esock.lib
-LIBRARY         euser.lib
-LIBRARY         inetprotutil.lib 
-LIBRARY         insock.lib
-LIBRARY         irnetworkcontroller.lib
-LIBRARY			mediaclientaudio.lib 		// CMdaAudioPlayerUtility (ASF streaming)
-LIBRARY	        mmfcontrollerframework.lib  // CMMFMetaDataEntry (ASF streaming)
-
-//test linker error
-LIBRARY cenrepnotifhandler.lib
-LIBRARY	commonengine.lib
-LIBRARY etel.lib
-LIBRARY etel3rdparty.lib
-LIBRARY etelmm.lib
-LIBRARY estor.lib
-LIBRARY efsrv.lib
-LIBRARY xmlframework.lib
-LIBRARY charconv.lib
-
-//LIBRARY avctpplugins.lib
-//LIBRARY eintsock.lib
-LIBRARY impapprotocolcontroller.lib
-LIBRARY imut.lib
-LIBRARY netmsg.lib
-LIBRARY netmeta.lib
-LIBRARY nifman.lib
-LIBRARY pops.lib
-LIBRARY responsemsg.lib
-LIBRARY smts.lib
-
-
-//test end
-
-
-
-LIBRARY        flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY		 CAP_GENERAL_DLL
-
-#if defined( WINSCW )
-DEFFILE          ../bwinscw/ 
-#else
-DEFFILE          ../bmarm/ 
-#endif
-
--- a/internetradio2.0/group/irxmlparser.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +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:  Gives the data from the XMl File
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        irxmlparser.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B49D
-
-PAGED
-
-SOURCEPATH    ../xmlparsersrc
-
-SOURCE 		  irxmlcontenthandler.cpp 	
-SOURCE		  irxmlelements.cpp
-
-USERINCLUDE    ../xmlparserinc
-USERINCLUDE    ../include
-USERINCLUDE    ../datastructuresinc
-USERINCLUDE    ../cachemgmtinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
-
-LIBRARY             bafl.lib
-LIBRARY             charconv.lib
-LIBRARY             efsrv.lib
-LIBRARY             euser.lib
-LIBRARY             ircachemgmt.lib
-LIBRARY             irdatastructures.lib
-LIBRARY             xmlframework.lib
-
-LIBRARY        flogger.lib
-
-#if defined( WINSCW )
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY				CAP_GENERAL_DLL
-
--- a/internetradio2.0/group/isdsclient.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include 		<platform_paths.hrh>
-
-TARGET        isdsclientinterface.dll
-TARGETTYPE    dll
-UID           0x1000008d 0x2000B49E
-
-PAGED
-
-SOURCEPATH        ../isdsclientsrc
-SOURCE        irisdsclient.cpp
-SOURCE		  irlanguagemapper.cpp
-
-USERINCLUDE       ../isdsclientinc
-USERINCLUDE       ../include
-USERINCLUDE       ../datastructuresinc
-USERINCLUDE       ../dataproviderinc
-USERINCLUDE       ../networkcontrollerinc
-USERINCLUDE       ../cachemgmtinc
-USERINCLUDE       ../xmlparserinc
-USERINCLUDE       ../sessionloginc
-USERINCLUDE       ../settingsinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
-
-LIBRARY             charconv.lib
-LIBRARY             euser.lib
-LIBRARY             inetprotutil.lib
-LIBRARY             ircachemgmt.lib
-LIBRARY             irdataprovider.lib
-LIBRARY             irsessionlog.lib
-LIBRARY             irsettings.lib
-LIBRARY             irxmlparser.lib
-
-LIBRARY        flogger.lib
-
-#if defined(WINSCW)
-DEFFILE         ../bwinscw/ 
-#else
-DEFFILE         ../bmarm/ 
-#endif
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY		CAP_GENERAL_DLL
--- a/internetradio2.0/group/presetplugin.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c)  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 		<platform_paths.hrh>
-
-TARGET        presetplugin.dll
-TARGETTYPE    PLUGIN
-UID           0x10009D8D 0X2000B4AA
-
-PAGED
-
-SOURCEPATH    ../presetpluginsrc
-
-
-SOURCE		irpresetimpl.cpp
-SOURCE		irpresetpluginproxy.cpp
-
-
-USERINCLUDE   ../presetplugininc
-USERINCLUDE   ../include
-USERINCLUDE   ../datastructuresinc
-USERINCLUDE   ../../presetserver/clientinc
-USERINCLUDE   ../../presetserver/serverinc
-
-// Default system include paths for application layer modules.
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
-
-// RESOURCE
-SOURCEPATH              ../resources
-START RESOURCE          2000b4aa.rss
-TARGET                  presetplugin.rsc
-END // RESOURCE
-
-LIBRARY                 bafl.lib
-LIBRARY                 estor.lib
-LIBRARY                 euser.lib
-LIBRARY                 irdatastructures.lib
-LIBRARY                 psclient100.lib
-
-LIBRARY            flogger.lib
-
-//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
-CAPABILITY              CAP_ECOM_PLUGIN
-
Binary file internetradio2.0/help/iraap.hlp has changed
--- a/internetradio2.0/help/iraap.hlp.hrh	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-//
-// iraap.hlp.hrh
-//
-
-//
-// File generated by cshlpcmp Version 011
-//
-
-#ifndef __IRAAP_HLP_HRH__
-#define __IRAAP_HLP_HRH__
-
-#include <e32cmn.h>
-
-_LIT(KIR_HELP_MAIN,"IR_HELP_MAIN"); //Main menu view
-_LIT(KIR_HELP_NOW,"IR_HELP_NOW"); //Now playing view
-_LIT(KIR_HELP_STATIONS,"IR_HELP_STATIONS"); //Stations view
-_LIT(KIR_HELP_ADD_URL,"IR_HELP_ADD_URL"); //Add URL to stations view
-_LIT(KIR_HELP_DISCOVER,"IR_HELP_DISCOVER"); //Station directory view
-_LIT(KIR_HELP_GENRE,"IR_HELP_GENRE"); //Browse by genre view
-_LIT(KIR_HELP_GENRE_STATIONS,"IR_HELP_GENRE_STATIONS"); //Stations for genre view
-_LIT(KIR_HELP_LANGUAGE,"IR_HELP_LANGUAGE"); //Browse by language view
-_LIT(KIR_HELP_LANGUAGE_STATIONS,"IR_HELP_LANGUAGE_STATIONS"); //Stations for language view
-_LIT(KIR_HELP_COUNTRY,"IR_HELP_COUNTRY"); //Browse by country view
-_LIT(KIR_HELP_COUNTRY_STATIONS,"IR_HELP_COUNTRY_STATIONS"); //Stations for country view
-_LIT(KIR_HELP_TOP,"IR_HELP_TOP"); //Stations for top stations view
-_LIT(KIR_HELP_SEARCH,"IR_HELP_SEARCH"); //Search view
-_LIT(KIR_HELP_RESULTS,"IR_HELP_RESULTS"); //Search results view
-_LIT(KIR_HELP_SETTINGS,"IR_HELP_SETTINGS"); //Settings view
-_LIT(KIR_HELP_PLS,"IR_HELP_PLS"); //Receiving stations via .pls file view
-
-#endif
--- a/internetradio2.0/help/iraap_hlp.pdf	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-%PDF-1.3
-%ª«¬­
-1 0 obj
-<< /Type /Catalog
-/Pages 2 0 R
- >>
-endobj
-2 0 obj
-<< /Type /Pages
-/Count 5
-/Kids [6 0 R 8 0 R 10 0 R 12 0 R 14 0 R ] >>
-endobj
-3 0 obj
-<< /Type /Info
-/Producer (FOP 0.18.1-DEV) >>
-endobj
-4 0 obj
-<< 
-/Font << /F3 15 0 R /F2 16 0 R /F1 17 0 R >> 
-/ProcSet [ /PDF /ImageC /Text ] >> 
-endobj
-5 0 obj
-<< /Length 3395 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gau`W=``=W&q801d+_<q1)sQ3k$b9[8[@Y6a4Z?8RYT/='J)N_f+b4D+cl[%J.do\&tgX[Gr'.kqEq#2I"^A&hu*&%cY,#%YMP?YRF0\=>L20Qg$p5)*TG@lT/`uLBCkNW^HZ#%GEI87qjI826Y8Pg-ABST<P4n$D`7W>?dL)/B=6Z!\W"s_fIrlLm&8BQ#n=T$\hD/fLUjf<q25hOhMX((`AM6cMV/BJ'Dg[-Jdu;nq^aFmmlGn"k47i1s8%!5T0GPI>[FlQd!C;;W4"rAHD=rW.)6`26B(skU"8[@Oj>L+qc[/(c5]Vu*>8.l3^)*D;h7GGlumBUO@>B\\Q)?83kk*\WX1i/'+BpCFV7KsDIeLqV2p98]jNDLR-/"S)e/KmShi3a;;V6\jL!!VRb`*>Eg?$eKsDho^h;N)<LTm^nf]TsLP8F;6^f8*+),$q!*HK,F.<o!*q;9F^"(]70PcWB]MOI\Ip$]]ioil#HHS.\EC7KnZRp7&gl:)>U\4)N9Lhkg[cZl7\pHuSmdH]OgqiA`b!MP:"@7f1/f&-s>oG#.'"*T0[00g!TS6usB^HS[Ma%d&-oZeK_[[+/ktE\Wm8bN+W4mEhD=R&M<Y_*GC%b'KA)6e7ngIY510D-p-GtAsXaGY"fr&htKdI'X#:n#/P&I*X7k7,3_"VBJL;'ld9;EAa[;W;]d&L5PXuEe;)aqOq9D?h3AcDa6lRZEu1'^,FH^YW]L@R`Lh4#/Ol6t&@>C#"DPAUS6>i)?SF[OEN?Yh3=kE^gaY[>D![8haPKF!.D>tGmn]3%6^=0=?72=%kX2\5D:;j.p(H$mD9=J#kLCS&CU?EXUXs%2XdhPa9EU<7QbjB)cKhFHiPpjTMrb]7cq9UFo7\f_(o1,i):(!,L`0_lP$PB$]PmV6DbZ[Fh^qDZZZZjs7>_kK].#J1W]-dZ]:RKfM:fc@0<;VTFKs,a<VlX]AP9h:`p7ZB`>(mZp]Codi6\fZ)!(+G?^UUW&S9JA`80/;+3LRtIk4Cs'*`U*cU(]el<gmY^&qh)P(Wr5C2?ZtJ3Z0k"1UEZ,`H:UBY#dYD(OoCn+f7kLY*W9>-rh$/M`3*%#,c\4o.-hYM5'=MgiecW)kt]q+oY/)=)C<TP/HD<Z9ZDT#@#?\sp^9FrK&&sqauHgWJq,l:j`jB3#IY*VQ[q=e*h'"E)7dq6TKW3TKn@;7hnEEjjI7/n0f&lMi.AWSR]g$#ltGr6;f[dSY)5@J$'g-lE&[V2aK3F4lju_C#(a3h-C2Q0h!K2Q!q&(;E>oIRR7do=T)BG&p.<-Io1:n_q'94aKMK;j*F4]qI!195]4pJAC32!@',m=g/]=;EA#$<E4j.MPr3r6b9,61NL5`>a1%#V<j*;dDZ8\]3;j`&00ga6Gh?m$apT!-G1eKom/p2hI*B<8o+qV/&0;DY+`WQ!+]=[5P:c//@'nm-A]16mYA.i>p\6+/Y8Cf\ke-BPf`k[h`q9`je!RbTK`,4m-o=BsC*JO*U;G.SqLMk+j!2N?%OD)%"R7^4f.NWbci&EV:N.HeV_l:K7G1F(R@%h*'?=j]Xf]*Y+-e80OBZNtjP@-K-S=i3J7lt%cTgGrtr,J/3V&V2#F4=Hm3t1UZ0((u,lnZLDi-MiQdQ$Zdn'hH<XRjrO1"G6`Kq]qJ@Bk,>!3jdb)(!RbfVFaRBWffNrFud8?"/F/`"H,ra2)V\7gf;%7Mco,/ld)9R\g(Y"RLB7p*p7NXuMFi.FSos8,]hgo+KKB&CMn/Dp4+2n\3P[:Lga\-lA7j.q/:j'l0SV#4:@LjG1Gce-bl:^K$YsOG$<fV.I9"g`B/_YXcN#d(f!-b0i?IU4\#tHWi%E*g:fP'oOVUYVK:q@rKmal8KCAT]](WqQ5?RXF%shMB=NS1O#W6D.DAEjo5qcMq3?1nd_d?FD*lB+<XqaNoqKKAGIQ'Qu3f67t>pgOSYZc9^`XqB#oC,Y)pg,PJF+WniS='><7cFhO=3oq2'ZfBe_rWZtoS/<ZJ.TfK_tEA3.pdNVs]D20@:_*2HVX6Jb3\ks4']G#,.jC0Oj8M5!IRN%j0RF"!qgj9/m6Li?U)R#t(70[Rj=LC9)q9PglB0$6Iur.#t1o#F+>giin?o@QXV[7YPoM#6+k=?O[tN5\`iniKU`L)qf/a,Nr;!.&JZ3N;0KVLpVEG9FHh8;4cI+)IgSNY3aR,P]Z\5/Mf!$gQ280<.KNa2"W1+?\EA,K#X.;[\QuVXOKrZ,h"pPT)lVFb@'T6[rd#`YJY-'3.#'D"Np8(=b$F*V'gUR*sQk)*D^$#[p[_+O?/'fGe&#W<:r9'.J]+.t8V_6#btJJDp;N;@\U?bA,oh)M[p0#P2BAKR4p5cl.t:QQ=KK7o0^_(SJ[b#5W#uTg;"OPBs0mU2TI\UE1>sUX/'9/<@fC+s2'.c-->,H=l`A_<(\NntAMA!ou_tb+R)JY=(U^\d9K%DN#T<k5eW+Tp\W.#1DIBIPJV8Ed]a`4L>cH(@L-A5I:(82lKgf(`0Ceq2#kcqa]9P)7pO$X'9M\`rai(>(R;5+<6H6E[=ECW_9i`<K/%7Ef*?toA8]]YL[sf1hkL]?#dBYLdn#>McK0gbf=2$P="pgg#u@EN\`f)NL[/E?rYdmcL216KNa=n=h"VkD`4'(X"VNBGUabj_c9&LnR=U\%BoW>r3AFbUF>V=Ml:AIqSA5(WYulRN:A-kW`D9.3Nf@g)(rFYXubb.MlDhmTg"q=7B#g`)e(@j%Mr*gQoUfN\*0^RT\'_[$$%.CckKO8:u?)YV-XXHVajqi<L.Mu2uSK<BSJo?BUk\K%4.,s>ZVCln*bGc"V)82*doN!1>'jqURaQ-C:r*92_8A(?IAuQps;BHeN-;VT6MFmQ6aKP:cW\S/##HM_^qK?>Sh@d:PBhoibh#7i/H(+)qFi$o?luCA[0mT%[E,da\X@U+3=t]=#1X,NbO_"&t);d+W26\a'ch]3*N$GcZ)TKkWHY;LF7QC/YN@p9J07]$+8o'mWmrFj);r@Q#[mF2"7`.]qZ!g"(d'RIo(h_8D/3YH&c+J09i^T@-7>Tc,qI(*rAsqeo8PlcZ!k$<5XhIc$sLg3;R^M?4f+uXZ@+'/:a2.o[F&HNfa?kCH7!q&>\aZ$P#k/[bMT,Y2(phYC8$DNoAC\M2"MU-Ol,+J#Ea_c1F'lFl/3IcqcjTC#^.l*.Z=O=p&0=Y><KN0-(#!RtF$5-hIL'jV)MA2@)HXT'k]Y%Q4StOR$9Fk$XrkJF`3p2[:95*$jdJ2[<QjKYLQXig"K\'=_^4c_J!`8k1n0Qf4YfCmUd67>L'&><%!['-18>iU[Z/+io[.KSL%F7XJ_cg&o1iHn=oO/7u'N#^pab6fs'GCM9a>IWb1%pF!(#I@S(J)u)O7LB~>
-endstream
-endobj
-6 0 obj
-<< /Type /Page
-/Parent 2 0 R
-/MediaBox [ 0 0 595 841 ]
-/Resources 4 0 R
-/Contents 5 0 R
->>
-endobj
-7 0 obj
-<< /Length 3040 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gau`W=``U]&q6H[_7*.=-=#QgQ%r=!)/"-$]Ug]ZPF#fqMABWY2&+.V.67D%$VEOm.=_Q_A"IMY5^0!Na4K/:YH)mIr1-uD>-%OENoaB]ZH<F<*O1VH!nVU#bBI6]qk:FO>(?Nj)stV*ekad+CrcCGWhVVsZYK8I)eHW09qQmArb&A4/]gpA3)I(iLP28l0IG(mS%@ZOr6rpBIpHCZpZoeR%q!*,>kKpE9B1+QTu6:u%Ko..7OJfZ?eddR^Pf0/AWf1bhp`T9-B:_rJ]$XEXb\4$*&^?Qe.q%NMJ.o-<2/0+nicmp($iFq4$0%Ij$3Z\F+RQm7qB6:Y.F;UEG_%?]\sYIoqVFkaG7/>7?Jq_m[D["#]ji$:qTZKKQ(Z>5JX<a26+tj4m8Sui[!,r%$/Faj%,_1Bd8Y1ModbP`pLS5$ot\PP<T8j`USW7SbU>%J=^P30#o5SV7CkX0J'bNoVf%PK1eoWZZ98#q`cPfG;gMOC[E)1c!mMZB$jXE!?tnY:\eo'n/,`E7M9?qU^"XX.LHag&`>gFPMSh,HrhZ&!,>)hWn-C)0pCOjdO"[(NfI8BKE8o_38U&q)@GgFo3@W-RLYt)M'pQ!*++,e7L)7)[-Dnud4BD+TEuU"o:0;gAi#1NbkS"R!Y;hV&#8YV-a5acGM"tATeq0IaTl?YI%AmKB.\6ujEX,*j(^omgKg)GJL/o?hq@.s.&0t)DRC/(#>$ZcH]d%"f&-&":9n0>""#]#0(NaY$FNEojC+flj8k%gkNNJ&oJQc-2NG5nK@!d#7XD+o+[F0\\V?jeN'>F9FuFUaCQ((cqd^."B.,`I;:(pV2ne%+jl!;]q9jX,=#0]$K/#%\b"fasmj\?Ck>&*'q9A+;9(pIb<;`;;f.<]i<hrMn>'4Y##mg.3dn]:`''smgbD]@5:(HLumJ1=@>0$?9,tSV?rfY<oo1lgpA$.`Tlhh=tfee"9j=lRp5-_eO@)A"-?3jhk3UfmO+V-julNQL\m1XKFn":(1"H/Lqepf..6dPgYZ@dK"ZSU>Z5,JG.^)PJLg8qA(VU45F&cF.I;dCM6'&p092DnD5&L8p,E3`(9"H)nMP"'Z[=T"pUE#7Yc<$VnL#(&<YP(:mGU[e_'R$h]Jb6/Q'e^trK]?l.f3%:\rk,!&T`Ytlr=(<=9h>[-DO3=$gEf<T:lDjp'I0*8QM=:/FLeRI/o.9u%4d_5gMO<]=_Ml^<!Mq1L^a_$5mdERn116+-#)AI8A.39X&\(&]0NFr,W.T=/DpT:sUnJjfeOF\M]H8&\EfmSW"<Lm_YY:6EB=lBL@B21"$u9eE/c$`T2#&Z<ACN&f8MK:f;qcaDJ7C%n%s<N_eFs4.<_5R?+@29Z[>9<5L3Y9/QbOZeU\2Bfq.$8+o`pVE@`hqB_D!haFS@3]kZ"5_`"WCoFZ^KI=TLLl16Y#!qbDeE>X+0,d>5-Gkm`rQ3k)o$[PfR4*u`(Fh:>bb`8-?Q"0S9%N\nm"FpF\C6N`Jo%l(m<"&U+D_YAS0a&J65*]M2eK4r+g,q@1.T7^Zs=6<AmNiF#L*=E<NQQF/:)9>M!WOeEud=NRW2&>I11D[KLb#m6j/up?$ZUBi/)ppGM-:cL@d+orRe=M&RXn68D-D=u:KPJ/@SujE88upJ93rU7Z^:^G,O=W.%[!n8V>#/+.mEg$H&5t8>Nbr)'h%b4?9-XoDDjoiVG\q"iK*)1KXBE5p[M[T-BTKa],q`JH$ZQ&;f"6b-F6d,K6-:mbG7!<QPQBB#UY\F]cDl'p"ZQB\oe%C1e!sM.[X*.`AIZ$G<n'hTSJWHRU\?j=e?IfNbc#<Va5T;:V(d;"f;D@6<j!!EMBYh=P"5&K7`?P]cg*^:j;7#pW^;LY"PilZF!C^=dc_O*W`-a4IO\+@?orK6hYBV]M5IHIr6^07pE[terHs*hB;M%5J%WG.\X[D1oXf8;@^A[=l(K5K75rf@"/iG:SISB0BKI-P%14]sdIDVU6#n?YffYKj7.9t_q'_Xmg^Y<9aG(@rR_nPsULX['D20'OPfYUi,E@2A6@$[dKKIr(?id_C,C#P]cOqoleAnW90)0_Pa!$il3qp[HA*:fG\Z3$+._J9=oje-'((nih(Dl9>Gkptq4CSPY0o'`q.C91C-;"%b(i@VL1XFM>?,DIf4="'aJCJ(,O,%kKLi@ZG6tMpjO2/<07V1/:LuCM.]b5S?b\NVT^QL`"=/2hK7eM([aH"T'$F`!o)Yb^Uk#T/-^d7KIP%RM4Zgk^4j6.gt\MEn.kKuXVA2`Jm+I\dZCK`<`oe1mX\\tbSRE\%7B4La48f00SY^EVahf+h30nS`;5kCMV[e)CMB,R0,,k:f3K_*&o^16G[LjL23mkrG/AX\D?kO:SAV4&:BRpHrXpMth9hV/,.:'(WkEkE*\mp_VVJ=F8-W97JH1MAU=j6#9k]:f+T_#;m>e]$h&kNc=cPg?>,DTf`\(pXs5J?j@?+B%c(b)nI(!PU4<1`LG,!r1"JKTQ(UK-#8\LN>^LD$'30_oD6:7QoOEb5ntr.DV9YPAk#lD)m,I:BPtKk@;L3+75L#q!:ErH6'dke9%'[d?`?'+*=1eluc-`q+U1C;\':4+)`+L"\Ck0p=1pE>goB,UCKPAn&^oINE+&5O*A7jbJ6k83$a!=Q[p/%$LI/&?O$3DJPglWQ[t\IKP8ToF^G>rllBi>pbQ4\FtQ,ac*JM`s2%n5$sMcdC=.D/"nVh(3gDI'/-U]7@WQ*(D$kq-n'NL'=dBYD,VJou!iVdL_)$3kG?8*4nJJ,^(TaFBi#3&n(3kI?dm>d&?.-0S0(A29Dd-$Jgj,c6EI-&EN=/?E-8K@ATIknX$a`FU\=gcZ'\qpZY(+R5"X<m"`W_(DECo2BKSD-t>"33(1E%'cc<6,7&qJ_cX2Y>56%X>fj+;O41<m`0VMttjl#dm\`!&-h]/2./Q]a!cMX4f=$qB,k)B&<CLQUlT*#mTRi(]YS0>iM(rjJ)3F`IBMbJhMc;.[5'*p0E>nj@/IeEb83AWsp%L0nZ<k]6@as4^NRf`~>
-endstream
-endobj
-8 0 obj
-<< /Type /Page
-/Parent 2 0 R
-/MediaBox [ 0 0 595 841 ]
-/Resources 4 0 R
-/Contents 7 0 R
->>
-endobj
-9 0 obj
-<< /Length 3025 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gb!#_D/\/u')nJ0ToUePDRhE*P5Ps-kp<k];Q#>9!l`t=TV]%bKH^S_P0a1-QF9?0OLsT=bmAt%Yro?Kq_BtR4JTQW^\[%4SV=EGh(*Des,,)arC;@q'@39SJO]d6cK=HG^OMX65L+^i5tJZA&%b4mF?`bUebp'JiZsM%;t*Xe`Dr(6h$7Yah/D>#<H]H1=`;"RcK>/l]-D%Qc?9+DM*%9cZUtt#Wk(ti`QJCo>cM8"/C[JbP>j-6]qo)mn`Nha9JXbI(PUN*+"H$R$FH_H-".M2^UC8YhiQ/FfrN@E9bpMP<SD7cmLp?kXCsIX"X>i0Z1ROYMW]Vt=H%Xe1KTLY@mn\8`LH#d9iifh-b)hWI3En+BQ]&,id2;Rfsf9o,!:UVh\>lR$/Xh3j7$2TDqNMtgg?/1pViq$jQn)n`5-;Qa3-nV<_7IQNXkRB2fV\@Mes@KAg_9=3RMXQ#/HtSdhK`+DM`([DO`;0+,)1;ZO:*l\U`8t)uloZM<uXbLbRu;A->57Snrk`^(Vt&V7`^6]nJRA%Bfb<MRlThm-.!d*ZMj\nCetIC1Y,QepscB#aR]KB2F,/<-="kq]BFg`cM3Pic&=J9C')kXO+8-Xi?(>Oq]TJb=rm>WhoOa9*$*jc"NQB?M"r[8EJlD4:;Kg,%"`Kf6t,Nl!cHjJ_0qLqj;\=;#Yl\NfE?E4J)Bh\sG/D25!?l'JBk2b;ZG.qN)`X>qj#tXE=M-DUW#jH.ZOjq9POA>erJYPq2agFU=lF?3fnHgKW/+be7DcK(V`!Em8]W+GFFm61qSIhP_NIgpPU^V:PgSQ/!6CO5\mm0KSFQOo11KC43c?O?ann(L\W"fu6QRH2itq+-u1EhPT3Zj2GJpb?M^]*8KUH<`q1PKlGXbpp]\P=f+DKG>iCD>(S#AQeSYgTU'W(9^_=JTs=tte`0,e/!]RU!1cn.g3h@"gZo\UOBl+a>"71$]WR7=MYgQ61A-G/U1_Z!:#U^Z]YaA-?>!4UaT7nJ&L4B:U/,.qq=_^u?Tq_#^]/]Srp?&Aq:5E;O4Q>hLGirVKFGG7?s109i%$4%!.;#;!Trh`T*<sgmS3IbkDU;MRnlga9T%e;\i0mg&1JoK@&uZHq^\C9gkoApE/B7d_G1QW*qHpGTj#SH"I;6U6"hCURmj3t4f:H$@h"#$?74sl+<[f."p%;fUHq-Qg>Efo?+isRg?HXFqe">(W%a!<RZs)+/qs0&F_hVPlL8[VG^ei7WSIOb6/5c/Q*Rk$qGi2WKJbrP*6NS3-4@&ib'77YI&VuNr*h-U49.#s<BHJ/:A)(Ydm\\SDa?9\s4cVr[SUS&<lt<_AdCN-?(Prc?jTf!QLR"j8Dl5[JcrS]ESY^:0E7/=/5#CoZQ,L\.Sh2r^dnR*i_71[#eP\;orq?meBn!L1Wsi3oBfG.MYO4R$RM+eZRoV6^K$2:>Io>_0"BrXh^Wlq<M@tNFe%/iF%C@!bopB44(Wf("0N(s,(.OWnP9+S<2uGoH';_P5QH-\(pBTslXCT$]\$3PVqY&(948ifL=^[tk?.LoBgJcfg@MOII(EJB+^T(B:O+'H?!%K9i5f(=OCC^`[%[-19pjcmMa0h*PI)1l)pO-\Os`eYiD/D72$0Q&"I#J]\PX#2`K?TS3bE,Y_<g:1'dEHp;A3a&;lL'-PG1,r_72Jk0VJ=Me-&t<-u)*K*Q-0hTdCT[Fl=$LJpG1@k76TZW<oAB)/=am!8;i7C4_2&"cSsF:!`kCk_i=PPQ`<f;\S<]*c>te<CHtHkla(FVq[6lgTqR.IJeIUs7H%B-P6\%VB=V%n?Bg!aTA^@.tk39)r.(GFiM`nF'+Sq2o7CkmXSf<J6cJPC/u)uN6rEJDFR!JjR%JULJRgM'R&IfFDE5%UQ*>B]H.s30hutX[+H%1L@KhSM1MrkrO4u89@W5F3'(2Y+>+?L@jR`(Z.4"\Q^2m&I;$Pf5\/e8miR&=QMG(;>=6SBFpX2XXTQ`)U*`@HW-Sa@:cH*s4g]scAd$M&]juQY=MYTs)q'pe%b^Wr5ot?G3FlV<cFXUY6Q3BoS3o3#i)&/8p=ncjH#T!'Q57$6Z9$TGPmOrR4@+@#+-B;?mW5!60'Y02i&1enmhEm9"7Q[-G+TBp>ki!Jhfp#h.@CS%Di[7H:;n,=;#UaA06D;,_=0L@62oFKDliN")=f^UI?4_qKDb,Y$[11E6hr1XcZOB5Wu"Yp1[&cTio%uj0+7Uq%iCi%T*b-K\I/k[?O6?a[XH8YRn<=iL_]QkQ3?QH1$j+Q8[]!]$Z5UC;p!T2$5g/ak*#+_[PnX>4YIG-#b4DNX`#7o.*&QA4^/3/!%V0&.hD:C+ii"`k[2hV-M8D(e7C2,'MBP#!!qD!:uBf4F)E0'jOW9qJ=ns%A:U#ODc=D`/if4]Tb"*"s'1=9>-F"7N)*T0J0aIDcZnAu%?"B(2Xha2-X.\O0`TWd5mWPR7OOF*T<S>P('b`oRnu$2EU`ZT18/Lm1"S_EaV2h:+rl;dM[<tTLNVO'fa6cs4HH;u_&kD*CdJ=8]"a:DA`jt^"NO7dH1Y?Zcsfq%+feOIKQT`l>$[)KoEf$M\u8J33RE(Naf94gSApd&WIYd:4Jlqb'HjPcE(nrPk9-9J1o>*H/d7N]NO_;(Nm%[TYq[%7VD3j\&]pZ/\NgOpb$6Wf*=lR2=Qh_$CCEN)':907c;DeSrVMp#<]3Dn-kN:2(JK.1SNN-\AM0(mAXEk=r3mSG2BE.YGGia%>bIM[$SrSUoP>bqF^BYoD=S.=*F6[.jY!Kbs06If?-GP4ksAHJ*ggRAhhJ;4^C/f-EroXP5LlQUFClge(_KPr-02ok/(+,c,DU7WpZkFAZ*Y/pThAq[ECVg:;BhkA9-;;K8=t.Dfj[3<`-W9Ehkfa9b_*fs$,3/%8o%[_[-Zrq;<"h\9@*4S8:V07>Y+ds[t5&27GJkHh[u7fg;r4t\-*,DKbK^O'e[`Vp`ON/8gJqBIMj28R-U1/'-1en+CZU*ZFPP(^:EcTpJ8N4oQL6!s)gWfSH~>
-endstream
-endobj
-10 0 obj
-<< /Type /Page
-/Parent 2 0 R
-/MediaBox [ 0 0 595 841 ]
-/Resources 4 0 R
-/Contents 9 0 R
->>
-endobj
-11 0 obj
-<< /Length 3412 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gb!#_=`<(T&q801kdR)_M+/2YCE<]$cK(@H-QC]T//F_oJ8VW/_J6>G7sk1&QYPibP"8.b+'IYNZH9+UZ2!ji.f/W"=$M-VX(\ot^2d<,YK4l:s2Z[M*RF=Y@2M"u:KHf;l9@LDWdML+lffM%Wul4YRe0tKNT`S>EKD./SI(n^?h^Q%?g(R82^3U^qX81tO-(GKgtRCEV5d.F^#6@$#a,AdJ(FY7.`@hUlUl!'rlJO_B(^&Frh.\S#A3Au4d69(p/dZ?SOi4S[8*LW`t.gYmmCZFp<(s,s&1kJi:2I'%O#pJ61rqA;V^qP.YF$$,ql+;$>B:DbVGSlK+3t)NQ!-,ofDh00BK''iEiCU/4EmX5oOeU5U+[l8)!IHG4U^Y4hk(EZNT\c\[b"8a"-73N)j*J;gpC2I;)\M^>is&DIdp._%/d<+6`mn;RYfHnq6q-V*KL`j=3moFG"!f%$#ulJH4bl6DS'hg-UfrcQQ/9L&H)Mpra:n!HS=bn=6,Q)FEHY'G#YZ,\HLmkknjfma5-pMm,>8c39?^&%S'NK<(i[!M2(0#"G-8B6__J_f4/9iN30;?=.jQc6***s&#24oiZjP>t=B=kUj7.9aDqp"[c^50/C^:4R+Yl_#T'rB)opmP;@T,RPWmsbC.6#GjP/$<,S/rAm7?>>S:L+E:)1@VY(]1(te*1CA>pS!46g=87aO#["/3413$B&?Ugk+JGVVWU6Z&0]%d@<#;/r(Q&a(<n@Q_9o/dqAU!Zt\YPg.g.pY*RPMfn/2a"\n3k6UH>@+/AQ$fnM7:C0A!RSS_1+Ort#M$:3fU8M?9`G+[NFibH!Op!Jfs\g./7^#ggTAOc2P[7ahi$IY*\bcu^]@_.d9q%m6T_g0&/.(nr#S`Fi]V7n>1kC??4AbJhdKsKDE#m#2Zm-?n'ab7f?d"sTd1*JM/4GaU#U:9k5:99n'A`GEUj%aq(J@piT-"H]3[]>?,';bk4g?b)1])hh6#bXX^NpfbEtBiKubtT^:HfQ-*T;f4%N#BDsYK2M"Sdc0!`WG0K"8%JVPW*05FHYO7;@W4ciBW!oNP-V-:_@dXalK4ka_HKa28mW+j4+KoODF^E;3"\;aYW]7T#[As1".W#tTE?GeNn37r9h]I4i11,"/R)HI7n!rP9G5a.0YmVT=#rocU=OX;te\^-?3C_ekcYIENJi]H:S+F[eVc9)GXHO9R:;\lZ'1rmi>(]hfbE:K[m:W`Tti5`,fk)s''EqW"5mj)P=nL/;m*N:(*.\>3OY/Lj=W)JZn87[!D7V?`ENMp!M/_+q=*tA8QH2dC4$lG0R\WmcS&:bl+"FMaB(@ej8r[8S1LC]ri[h+;1;a7o3>Q"SQaVrg)"h[5E!OW(@Bi9eU1F`d3@;m-En:TSR/]].uk`eLrKSh*'=a4+D_XW].8<B?[b"*q?:>dBnP`\cQ>UPTS8>p_N0V\)11D2P/Gqp")+;B9cN.aN`r3R>u(P0L&U)Afcks=*9,X\p\dM34PHG^LG-(Y?_q'IONIt)H`[_A-T8k9qRgj$b9`\g;7(Q>N"iF7g8a06F,!l`4u!`\(R`kl9rKOPu')C&l%PDFQ\;+6\&JS3*"-Rbc"*!cXXJ^:>1p9M5!S1'9bN3`hgm&EBi_!4Oe^NM(=q%:&0-^7G(1J#JNUjr[IU,%^>Q)[(XM8/baW$(&Q-JcaY94=E:+>bHM'a`c;#_4m(DfeP8&-c273ik]X)Ti"LO/SrGhm#[>gh5g_i<'`rqE3ZI'bQ%lhd\_[:tEKQ"Iq7!LO`m,TFCq@bor;^%d&q_*ZG&6>s/Bend@AKBV5r_ctn0.VI%NXK<Xe->&MBO7L9pI8hU0Nh8c"2EOCg@2),KD\s]d70lq"j0[Ufjh1C%(m@(%mebLE^#?.^aU-=f'[9-VaodIXTjqd8<a4DRIbo,)0FOokV<d/tC_,CY-)c1MO;cHX3eXgga/GP\b.BSj<_"s3d9'6\.@7R4qjP%E<jB;n#9QTe2MgRoEV6M_1IC$HHYGJTA7"D2KA1aY.*s0rAnQJP#6i_a^Be?0@b.qB:lu&*)n_[/;@2_--k$^9J<DtqO!/#XlC.bOk!L,gNRPMTo]\&'-L1SXF8m"?L^lRt1;k_-C4gh,*ed>"S[3l_^N9WP+SVo!Hk(KN`PSc7i2Qb)#6##da+-m:@W.rabf#P)^lWTco]s@s[@P+?sngULJp"eHsqR=cm-S$X:!8*Q=:DE$RSFOT!BGNG!S?6te`gGn/1t;"+&#N%n?>3*(fF@?R/!4=&IuIWi7ka,?17pNYop;]+Bgo*p)B+$5o<i]^K:N]<6hP5P8+>^[>"GF8d/g^U6g\PBY\+aG]_]I^@$6KQUJC<)U5\st$nTH8CpPJpbZ/MU?gm3Lb&<VZ/%&#ZJu/LYE"On"ie(PB`d3;n-J<q19d_'+UHA/Sb2/t=r#Y!W`N;;pnf:=,oBR@J]E\j%?`*&><8@ooL>&s/S''B@k_u7@[20uC]n!:_,\36T!>B/UTKUlDidhbc=WgJPkF5\31Rad&RI.IhKeb`goIqI9XUt]EATOFX4'<9]DLh@CjZ0thpeFg[1E?:"ZWX?P?m@""eb'CB0e+IXSd=_)Fc_I$@9V%u@@O<3$ui0u,P+WTZ9Cq.a\73PN7hC84T[UZY>f)h=Rua\)d[m)YV%PaQSARVT\n<klZE7eE_>rI!4&0(>jWleO&i_#Y2l]W;g#"ac;2@*9qI&b^C0T`2#cO%o8Dj%?-*_$1CU'(E9clV^k`Ojd"<)ISOPd'Bh[`M)e!(=M5>X]:,s.e5<d@'N&ed.o>hH/^TVL'5cs(eqS?J4[\d%7a8\fHr?*1"&tTcUdDua_M`[?mj'aIQGjpjWft5RgQJWZ(0*GsAZE-8@T#q[N*S/*Q+JZHh'i-_-^;*Bp^)I`d%09iHUKS$0#a$Y</\le]P3N80\>7JT!?WUsc*bbS(:10(eTo=k)]o-.5,l/_;:mWS&&()P=L#OoE*Q-mK<n).qp2Hg5['G*o9c<DcVC12WkM+%0B,G!a6hEkq"i]b3FVu*:Ti@d$I8FbR5U4u62,AgMa&^ZOePhZRFbG=hd4CeLj1:f-Snnu2\[49a$/t$h5nsdiH7[u>^2^c"pr'IO`PBOKJhplB".8dWpr7IdOGK1L?Bafc5%-S#Q`JJIm]ZaQCjeR!,F%%\4Hi&$/>)VGS$@i5)"qeVC2irUY2U%?402KrK-3p?kWJ/Q5W\$=Oss*5&k3I4)=ATD!2Ud;Xd(4</\!SIG;1<W)6;R9VE&>I)=6`96g:<^#$b3#g@**JhjM:>A4aM2@#X1'W5\&!FAJW&g:X7`2;r9!"4k99IbJc-Tns5aT1T$24#2n%WnGLgK*5Y6D:jL*R?h1O,pI,fC^/i$=hD=]qG&un]s:#.C2JB\,CeZUZqaRec,V@m<_%~>
-endstream
-endobj
-12 0 obj
-<< /Type /Page
-/Parent 2 0 R
-/MediaBox [ 0 0 595 841 ]
-/Resources 4 0 R
-/Contents 11 0 R
->>
-endobj
-13 0 obj
-<< /Length 373 /Filter [ /ASCII85Decode /FlateDecode ]
- >>
-stream
-Gat$t_+k(U&A@O6E3+nm$sd8OGVHCZ*]-`3`WKqSP$QaQ_'],-=5,?D6Yd)HAsbOGbl_i`0j=XXOBNG']bc2i^\S)NKHVKE((?<$7'@9S?D/e_'ddVB=<EK[ECeAsh"m[rD;B>t=a"Z2jFQ:-U^XEOQeBa[HUI)W<%NeQ<kD@"Cc^VT)4jbm[FsMdqm+FmiUtc,RQ`sTY5RWp[+<tq[__`']ZLPMZRG0)*Y+?3YInSn1)u*^Mu!?d*#X</R%I2=D18AS!sHUT8cTN-NA3BT#Ug9eb&Ubco':74FNS+D@!>o^!+7;!1$3`2">^+B-QdjoL._P<8;\_Tqsqe9[`J^1]3m[46HhRXPtc(d`[s8+h5TBQ*5'Cr~>
-endstream
-endobj
-14 0 obj
-<< /Type /Page
-/Parent 2 0 R
-/MediaBox [ 0 0 595 841 ]
-/Resources 4 0 R
-/Contents 13 0 R
->>
-endobj
-15 0 obj
-<< /Type /Font
-/Subtype /Type1
-/Name /F3
-/BaseFont /Helvetica-Bold
-/Encoding /WinAnsiEncoding >>
-endobj
-16 0 obj
-<< /Type /Font
-/Subtype /Type1
-/Name /F2
-/BaseFont /Helvetica-Oblique
-/Encoding /WinAnsiEncoding >>
-endobj
-17 0 obj
-<< /Type /Font
-/Subtype /Type1
-/Name /F1
-/BaseFont /Helvetica
-/Encoding /WinAnsiEncoding >>
-endobj
-xref
-0 18
-0000000000 65535 f 
-0000000015 00000 n 
-0000000065 00000 n 
-0000000150 00000 n 
-0000000210 00000 n 
-0000000311 00000 n 
-0000003798 00000 n 
-0000003904 00000 n 
-0000007036 00000 n 
-0000007142 00000 n 
-0000010259 00000 n 
-0000010366 00000 n 
-0000013871 00000 n 
-0000013979 00000 n 
-0000014444 00000 n 
-0000014552 00000 n 
-0000014665 00000 n 
-0000014781 00000 n 
-trailer
-<<
-/Size 18
-/Root 1 0 R
-/Info 3 0 R
->>
-startxref
-14889
-%%EOF
--- a/internetradio2.0/help/irapp_hlp.helpsource.htm	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<!--Arbortext, Inc., 1988-2004, v.4002--><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>irapp_hlp.helpsource.htm</title><meta name="Generator" content="Arbortext Epic Version 5.1"><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><style type="text/css">
-.b {font-weight: bold}
-.s {font-family: sans-serif}
-.l14al {line-height: 14pt; text-align: left}
-.l14p8 {line-height: 14pt; padding-top: 8pt}
-.f14sb {font-size: 14pt; font-family: sans-serif; font-weight: bold}
-.l14alp3 {line-height: 14pt; text-align: left; padding-top: 3pt}
-.f16sb {font-size: 16pt; font-family: sans-serif; font-weight: bold}</style><script type="text/javascript" language="JavaScript"><!-- 
-var fltpopupht = 400;
-var fltpopupwd = 480;
-var fltwin;
-function FltOnClick(hrefstr,popupnum) {
-  var winleft = (screen.width - fltpopupwd) / 2;
-  var wintop = (screen.height - fltpopupht) / 2;
-  winprops = 'height='+fltpopupht+',width='+fltpopupwd+',top='+wintop+',left='+winleft+',scrollbars=yes,resizable';
-  winprops += ',status=no,menubar=no';
-  popupname = "popup" + popupnum;
-  if (fltwin && fltwin.open) {
-    fltwin.close();
-  }
-  fltwin = window.open(hrefstr, popupname, winprops);
-  if (parseInt(navigator.appVersion) >= 4) {
-    fltwin.window.focus();
-  }
-}
-function CloseFltwin() {
-  if (fltwin && fltwin.open) {
-    fltwin.close();
-  }
-}
-// -->
-</script></head><body style="line-height: 16pt" onunload="CloseFltwin()"><div class="pgbrk" style="padding-top: 48pt"><div class="l14al" style="text-align: justify"><span class="s">Non-product-specific help for S60 3.0 and 3.1 products.</span></div><div style="line-height: 28pt; padding-top: 18pt"><span class="f14sb" style="font-size: 24pt">Nokia Internet Radio</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Internet radio</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">web radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">net radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Nokia Internet Radio is a network service. Before you can listen to radio stations on the web, you must have a wireless LAN or packet data access point defined in your device.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Note: Using packet data access points may involve transmission of large amounts of data through your service provider&#8217;s network. Contact your service provider for information about data transmission charges.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select:</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="b" style="font-family: sans-serif">Last played station</span><span class="s"> to listen to your last played station.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="b" style="font-family: sans-serif">Favourites</span><span class="s"> to view and listen to your saved stations, and to add stations to your favourites.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="b" style="font-family: sans-serif">Station directory</span><span class="s"> to find radio stations on the web.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="b" style="font-family: sans-serif">Search</span><span class="s"> to search for stations on the web by their name.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add station manually</span> to save a station to your favourites. Enter the web address of the station and a name that you want to appear on the favourites list.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add to stations</span> to save the last played station to your favourites</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Now playing station</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To stop playback, press the scroll key. To resume playback, press the scroll key again.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Note: Listen to music at a moderate level. Continuous exposure to high volume may damage your hearing. Do not hold the device near your ear when the loudspeaker is in use, because the volume may be extremely loud.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To adjust the volume, use the volume key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view station information, scroll down.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">If you are listening to a station saved in your favourites, scroll left or right to listen to the previous or next saved station.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Station information</span> to view general station information(not available if you have saved the station by manually entering its address). Scroll right to view the station&#8217;s recently played tracks. Scroll right again to view additional information, such as the available connection speeds for the station.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add to stations</span> to save the currently playing station to your favourites</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Saved stations</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">managing stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">favourites</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view and listen to your saved stations, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> ><span class="b">Favourites</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To add stations to you favourites, select <span class="b">Find more stations...</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To delete a station from your favourites, scroll to it, and press <span class="b">C</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Station</span> > <span class="b">Details</span> to view station information</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Station</span> > <span class="b">Move</span> to move a station up or down on the list</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Station</span> > <span class="b">Delete</span> to remove a station from your favourites</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add station manually</span> to save a station to your favourites. Enter the web address of the station and a name that you want to appear on the favourites list.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Find and save stations manually</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">saving stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find and save a station by entering its web address, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Options</span> > <span class="b">Add station manually</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Enter the web address of the station and a name that you want to appear on the favourites list.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save the station to your favourites, press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to the station, select <span class="b">Options</span> > <span class="b">Listen</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View station directory</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find radio stations on the web by different criteria, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select how you want the available stations sorted:</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Browse by genre</span> to view the available radio station genres. To view the stations in a genre, select a genre.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Browse by language</span> to view the languages in which there are stations broadcasting. To view the stations, select a language, and press the scroll key.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Browse by country</span> to view the countries in which there are stations broadcasting. To view the stations, select a country, and press the scroll key.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Top stations</span> to view stations sorted by their popularity</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View radio station genres</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">station genres</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view the available internet radio station genres, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by genre</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view the stations in a genre, scroll to the genre, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View stations in a genre</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">stations by genre</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">saving stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find radio stations on the web by their genre, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by genre</span>, and select a genre.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to it, and select <span class="b">Options</span> > <span class="b">Add to stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View radio station languages</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">station languages</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view the available internet radio station languages, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by language</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view stations broadcasting in a particular language, scroll to the language, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View stations by language</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">stations by language</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">saving stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find radio stations on the web by their language, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by language</span>, and select a language.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to it, and select <span class="b">Options</span> > <span class="b">Add to stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View radio station countries</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">stations in countries</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view the countries which have internet radio stations, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by country</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To view stations in a particular country, scroll to the country, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View stations by country</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">stations by country</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">saving stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find radio stations on the web by their country of origin, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Browse by country</span>, and select a country.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to it, and select <span class="b">Options</span> > <span class="b">Add to stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">View most popular stations</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">stations by popularity</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">finding stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">saving stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To find radio stations on the web by their popularity, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Station directory</span> > <span class="b">Top stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to it, and select <span class="b">Options</span> > <span class="b">Add to stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Search for stations</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">station search</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To search for radio stations on the web by their name, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Options</span> > <span class="b">Search</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Enter a station name or the first letters of it to the search field, and press the scroll key. Matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add station manually</span> to save a station to your favourites. Enter the web address of the station and a name that you want to appear on the favourites list.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Station search results</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">search results</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Stations matching your station search are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to it, and select <span class="b">Options</span> > <span class="b">Add to stations</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Tip: To view only stations beginning with particular letters, start entering the letters, and matching stations are displayed.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To make another search, select <span class="b">Options</span> > <span class="b">Search again</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Select <span class="b">Options</span> ></span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Go to now playing</span> to open the Now playing view</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Add station manually</span> to save a station to your favourites. Enter the web address of the station and a name that you want to appear on the favourites list.</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Update application</span> to update the Internet radio application</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Settings</span> to change the default access point and select connection speeds for the different connection types</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available options may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Internet radio settings</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">radio settings</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">settings, internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To change internet radio connection settings, select <span class="b">Menu</span> > <span class="b">Applications</span> > <span class="b">Internet radio</span> > <span class="b">Settings</span>.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To select the default access point to connect to the network, select <span class="b">Default access point</span>. Select <span class="b">Always ask</span> if you want the device to ask for the access point every time you open the application.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">Note: Using packet data access points may involve transmission of large amounts of data through your service provider&#8217;s network. Contact your service provider for information about data transmission charges.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To change the connection speeds for different connection types, select from the following:</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">GPRS connection bit rate</span>&#8212;for GPRS packet data connections</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">3G connection bit rate</span>&#8212;for UMTS packet data connections</span></div><div class="l14alp3" style="text-align: justify; text-indent: -5.1%; padding-left: 5.1%"><span class="s">&#8226;<span>&nbsp;</span>&nbsp;<span class="b">Wifi connection bit rate</span>&#8212;for wireless LAN connections</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The quality of the radio broadcast depends on the selected connection speed. The higher the speed, the better the quality.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">The available settings may vary.</span></div><div style="line-height: 18pt; padding-top: 12pt"><span class="f16sb">Receive links to stations</span></div><div class="l14p8" style="text-align: justify"><span class="s" style="font-style: italic; color: green">internet radio</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s" style="font-style: italic; color: green">links to stations</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">You may receive links to internet radio stations in a .pls file from compatible devices or services. To view the links in a .pls file, open the file.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To listen to a station, scroll to the link to it, and press the scroll key.</span></div><div class="l14al" style="text-align: justify; padding-top: 7pt"><span class="s">To save a station to your favourites, scroll to the link to it, and select <span class="b">Options</span> > <span class="b">Save</span>.</span></div></div></body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/inc/ircmdlineparams.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2008 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:  Command line parameter interface for Internet Radio.
+*
+*/
+
+
+#ifndef IRCMDLINEPARAMS_H
+#define IRCMDLINEPARAMS_H
+
+#include <e32def.h>
+
+/**
+ * Command line option for activating certain view at startup.
+ * For internal use.
+ */
+_LIT8( KIRCmdLineOptionView, "-view" );
+
+/**
+ * Command line argument for now playing view.
+ * For internal use.
+ */
+_LIT8( KIRCmdLineArgumentNowPlaying, "nowplaying" );
+
+/**
+ * Full command line parameter for activating now playing view at startup.
+ * External applications should use directly this literal.
+ */
+_LIT8( KIRCmdLineParamViewNowPlaying, "-view nowplaying" );
+
+#endif //  IRCMDLINEPARAMS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/inc/irconnectionroamingobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2008-2008 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:  The interface for observing the application level roaming events
+*
+*/
+
+
+#ifndef M_IRCONNECTIONROAMINGOBSERVER_H
+#define M_IRCONNECTIONROAMINGOBSERVER_H
+
+#include <e32def.h>
+
+/**
+ * The interface for observing the application level roaming events
+ */
+NONSHARABLE_CLASS( MIRConnectionRoamingObserver )
+    {
+public:
+
+    /**
+     * The connection roaming event type
+     */
+    enum TIRRoamingEvent
+        {
+        /** 
+         * The new connection is being established 
+         */
+        EIRRoamingEventHandingOver,
+
+        /**
+         * The new connection is established and the old one will be closed
+         */
+        EIRRoamingEventConnected,
+
+        /**
+         * The establishment of the new connection has failed and the old connection will be used
+         */
+        EIRRoamingEventFailed
+        };
+
+    /**
+     * Notifies of the application level roaming event
+     * 
+     * @param aEvent The event that occured
+     */
+    virtual void HandleRoamingEventL( TIRRoamingEvent aEvent ) = 0;
+    };
+
+#endif // M_IRCONNECTIONROAMINGOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/inc/irdebug.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Debug macros
+*
+*/
+
+
+#ifndef IRDEBUG_H
+#define IRDEBUG_H
+
+
+#include <e32debug.h>
+#include <flogger.h>
+///////////////////////////////////////////////////////
+///////////////////////////////////////////////////////
+// Debug usage
+//
+// Set IR_DEBUG_LEVEL to desired level to get debug logs that are equal or more severe 
+// than the value set. E.g. IR_DEBUG_LEVEL_ERROR will print out ERROR and FATAL logs.
+//
+// Set IRDEBUG_TRACE_TO_FILE to get enable file logging.
+//
+///////////////////////////////////////////////////////
+
+// Available debug levels. Internal. Don't touch these
+
+#define IR_DEBUG_LEVEL_NONE    0
+#define IR_DEBUG_LEVEL_FATAL   1
+#define IR_DEBUG_LEVEL_ERROR   2
+#define IR_DEBUG_LEVEL_WARNING 3
+#define IR_DEBUG_LEVEL_INFO    4
+#define IR_DEBUG_LEVEL_DEBUG   5
+
+/////////////////////////////////////////////////////////////////////
+// DEBUG SETTINGS:
+// To enable /adjust debug output, modify values ONLY in this section
+/////////////////////////////////////////////////////////////////////
+//#define IRDEBUG_LOGGING_ENABLED
+//#define IRDEBUG_TRACE_TO_FILE
+
+
+/////////////////////////////////////////////////////////////////////
+// DEBUG SETTINGS:
+// DO NOT Edit below sections
+/////////////////////////////////////////////////////////////////////
+
+#ifdef IRDEBUG_LOGGING_ENABLED
+#define IR_DEBUG_LEVEL IR_DEBUG_LEVEL_DEBUG
+#define IRDEBUG_LEVEL  IR_DEBUG_LEVEL_DEBUG
+#else
+#define IR_DEBUG_LEVEL IR_DEBUG_LEVEL_NONE
+#define IRDEBUG_LEVEL  IR_DEBUG_LEVEL_NONE
+#endif
+
+#ifdef IRDEBUG_TRACE_TO_FILE
+    _LIT( KIRDebugLogDirectory, "internetradio" );
+    _LIT( KIRDebugLogFile, "internetradiolog.txt" );
+    const TFileLoggingMode KIRDebugLoggingMode = EFileLoggingModeAppend; // EFileLoggingModeOverwrite
+#endif
+
+#if IR_DEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
+
+#ifdef IRDEBUG_TRACE_TO_FILE
+        #define IRRDEBUG_DESC( a ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      a ); \
+            }
+            
+        #define IRRDEBUG( a ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      _L( a )); \
+            }
+                     
+        #define IRRDEBUG2( a, b ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      _L( a ), b); \
+            }
+            
+        #define IRRDEBUG3( a, b, c ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      _L( a ), b, c); \
+            }
+            
+        #define IRRDEBUG4( a, b, c, d ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      _L( a ), b, c, d); \
+            }
+            
+        #define IRRDEBUG5( a, b, c, d, e ) \
+            { \
+            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
+                                      KIRDebugLogFile, \
+                                      KIRDebugLoggingMode, \
+                                      _L( a ), b, c, d, e); \
+            }        
+#else // IRDEBUG_TRACE_TO_FILE
+        #define IRRDEBUG_DESC( a ) RDebug::Print( a )
+    
+        #define IRRDEBUG( a ) RDebug::Print( _L( a ) )
+                     
+        #define IRRDEBUG2( a, b ) RDebug::Print( _L( a ), b )
+            
+        #define IRRDEBUG3( a, b, c ) RDebug::Print( _L( a ), b, c )
+            
+        #define IRRDEBUG4( a, b, c, d ) RDebug::Print( _L( a ), b, c, d )
+            
+        #define IRRDEBUG5( a, b, c, d, e ) RDebug::Print( _L( a ), b, c, d, e )
+#endif // IRDEBUG_TRACE_TO_FILE
+           
+#else // IR_DEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
+    #define IRRDEBUG_DESC( a )
+    #define IRRDEBUG( a )
+    #define IRRDEBUG2( a, b )
+    #define IRRDEBUG3( a, b, c )
+    #define IRRDEBUG4( a, b, c, d )
+    #define IRRDEBUG5( a, b, c, d, e )
+#endif
+
+////////////////////////////////////////////////////////////////////
+// The interface macros
+///////////////////////////////////////////////////////////////////
+
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
+    #define IRLOG_FATAL( a ) IRRDEBUG( "InternetRadio [FATAL]: " L##a )
+    #define IRLOG_FATAL2( a, b ) IRRDEBUG2( "InternetRadio [FATAL]: " L##a, b )
+    #define IRLOG_FATAL3( a, b, c ) IRRDEBUG3( "InternetRadio [FATAL]: " L##a, b, c )
+    #define IRLOG_FATAL4( a, b, c, d ) IRRDEBUG4( "InternetRadio [FATAL]: " L##a, b, c, d )
+    #define IRLOG_FATAL5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [FATAL]: " L##a, b, c, d, e )
+#else    
+    #define IRLOG_FATAL( a ) 
+    #define IRLOG_FATAL2( a, b )
+    #define IRLOG_FATAL3( a, b, c )
+    #define IRLOG_FATAL4( a, b, c, d )
+    #define IRLOG_FATAL5( a, b, c, d, e )
+ #endif
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_FATAL
+    #define IRLOG_ERROR( a ) IRRDEBUG( "InternetRadio [ERROR]: " L##a )
+    #define IRLOG_ERROR2( a, b ) IRRDEBUG2( "InternetRadio [ERROR]: " L##a, b )
+    #define IRLOG_ERROR3( a, b, c ) IRRDEBUG3( "InternetRadio [ERROR]: " L##a, b, c )
+    #define IRLOG_ERROR4( a, b, c, d ) IRRDEBUG4( "InternetRadio [ERROR]: " L##a, b, c, d )
+    #define IRLOG_ERROR5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [ERROR]: " L##a, b, c, d, e )
+#else
+    #define IRLOG_ERROR( a )
+    #define IRLOG_ERROR2( a, b )
+    #define IRLOG_ERROR3( a, b, c )
+    #define IRLOG_ERROR4( a, b, c, d ) 
+    #define IRLOG_ERROR5( a, b, c, d, e )
+#endif
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_ERROR
+    #define IRLOG_WARNING( a ) IRRDEBUG( "InternetRadio [WARNING]: " L##a )
+    #define IRLOG_WARNING2( a, b ) IRRDEBUG2( "InternetRadio [WARNING]: " L##a, b )
+    #define IRLOG_WARNING3( a, b, c ) IRRDEBUG3( "InternetRadio [WARNING]: " L##a, b, c )
+    #define IRLOG_WARNING4( a, b, c, d ) IRRDEBUG4( "InternetRadio [WARNING]: " L##a, b, c, d )
+    #define IRLOG_WARNING5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [WARNING]: " L##a, b, c, d, e )
+#else
+    #define IRLOG_WARNING( a )
+    #define IRLOG_WARNING2( a, b )
+    #define IRLOG_WARNING3( a, b, c )
+    #define IRLOG_WARNING4( a, b, c, d )
+    #define IRLOG_WARNING5( a, b, c, d, e )
+#endif
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_WARNING
+    #define IRLOG_INFO( a ) IRRDEBUG( "InternetRadio [INFO]: " L##a )
+    #define IRLOG_INFO2( a, b ) IRRDEBUG2( "InternetRadio [INFO]: " L##a, b )
+    #define IRLOG_INFO3( a, b, c ) IRRDEBUG3( "InternetRadio [INFO]: " L##a, b, c )
+    #define IRLOG_INFO4( a, b, c, d ) IRRDEBUG4( "InternetRadio [INFO]: " L##a, b, c, d )
+    #define IRLOG_INFO5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [INFO]: " L##a, b, c, d, e )
+#else
+    #define IRLOG_INFO( a )
+    #define IRLOG_INFO2( a, b )
+    #define IRLOG_INFO3( a, b, c )
+    #define IRLOG_INFO4( a, b, c, d )
+    #define IRLOG_INFO5( a, b, c, d, e )
+#endif
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_INFO
+    _LIT( KIRDebugMarker, "InternetRadio [DEBUG]: " );
+    #define IRLOG_DEBUG_DESC( desc ) \
+        { \
+        RBuf tmp; \
+        tmp.Create(KIRDebugMarker, KIRDebugMarker().Length() + desc.Length() ); \
+        tmp.Append(desc); \
+        IRRDEBUG_DESC(tmp); \
+        tmp.Close(); \
+        }
+    #define IRLOG_DEBUG( a ) IRRDEBUG( "InternetRadio [DEBUG]: " L##a )
+    #define IRLOG_DEBUG2( a, b ) IRRDEBUG2( "InternetRadio [DEBUG]: " L##a, b )
+    #define IRLOG_DEBUG3( a, b, c ) IRRDEBUG3( "InternetRadio [DEBUG]: " L##a, b, c )
+    #define IRLOG_DEBUG4( a, b, c, d ) IRRDEBUG4( "InternetRadio [DEBUG]: " L##a, b, c, d )
+    #define IRLOG_DEBUG5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [DEBUG]: " L##a, b, c, d, e )
+#else
+    #define IRLOG_DEBUG_DESC( desc )
+    #define IRLOG_DEBUG( a )
+    #define IRLOG_DEBUG2( a, b )
+    #define IRLOG_DEBUG3( a, b, c )
+    #define IRLOG_DEBUG4( a, b, c, d )
+    #define IRLOG_DEBUG5( a, b, c, d, e )
+#endif     
+
+////////////////////////////////////////////////////////////////////
+// Other debug related definitions
+///////////////////////////////////////////////////////////////////
+
+#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
+    #define IRDEBUGVAR( a ) a
+    #define IRDEBUGCODE( a ) a
+#else    
+    #define IRDEBUGVAR( a )   
+    #define IRDEBUGCODE( a )
+#endif
+
+
+          
+#endif          
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/inc/irinternalcrkeys.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Visual Radio central repository keys.
+*
+*/
+
+
+#ifndef IRINTERNALCRKEYS_H
+#define IRINTERNALCRKEYS_H
+
+#include <e32cmn.h>
+
+/** The UID of the category we use. Must be the same as Visual Radio's UID3 (SID). */
+const TUid KCRUidInternetRadio = { 0x2000B499};
+
+// Keys Definition
+const TUint32 KIRFavoritesMaxNum                        = { 0x00000001 };
+const TUint32 KIRPlayerVolume                           = { 0x00000002 };
+const TUint32 KIRUpdateAvailablity                      = { 0x00000003 };
+const TUint32 KIRHttpTimeout                            = { 0x00000004 };
+const TUint32 KIRNewVersionNotificationInterval         = { 0x00000005 };
+const TUint32 KIRNewVersionNotificationStartingTime     = { 0x00000006 };
+const TUint32 KIRIsdsUrl                                = { 0x00000007 };
+const TUint32 KIRIrId                                   = { 0x00000008 };
+const TUint32 KIRIrAppVersion                           = { 0x00000009 };
+const TUint32 KIRTimeOffset                             = { 0x0000000A };
+const TUint32 KIRSessionLogIndex                        = { 0x0000000B };
+const TUint32 KIRStartingViewId                         = { 0x0000000C };
+const TUint32 KIRPreferredQuality                       = { 0x0000000D };
+const TUint32 KIRSongHistoryFTU                         = { 0x0000000E };
+const TUint32 KIRGlobalAdvEnabled                       = { 0x0000000F };
+const TUint32 KIRManuallyInputStationUrl                = { 0x00000010 };
+const TUint32 KIRManuallyInputStationName               = { 0x00000011 };
+const TUint32 KIRMinDiskSpaceRequired                   = { 0x00000012 };
+const TUint32 KIRSongRecognitionAppUid                  = { 0x00000013 };
+const TUint32 KIRIdentifySongEnabled                    = { 0x00000014 };
+const TUint32 KIRSearchText                             = { 0x00000015 };
+
+const TUint32 KIRTermsAndConditionsFlag                 = { 0x00000016 };
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/inc/irpubsubkeys.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* 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 IRPUBSUBKEYS_H
+#define IRPUBSUBKEYS_H
+
+#include <e32def.h>
+#include <e32cmn.h>
+
+/** 
+ * enum to indicate the state of iRAPP application
+ */
+enum TIRPSApplicationRunningState
+    {
+    EIRPSApplicationUninitialized,
+    EIRPSApplicationRunning,
+    EIRPSApplicationClosing        
+    };
+
+/**
+ * enum to indicate the state of chanel playing
+ */
+enum TIRStopPlayState
+    {
+    EIRStateUninitialized,
+    EIRStatePlay,
+    EIRStateStop
+    };
+    
+    
+/**
+ * enum to indicate the state of chanel playing
+ */
+enum TIRBufferingState
+    {
+    EIRStateBufferingStart,
+    EIRStateBufferingStop,
+    EIRStateBufferingError
+    };
+
+/** 
+ * Internet Radio application Uid
+ */
+ 
+//violates PC Lint Warning 569: Loss of information 
+//(initialization) (32 bits to 31 bits)
+
+const TUid KUidActiveInternetRadioApp = {0x2000B499};
+
+/** 
+ * IR Publish and Subscribe keys base value
+ */
+const TUint32 KIRPubSubBase = { 0x00000020 } ;
+
+/** 
+ * IR Publish and Subscribe key to indicate prest index  change ( For XML Active Idle )
+ */
+const TUint32 KIRPSPresetIndex = { KIRPubSubBase + 0x00000000 };
+
+/** 
+ * IR Publish and Subscribe key to indicate if iRAPP is running ( For XML Active Idle )
+ */
+const TUint32 KIRPSDataApplicationRunning = { KIRPubSubBase + 0x00000001 };
+
+/** 
+ * This key is deprecated and the information is now available via KIRPSMetaData. 
+ */
+const TUint32 KIRPSArtistTitleChanged = { KIRPubSubBase + 0x00000002 };
+
+/** 
+ * This key is deprecated and the information is now available via KIRPSMetaData. 
+ */
+const TUint32 KIRPSSongTitleChanged = { KIRPubSubBase + 0x00000003 };
+
+/** 
+ * IR Publish and Subscribe key to indicate channel change ( For XML Active Idle )
+ */
+const TUint32 KIRPSDataChannel = { KIRPubSubBase + 0x00000004 };
+
+/** 
+ * IR Publish and Subscribe key to indicate volume change ( For XML Active Idle )
+ */
+const TUint32 KIRPSVolume = { KIRPubSubBase + 0x00000005 };
+
+/** 
+ * IR Publish and Subscribe key to indicate stop state ( For XML Active Idle )
+ */
+const TUint32 KIRPSPlayStop = { KIRPubSubBase + 0x00000006 };
+
+/** 
+ * IR Publish and Subscribe key to specify the channel server url
+ */
+const TUint32 KIRPSChannelUrl = { KIRPubSubBase + 0x00000007 };
+
+/** 
+ * IR Publish and Subscribe key to specify the Bitrate
+ */
+const TUint32 KIRPSBitrate = { KIRPubSubBase + 0x00000008 };
+
+/** 
+ * IR Publish and Subscribe key to Handle simultaneous play
+ */
+const TUint32 KIRPSMultiplePlay = { KIRPubSubBase + 0x00000009 };
+
+/** 
+ * IR Publish and Subscribe key to specify the channel server url
+ */
+const TUint32 KIRPSStationName = { KIRPubSubBase + 0x0000000A };  
+
+/** 
+ * IR Publish and Subscribe key to specify the number of application
+ * instances running
+ */
+const TUint32 KIRPSAppInstanceRunning = { KIRPubSubBase + 0x0000000B };  
+
+/**
+ * Updated whenever meta data has been received for the channel that is currently streaming.
+ *
+ * As this data is packed in binary form, listeners of this key can use the following code snippet to support
+ * unpacking it:
+ *
+ * #include <irmetadata.h>
+ *
+ * In your HandlePropertyChangeL( const TDesC8& aData ) method:
+ *
+ * if ( aKey == KIRPSMetaData )
+ *     {
+ *     CIRMetaData* metaData = CIRMetaData::NewL( aData ); 
+ *     CleanupStack::PushL( metaData );
+ *     // Meta data information is now available via the public access methods of CIRMetaData.
+ *     // Do whatever needs to be done with the meta data information here.
+ *     const TDesC& artist = metaData->Artist();
+ *     ...
+ *     CleanupStack::PopAndDestroy( metaData );
+ *     }
+ */
+const TUint32 KIRPSMetaData = { KIRPubSubBase + 0x0000000C };
+
+const TUint32 KIRPSChannelType = { KIRPubSubBase + 0x0000000D };
+
+const TUint32 KIRPSChannelId = { KIRPubSubBase + 0x000000E };
+
+const TUint32 KIRPSDataChannelDesc = { KIRPubSubBase + 0x0000000F };
+
+const TUint32 KIRPSChannelMusicFlag = { KIRPubSubBase + 0x00000010 };
+
+const TUint32 KIRPSControlSetPlayState = { KIRPubSubBase + 0x00000011 };
+
+
+const TUint32 KIRPSBufferingState = { KIRPubSubBase + 0x00000012 };
+
+/********************************************************************
+*  KIRPubSubBase + 0x00000015 should be reserved for startup key which is defined in \qtinternetradio\irqcommon\inc\irservicedef.h
+*const unsigned long int KInternetRadioStartupKey = 0x00000035; // = KIRPubSubBase + 0x00000015
+*/
+
+#endif // IRPUBSUBKEYS_H
+
--- a/internetradio2.0/include/ircmdlineparams.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Command line parameter interface for Internet Radio.
-*
-*/
-
-
-#ifndef IRCMDLINEPARAMS_H
-#define IRCMDLINEPARAMS_H
-
-#include <e32def.h>
-
-/**
- * Command line option for activating certain view at startup.
- * For internal use.
- */
-_LIT8( KIRCmdLineOptionView, "-view" );
-
-/**
- * Command line argument for now playing view.
- * For internal use.
- */
-_LIT8( KIRCmdLineArgumentNowPlaying, "nowplaying" );
-
-/**
- * Full command line parameter for activating now playing view at startup.
- * External applications should use directly this literal.
- */
-_LIT8( KIRCmdLineParamViewNowPlaying, "-view nowplaying" );
-
-#endif //  IRCMDLINEPARAMS_H
--- a/internetradio2.0/include/irconnectionroamingobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  The interface for observing the application level roaming events
-*
-*/
-
-
-#ifndef M_IRCONNECTIONROAMINGOBSERVER_H
-#define M_IRCONNECTIONROAMINGOBSERVER_H
-
-#include <e32def.h>
-
-/**
- * The interface for observing the application level roaming events
- */
-NONSHARABLE_CLASS( MIRConnectionRoamingObserver )
-    {
-public:
-
-    /**
-     * The connection roaming event type
-     */
-    enum TIRRoamingEvent
-        {
-        /** 
-         * The new connection is being established 
-         */
-        EIRRoamingEventHandingOver,
-
-        /**
-         * The new connection is established and the old one will be closed
-         */
-        EIRRoamingEventConnected,
-
-        /**
-         * The establishment of the new connection has failed and the old connection will be used
-         */
-        EIRRoamingEventFailed
-        };
-
-    /**
-     * Notifies of the application level roaming event
-     * 
-     * @param aEvent The event that occured
-     */
-    virtual void HandleRoamingEventL( TIRRoamingEvent aEvent ) = 0;
-    };
-
-#endif // M_IRCONNECTIONROAMINGOBSERVER_H
--- a/internetradio2.0/include/irdebug.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-/*
-* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Debug macros
-*
-*/
-
-
-#ifndef IRDEBUG_H
-#define IRDEBUG_H
-
-
-#include <e32debug.h>
-#include <flogger.h>
-///////////////////////////////////////////////////////
-///////////////////////////////////////////////////////
-// Debug usage
-//
-// Set IR_DEBUG_LEVEL to desired level to get debug logs that are equal or more severe 
-// than the value set. E.g. IR_DEBUG_LEVEL_ERROR will print out ERROR and FATAL logs.
-//
-// Set IRDEBUG_TRACE_TO_FILE to get enable file logging.
-//
-///////////////////////////////////////////////////////
-
-// Available debug levels. Internal. Don't touch these
-
-#define IR_DEBUG_LEVEL_NONE    0
-#define IR_DEBUG_LEVEL_FATAL   1
-#define IR_DEBUG_LEVEL_ERROR   2
-#define IR_DEBUG_LEVEL_WARNING 3
-#define IR_DEBUG_LEVEL_INFO    4
-#define IR_DEBUG_LEVEL_DEBUG   5
-
-/////////////////////////////////////////////////////////////////////
-// DEBUG SETTINGS:
-// To enable /adjust debug output, modify values ONLY in this section
-/////////////////////////////////////////////////////////////////////
-//#define IRDEBUG_LOGGING_ENABLED
-//#define IRDEBUG_TRACE_TO_FILE
-
-
-/////////////////////////////////////////////////////////////////////
-// DEBUG SETTINGS:
-// DO NOT Edit below sections
-/////////////////////////////////////////////////////////////////////
-
-#ifdef IRDEBUG_LOGGING_ENABLED
-#define IR_DEBUG_LEVEL IR_DEBUG_LEVEL_DEBUG
-#define IRDEBUG_LEVEL  IR_DEBUG_LEVEL_DEBUG
-#else
-#define IR_DEBUG_LEVEL IR_DEBUG_LEVEL_NONE
-#define IRDEBUG_LEVEL  IR_DEBUG_LEVEL_NONE
-#endif
-
-#ifdef IRDEBUG_TRACE_TO_FILE
-    _LIT( KIRDebugLogDirectory, "internetradio" );
-    _LIT( KIRDebugLogFile, "internetradiolog.txt" );
-    const TFileLoggingMode KIRDebugLoggingMode = EFileLoggingModeAppend; // EFileLoggingModeOverwrite
-#endif
-
-#if IR_DEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
-
-#ifdef IRDEBUG_TRACE_TO_FILE
-        #define IRRDEBUG_DESC( a ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      a ); \
-            }
-            
-        #define IRRDEBUG( a ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      _L( a )); \
-            }
-                     
-        #define IRRDEBUG2( a, b ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      _L( a ), b); \
-            }
-            
-        #define IRRDEBUG3( a, b, c ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      _L( a ), b, c); \
-            }
-            
-        #define IRRDEBUG4( a, b, c, d ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      _L( a ), b, c, d); \
-            }
-            
-        #define IRRDEBUG5( a, b, c, d, e ) \
-            { \
-            RFileLogger::WriteFormat( KIRDebugLogDirectory, \
-                                      KIRDebugLogFile, \
-                                      KIRDebugLoggingMode, \
-                                      _L( a ), b, c, d, e); \
-            }        
-#else // IRDEBUG_TRACE_TO_FILE
-        #define IRRDEBUG_DESC( a ) RDebug::Print( a )
-    
-        #define IRRDEBUG( a ) RDebug::Print( _L( a ) )
-                     
-        #define IRRDEBUG2( a, b ) RDebug::Print( _L( a ), b )
-            
-        #define IRRDEBUG3( a, b, c ) RDebug::Print( _L( a ), b, c )
-            
-        #define IRRDEBUG4( a, b, c, d ) RDebug::Print( _L( a ), b, c, d )
-            
-        #define IRRDEBUG5( a, b, c, d, e ) RDebug::Print( _L( a ), b, c, d, e )
-#endif // IRDEBUG_TRACE_TO_FILE
-           
-#else // IR_DEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
-    #define IRRDEBUG_DESC( a )
-    #define IRRDEBUG( a )
-    #define IRRDEBUG2( a, b )
-    #define IRRDEBUG3( a, b, c )
-    #define IRRDEBUG4( a, b, c, d )
-    #define IRRDEBUG5( a, b, c, d, e )
-#endif
-
-////////////////////////////////////////////////////////////////////
-// The interface macros
-///////////////////////////////////////////////////////////////////
-
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
-    #define IRLOG_FATAL( a ) IRRDEBUG( "InternetRadio [FATAL]: " L##a )
-    #define IRLOG_FATAL2( a, b ) IRRDEBUG2( "InternetRadio [FATAL]: " L##a, b )
-    #define IRLOG_FATAL3( a, b, c ) IRRDEBUG3( "InternetRadio [FATAL]: " L##a, b, c )
-    #define IRLOG_FATAL4( a, b, c, d ) IRRDEBUG4( "InternetRadio [FATAL]: " L##a, b, c, d )
-    #define IRLOG_FATAL5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [FATAL]: " L##a, b, c, d, e )
-#else    
-    #define IRLOG_FATAL( a ) 
-    #define IRLOG_FATAL2( a, b )
-    #define IRLOG_FATAL3( a, b, c )
-    #define IRLOG_FATAL4( a, b, c, d )
-    #define IRLOG_FATAL5( a, b, c, d, e )
- #endif
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_FATAL
-    #define IRLOG_ERROR( a ) IRRDEBUG( "InternetRadio [ERROR]: " L##a )
-    #define IRLOG_ERROR2( a, b ) IRRDEBUG2( "InternetRadio [ERROR]: " L##a, b )
-    #define IRLOG_ERROR3( a, b, c ) IRRDEBUG3( "InternetRadio [ERROR]: " L##a, b, c )
-    #define IRLOG_ERROR4( a, b, c, d ) IRRDEBUG4( "InternetRadio [ERROR]: " L##a, b, c, d )
-    #define IRLOG_ERROR5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [ERROR]: " L##a, b, c, d, e )
-#else
-    #define IRLOG_ERROR( a )
-    #define IRLOG_ERROR2( a, b )
-    #define IRLOG_ERROR3( a, b, c )
-    #define IRLOG_ERROR4( a, b, c, d ) 
-    #define IRLOG_ERROR5( a, b, c, d, e )
-#endif
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_ERROR
-    #define IRLOG_WARNING( a ) IRRDEBUG( "InternetRadio [WARNING]: " L##a )
-    #define IRLOG_WARNING2( a, b ) IRRDEBUG2( "InternetRadio [WARNING]: " L##a, b )
-    #define IRLOG_WARNING3( a, b, c ) IRRDEBUG3( "InternetRadio [WARNING]: " L##a, b, c )
-    #define IRLOG_WARNING4( a, b, c, d ) IRRDEBUG4( "InternetRadio [WARNING]: " L##a, b, c, d )
-    #define IRLOG_WARNING5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [WARNING]: " L##a, b, c, d, e )
-#else
-    #define IRLOG_WARNING( a )
-    #define IRLOG_WARNING2( a, b )
-    #define IRLOG_WARNING3( a, b, c )
-    #define IRLOG_WARNING4( a, b, c, d )
-    #define IRLOG_WARNING5( a, b, c, d, e )
-#endif
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_WARNING
-    #define IRLOG_INFO( a ) IRRDEBUG( "InternetRadio [INFO]: " L##a )
-    #define IRLOG_INFO2( a, b ) IRRDEBUG2( "InternetRadio [INFO]: " L##a, b )
-    #define IRLOG_INFO3( a, b, c ) IRRDEBUG3( "InternetRadio [INFO]: " L##a, b, c )
-    #define IRLOG_INFO4( a, b, c, d ) IRRDEBUG4( "InternetRadio [INFO]: " L##a, b, c, d )
-    #define IRLOG_INFO5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [INFO]: " L##a, b, c, d, e )
-#else
-    #define IRLOG_INFO( a )
-    #define IRLOG_INFO2( a, b )
-    #define IRLOG_INFO3( a, b, c )
-    #define IRLOG_INFO4( a, b, c, d )
-    #define IRLOG_INFO5( a, b, c, d, e )
-#endif
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_INFO
-    _LIT( KIRDebugMarker, "InternetRadio [DEBUG]: " );
-    #define IRLOG_DEBUG_DESC( desc ) \
-        { \
-        RBuf tmp; \
-        tmp.Create(KIRDebugMarker, KIRDebugMarker().Length() + desc.Length() ); \
-        tmp.Append(desc); \
-        IRRDEBUG_DESC(tmp); \
-        tmp.Close(); \
-        }
-    #define IRLOG_DEBUG( a ) IRRDEBUG( "InternetRadio [DEBUG]: " L##a )
-    #define IRLOG_DEBUG2( a, b ) IRRDEBUG2( "InternetRadio [DEBUG]: " L##a, b )
-    #define IRLOG_DEBUG3( a, b, c ) IRRDEBUG3( "InternetRadio [DEBUG]: " L##a, b, c )
-    #define IRLOG_DEBUG4( a, b, c, d ) IRRDEBUG4( "InternetRadio [DEBUG]: " L##a, b, c, d )
-    #define IRLOG_DEBUG5( a, b, c, d, e ) IRRDEBUG5( "InternetRadio [DEBUG]: " L##a, b, c, d, e )
-#else
-    #define IRLOG_DEBUG_DESC( desc )
-    #define IRLOG_DEBUG( a )
-    #define IRLOG_DEBUG2( a, b )
-    #define IRLOG_DEBUG3( a, b, c )
-    #define IRLOG_DEBUG4( a, b, c, d )
-    #define IRLOG_DEBUG5( a, b, c, d, e )
-#endif     
-
-////////////////////////////////////////////////////////////////////
-// Other debug related definitions
-///////////////////////////////////////////////////////////////////
-
-#if IRDEBUG_LEVEL > IR_DEBUG_LEVEL_NONE
-    #define IRDEBUGVAR( a ) a
-    #define IRDEBUGCODE( a ) a
-#else    
-    #define IRDEBUGVAR( a )   
-    #define IRDEBUGCODE( a )
-#endif
-
-
-          
-#endif          
-            
-// End of File
--- a/internetradio2.0/include/irinternalcrkeys.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Visual Radio central repository keys.
-*
-*/
-
-
-#ifndef IRINTERNALCRKEYS_H
-#define IRINTERNALCRKEYS_H
-
-#include <e32cmn.h>
-
-/** The UID of the category we use. Must be the same as Visual Radio's UID3 (SID). */
-const TUid KCRUidInternetRadio = { 0x2000B499};
-
-const TUint32 KIRDefaultMaxPresetCount = { 0x00000008 };
-const TUint32 KIRDefaultPlayVolume = { 0x00000010 };
-const TUint32 KIRTermsAndConditionsFlag = { 0x00000012 };
-const TUint32 KIRUpdateAvailablity = { 0x00000013 };
-const TUint32 KIRTimeOutDuration = { 0x00000014 };
-const TUint32 KIRSilencePeriodDuration = { 0x00000015 };
-const TUint32 KIRSilencePeriodStartingTime = { 0x00000016 };
-const TUint32 KIRDefaultIsdsUrl = { 0x00000017 };
-const TUint32 KIRDefaultIrId = { 0x00000018 };
-const TUint32 KIRIrappVer = { 0x00000019 };
-const TUint32 KIRDefaultTimeCorrection = { 0x00000020 };
-const TUint32 KIRUserDefinedLogRunningNumber = { 0x00000022 };
-
-//added for starting view
-const TUint32 KIRStartingViewId = {0x00000027};
-
-const TUint32 KIRPreferredQuality = {0x00000030};
-
-//added for songhistory show enable
-const TUint32 KIRSongHistoryShow = {0x00000031};
-
-//added for global advertisement
-const TUint32 KIRGlobalAdvFlag = {0x00000032};
-
-//added for Go to station view
-const TUint32 KIRStationUrl = { 0x00000033 };
-const TUint32 KIRStationName = { 0x00000034 };
-#endif 
--- a/internetradio2.0/include/irpubsubkeys.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +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 IRPUBSUBKEYS_H
-#define IRPUBSUBKEYS_H
-
-#include <e32def.h>
-#include <e32cmn.h>
-
-/** 
- * enum to indicate the state of iRAPP application
- */
-enum TIRPSApplicationRunningState
-    {
-    EIRPSApplicationUninitialized,
-    EIRPSApplicationRunning,
-    EIRPSApplicationClosing        
-    };
-
-/**
- * enum to indicate the state of chanel playing
- */
-enum TIRStopPlayState
-    {
-    EIRStateUninitialized,
-    EIRStatePlay,
-    EIRStateStop
-    };
-    
-    
-/**
- * enum to indicate the state of chanel playing
- */
-enum TIRBufferingState
-    {
-    EIRStateBufferingStart,
-    EIRStateBufferingStop,
-    EIRStateBufferingError
-    };
-
-/** 
- * Internet Radio application Uid
- */
- 
-//violates PC Lint Warning 569: Loss of information 
-//(initialization) (32 bits to 31 bits)
-
-const TUid KUidActiveInternetRadioApp = {0x2000B499};
-
-/** 
- * IR Publish and Subscribe keys base value
- */
-const TUint32 KIRPubSubBase = { 0x00000020 } ;
-
-/** 
- * IR Publish and Subscribe key to indicate prest index  change ( For XML Active Idle )
- */
-const TUint32 KIRPSPresetIndex = { KIRPubSubBase + 0x00000000 };
-
-/** 
- * IR Publish and Subscribe key to indicate if iRAPP is running ( For XML Active Idle )
- */
-const TUint32 KIRPSDataApplicationRunning = { KIRPubSubBase + 0x00000001 };
-
-/** 
- * This key is deprecated and the information is now available via KIRPSMetaData. 
- */
-const TUint32 KIRPSArtistTitleChanged = { KIRPubSubBase + 0x00000002 };
-
-/** 
- * This key is deprecated and the information is now available via KIRPSMetaData. 
- */
-const TUint32 KIRPSSongTitleChanged = { KIRPubSubBase + 0x00000003 };
-
-/** 
- * IR Publish and Subscribe key to indicate channel change ( For XML Active Idle )
- */
-const TUint32 KIRPSDataChannel = { KIRPubSubBase + 0x00000004 };
-
-/** 
- * IR Publish and Subscribe key to indicate volume change ( For XML Active Idle )
- */
-const TUint32 KIRPSVolume = { KIRPubSubBase + 0x00000005 };
-
-/** 
- * IR Publish and Subscribe key to indicate stop state ( For XML Active Idle )
- */
-const TUint32 KIRPSPlayStop = { KIRPubSubBase + 0x00000006 };
-
-/** 
- * IR Publish and Subscribe key to specify the channel server url
- */
-const TUint32 KIRPSChannelUrl = { KIRPubSubBase + 0x00000007 };
-
-/** 
- * IR Publish and Subscribe key to specify the Bitrate
- */
-const TUint32 KIRPSBitrate = { KIRPubSubBase + 0x00000008 };
-
-/** 
- * IR Publish and Subscribe key to Handle simultaneous play
- */
-const TUint32 KIRPSMultiplePlay = { KIRPubSubBase + 0x00000009 };
-
-/** 
- * IR Publish and Subscribe key to specify the channel server url
- */
-const TUint32 KIRPSStationName = { KIRPubSubBase + 0x0000000A };  
-
-/** 
- * IR Publish and Subscribe key to specify the number of application
- * instances running
- */
-const TUint32 KIRPSAppInstanceRunning = { KIRPubSubBase + 0x0000000B };  
-
-/**
- * Updated whenever meta data has been received for the channel that is currently streaming.
- *
- * As this data is packed in binary form, listeners of this key can use the following code snippet to support
- * unpacking it:
- *
- * #include <irmetadata.h>
- *
- * In your HandlePropertyChangeL( const TDesC8& aData ) method:
- *
- * if ( aKey == KIRPSMetaData )
- *     {
- *     CIRMetaData* metaData = CIRMetaData::NewL( aData ); 
- *     CleanupStack::PushL( metaData );
- *     // Meta data information is now available via the public access methods of CIRMetaData.
- *     // Do whatever needs to be done with the meta data information here.
- *     const TDesC& artist = metaData->Artist();
- *     ...
- *     CleanupStack::PopAndDestroy( metaData );
- *     }
- */
-const TUint32 KIRPSMetaData = { KIRPubSubBase + 0x0000000C };
-
-const TUint32 KIRPSChannelType = { KIRPubSubBase + 0x0000000D };
-
-const TUint32 KIRPSChannelId = { KIRPubSubBase + 0x000000E };
-
-const TUint32 KIRPSDataChannelDesc = { KIRPubSubBase + 0x0000000F };
-
-const TUint32 KIRPSChannelMusicFlag = { KIRPubSubBase + 0x00000010 };
-
-const TUint32 KIRPSControlSetPlayState = { KIRPubSubBase + 0x00000011 };
-
-
-const TUint32 KIRPSBufferingState = { KIRPubSubBase + 0x00000012 };
-
-/********************************************************************
-*  KIRPubSubBase + 0x00000015 should be reserved for startup key which is defined in \qtinternetradio\irqcommon\inc\irservicedef.h
-*const unsigned long int KInternetRadioStartupKey = 0x00000035; // = KIRPubSubBase + 0x00000015
-*/
-
-#endif // IRPUBSUBKEYS_H
-
--- a/internetradio2.0/install/internetradiostub.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ b/internetradio2.0/install/internetradiostub.pkg	Wed Aug 18 09:40:26 2010 +0300
@@ -36,7 +36,7 @@
 ""-"z:\sys\bin\IRStreamSource.dll"
 ""-"z:\sys\bin\IRMediaEngine.dll"
 ""-"z:\sys\bin\IRFileRecognizer.dll"
-""-"z:\sys\bin\PresetPlugin.dll"
+""-"z:\sys\bin\irpresetplugin.dll"
 ""-"z:\sys\bin\irrfsplugin.dll"
 ""-"z:\sys\bin\IRFavoritesDb.dll"
 ""-"z:\sys\bin\IRCommandChannel.dll"
@@ -56,10 +56,10 @@
 ""-"z:\resource\apps\InternetRadio.r*"
 ""-"z:\private\10003a3f\import\apps\InternetRadio_reg.rsc"
 ""-"z:\resource\plugins\IRMediaEngine.rsc"
-""-"z:\resource\plugins\PresetPlugin.rsc"
+""-"z:\resource\plugins\irpresetplugin.rsc"
 ""-"z:\resource\plugins\irrfsplugin.rsc"
 ""-"z:\resource\plugins\IRFileRecognizer.rsc"
-""-"z:\resource\irsettings.rsc"
+;""-"z:\resource\irsettings.rsc"
 ""-"z:\resource\plugins\IRActiveIdle.rsc"
 ""-"z:\resource\irgeneralsettings.rsc"
 
--- a/internetradio2.0/install/ir_package.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ b/internetradio2.0/install/ir_package.pkg	Wed Aug 18 09:40:26 2010 +0300
@@ -93,10 +93,10 @@
 ;"\Epoc32\data\z\resource\apps\InternetRadio.rsc"			-"!:\resource\apps\InternetRadio.rsc"
 ;"\Epoc32\data\z\resource\apps\irnetworkcontroller.rsc"			-"!:\resource\apps\irnetworkcontroller.rsc"
 ;"\Epoc32\Data\Z\resource\plugins\IRMediaEngine.RSC" 			-"!:\resource\plugins\IRMediaEngine.RSC"
-"\Epoc32\Data\Z\resource\plugins\PresetPlugin.RSC"			-"!:\resource\plugins\PresetPlugin.RSC"
+"\Epoc32\Data\Z\resource\plugins\irpresetplugin.RSC"			-"!:\resource\plugins\irpresetplugin.RSC"
 "\epoc32\data\z\resource\plugins\irrfsplugin.rsc"			-"!:\resource\plugins\irrfsplugin.rsc"
 "\Epoc32\Data\Z\resource\plugins\IRFileRecognizer.RSC"			-"!:\resource\plugins\IRFileRecognizer.RSC"
-"\epoc32\data\z\resource\irsettings.rsc" 				-"!:\resource\irsettings.rsc"
+;"\epoc32\data\z\resource\irsettings.rsc" 				-"!:\resource\irsettings.rsc"
 ;"\epoc32\Data\Z\resource\plugins\irgeneralsettings200.rsc"		-"!:\resource\plugins\irgeneralsettings200.rsc"
 ;"\epoc32\data\z\resource\irgeneralsettings.rsc" 			-"!:\resource\irgeneralsettings.rsc"
 
@@ -235,7 +235,7 @@
 ;"\Epoc32\release\armv5\urel\IRStreamSource.dll"		-"!:\sys\bin\IRStreamSource.dll"
 ;"\Epoc32\release\armv5\urel\IRMediaEngine.dll"		-"!:\sys\bin\IRMediaEngine.dll"
 "\Epoc32\release\armv5\urel\IRFileRecognizer.dll"	-"!:\sys\bin\IRFileRecognizer.dll"
-"\Epoc32\release\armv5\urel\PresetPlugin.dll"		-"!:\sys\bin\PresetPlugin.dll"
+"\Epoc32\release\armv5\urel\irpresetplugin.dll"		-"!:\sys\bin\irpresetplugin.dll"
 "\epoc32\release\armv5\urel\irrfsplugin.dll"		-"!:\sys\bin\irrfsplugin.dll"
 "\Epoc32\release\armv5\urel\IRFavoritesDb.dll"		-"!:\sys\bin\IRFavoritesDb.dll"
 ;"\Epoc32\release\armv5\urel\IRCommandChannel.dll"	-"!:\sys\bin\IRCommandChannel.dll"
--- a/internetradio2.0/install/ir_package_deb.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ b/internetradio2.0/install/ir_package_deb.pkg	Wed Aug 18 09:40:26 2010 +0300
@@ -93,10 +93,10 @@
 ;"\Epoc32\data\z\resource\apps\InternetRadio.rsc"			-"!:\resource\apps\InternetRadio.rsc"
 ;"\Epoc32\data\z\resource\apps\irnetworkcontroller.rsc"			-"!:\resource\apps\irnetworkcontroller.rsc"
 ;"\Epoc32\Data\Z\resource\plugins\IRMediaEngine.RSC" 			-"!:\resource\plugins\IRMediaEngine.RSC"
-"\Epoc32\Data\Z\resource\plugins\PresetPlugin.RSC"			-"!:\resource\plugins\PresetPlugin.RSC"
+"\Epoc32\Data\Z\resource\plugins\irpresetplugin.RSC"			-"!:\resource\plugins\irpresetplugin.RSC"
 "\epoc32\data\z\resource\plugins\irrfsplugin.rsc"			-"!:\resource\plugins\irrfsplugin.rsc"
 "\Epoc32\Data\Z\resource\plugins\IRFileRecognizer.RSC"			-"!:\resource\plugins\IRFileRecognizer.RSC"
-"\epoc32\data\z\resource\irsettings.rsc" 				-"!:\resource\irsettings.rsc"
+;"\epoc32\data\z\resource\irsettings.rsc" 				-"!:\resource\irsettings.rsc"
 ;"\epoc32\Data\Z\resource\plugins\irgeneralsettings200.rsc"		-"!:\resource\plugins\irgeneralsettings200.rsc"
 ;"\epoc32\data\z\resource\irgeneralsettings.rsc" 			-"!:\resource\irgeneralsettings.rsc"
 
@@ -235,7 +235,7 @@
 ;"\Epoc32\release\armv5\udeb\IRStreamSource.dll"		-"!:\sys\bin\IRStreamSource.dll"
 ;"\Epoc32\release\armv5\udeb\IRMediaEngine.dll"		-"!:\sys\bin\IRMediaEngine.dll"
 "\Epoc32\release\armv5\udeb\IRFileRecognizer.dll"	-"!:\sys\bin\IRFileRecognizer.dll"
-"\Epoc32\release\armv5\udeb\PresetPlugin.dll"		-"!:\sys\bin\PresetPlugin.dll"
+"\Epoc32\release\armv5\udeb\irpresetplugin.dll"		-"!:\sys\bin\irpresetplugin.dll"
 "\epoc32\release\armv5\udeb\irrfsplugin.dll"		-"!:\sys\bin\irrfsplugin.dll"
 "\Epoc32\release\armv5\udeb\IRFavoritesDb.dll"		-"!:\sys\bin\IRFavoritesDb.dll"
 ;"\Epoc32\release\armv5\udeb\IRCommandChannel.dll"	-"!:\sys\bin\IRCommandChannel.dll"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/bmarm/ircachemgmtu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,15 @@
+EXPORTS
+	_ZN12CIRCacheMgmt10CacheLogoLERK6TDesC8RK7TDesC16RK19CIRHttpResponseData @ 1 NONAME
+	_ZN12CIRCacheMgmt11CheckCacheLEiRK7TDesC16iRi @ 2 NONAME
+	_ZN12CIRCacheMgmt12AddObserverLEP16MIRCacheObserver @ 3 NONAME
+	_ZN12CIRCacheMgmt13CacheOtaInfoLERK12CIROTAUpdateRK7TDesC16RK19CIRHttpResponseData @ 4 NONAME
+	_ZN12CIRCacheMgmt14RemoveObserverEP16MIRCacheObserver @ 5 NONAME
+	_ZN12CIRCacheMgmt14RemoveOtaInfoLEv @ 6 NONAME
+	_ZN12CIRCacheMgmt16CachePresetItemLER13CArrayPtrFlatI13CIRIsdsPresetERK7TDesC16RK19CIRHttpResponseData @ 7 NONAME
+	_ZN12CIRCacheMgmt18CacheChannelItemsLER13CArrayPtrFlatI21CIRBrowseChannelItemsERK7TDesC16RK19CIRHttpResponseData @ 8 NONAME
+	_ZN12CIRCacheMgmt18UpdateTrustPeriodLEiRK7TDesC16R19CIRHttpResponseData @ 9 NONAME
+	_ZN12CIRCacheMgmt19CacheCategoryItemsLER13CArrayPtrFlatI22CIRBrowseCatagoryItemsERK7TDesC16RK19CIRHttpResponseData @ 10 NONAME
+	_ZN12CIRCacheMgmt5OpenLER16MIRCacheObserver @ 11 NONAME
+	_ZTI12CIRCacheMgmt @ 12 NONAME ; #<TI>#
+	_ZTV12CIRCacheMgmt @ 13 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/bwinscw/ircachemgmtu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,13 @@
+EXPORTS
+	?AddObserverL@CIRCacheMgmt@@QAEXPAVMIRCacheObserver@@@Z @ 1 NONAME ; void CIRCacheMgmt::AddObserverL(class MIRCacheObserver *)
+	?CacheCategoryItemsL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRBrowseCatagoryItems@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 2 NONAME ; void CIRCacheMgmt::CacheCategoryItemsL(class CArrayPtrFlat<class CIRBrowseCatagoryItems> &, class TDesC16 const &, class CIRHttpResponseData const &)
+	?CacheChannelItemsL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRBrowseChannelItems@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 3 NONAME ; void CIRCacheMgmt::CacheChannelItemsL(class CArrayPtrFlat<class CIRBrowseChannelItems> &, class TDesC16 const &, class CIRHttpResponseData const &)
+	?CacheLogoL@CIRCacheMgmt@@QAEXABVTDesC8@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 4 NONAME ; void CIRCacheMgmt::CacheLogoL(class TDesC8 const &, class TDesC16 const &, class CIRHttpResponseData const &)
+	?CacheOtaInfoL@CIRCacheMgmt@@QAEXABVCIROTAUpdate@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 5 NONAME ; void CIRCacheMgmt::CacheOtaInfoL(class CIROTAUpdate const &, class TDesC16 const &, class CIRHttpResponseData const &)
+	?CachePresetItemL@CIRCacheMgmt@@QAEXAAV?$CArrayPtrFlat@VCIRIsdsPreset@@@@ABVTDesC16@@ABVCIRHttpResponseData@@@Z @ 6 NONAME ; void CIRCacheMgmt::CachePresetItemL(class CArrayPtrFlat<class CIRIsdsPreset> &, class TDesC16 const &, class CIRHttpResponseData const &)
+	?CheckCacheL@CIRCacheMgmt@@QAEXHABVTDesC16@@HAAH@Z @ 7 NONAME ; void CIRCacheMgmt::CheckCacheL(int, class TDesC16 const &, int, int &)
+	?OpenL@CIRCacheMgmt@@SAPAV1@AAVMIRCacheObserver@@@Z @ 8 NONAME ; class CIRCacheMgmt * CIRCacheMgmt::OpenL(class MIRCacheObserver &)
+	?RemoveObserver@CIRCacheMgmt@@QAEXPAVMIRCacheObserver@@@Z @ 9 NONAME ; void CIRCacheMgmt::RemoveObserver(class MIRCacheObserver *)
+	?RemoveOtaInfoL@CIRCacheMgmt@@QAEXXZ @ 10 NONAME ; void CIRCacheMgmt::RemoveOtaInfoL(void)
+	?UpdateTrustPeriodL@CIRCacheMgmt@@QAEXHABVTDesC16@@AAVCIRHttpResponseData@@@Z @ 11 NONAME ; void CIRCacheMgmt::UpdateTrustPeriodL(int, class TDesC16 const &, class CIRHttpResponseData &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+PRJ_MMPFILES
+ircachemgmt.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/group/ircachemgmt.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c)  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 <platform_paths.hrh>
+
+
+TARGET                  ircachemgmt.dll
+TARGETTYPE              dll
+UID                     0x1000008d 0x2000B4A1
+
+CAPABILITY              CAP_GENERAL_DLL
+VENDORID                VID_DEFAULT
+PAGED
+
+SOURCEPATH              ../src
+SOURCE                  ircachemgmt.cpp
+SOURCE                  ircachecleanup.cpp
+
+USERINCLUDE             ../inc
+USERINCLUDE             ../../inc
+USERINCLUDE             ../../irsettings/inc
+USERINCLUDE             ../../ircommon/inc
+USERINCLUDE             ../../irdataprovider/inc
+USERINCLUDE             ../../irnetworkcontroller/inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+SMPSAFE
+
+LIBRARY                 bafl.lib
+LIBRARY                 edbms.lib
+LIBRARY                 efsrv.lib
+LIBRARY                 estor.lib
+LIBRARY                 euser.lib
+LIBRARY                 irdatastructures.lib
+LIBRARY                 irsettings.lib
+LIBRARY                 flogger.lib
+
+#if defined WINSCW
+DEFFILE                 ../bwinscw/ 
+#else
+DEFFILE                 ../bmarm/ 
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/inc/ircachecleanup.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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 <e32base.h>
+
+//Max size in Bytes
+const TInt KCacheLimitSize = 8*1024*1024;
+
+class CIRCacheMgmt;
+
+NONSHARABLE_CLASS ( CIRCacheCleanup):public CTimer
+    {
+public:
+
+    /**
+    * Two-phased constructor.
+    * @return  The newly created object.
+    */
+    static CIRCacheCleanup* NewL( CIRCacheMgmt& aCacheDb);
+
+    /**
+    * Destructor.
+    */
+    ~CIRCacheCleanup();
+
+private:
+
+    /**
+     * Default Constructor.
+     * @param CIRCacheMgmt refrerence
+     */
+    CIRCacheCleanup( CIRCacheMgmt& aCacheDb);
+
+    /**
+     * Second-phase constructor.
+     */
+    void ConstructL();
+
+    /**
+     *CleanupCacheDbL()
+     * Cleansup routine
+     */
+    void CleanupCacheDbL();
+    
+    /**
+     *CheckStatusL()
+     * CheckStatus of CacheDb and do cleanup if necessary
+     */
+    void CheckStatusL();
+    
+
+    /**
+     * @see CTimer::RunL().
+     */
+    void RunL();
+    
+    /**
+    * GetCleanupInterval().
+    *gets the cleanup routine call interval based on the current cache size.
+    *formula derivation:
+    *Timeinterval of cleanup ( T) is inversely proportional to the cache size( S)
+    *Minimum time interval for cleanup routine 2 min.
+    *Maximum time interval for cleanup routine ~35mins.
+    *timeintervalperbyte = ( 35-2)*60*1000000/1024*1024
+    *TimeInterval = timeintervalperbyte*( MaxCacheLimit-CurrentCachesize)
+    */
+    TUint32 GetCleanupInterval();
+     
+private:
+
+    /** The cache database. */
+    CIRCacheMgmt& iDatabase;
+    
+  };
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/inc/ircachemgmt.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,307 @@
+/*
+* 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 CIRCACHEMGMT_H
+#define CIRCACHEMGMT_H
+
+#include <d32dbms.h>
+
+
+const TInt KMAXHEADER = 255;
+
+class CIRBrowseCatagoryItems;
+class CIRBrowseChannelItems;
+class CIRCacheCleanup;
+class CIRHttpResponseData;
+class CIRIsdsPreset;
+class CIROTAUpdate;
+class CIRSettings;
+class MIRCacheObserver;
+
+class CIRCacheMgmt : public CObject
+    {
+    
+public:
+
+    /**
+    *CIRCacheMgmt::OpenL()
+    *Standard two phased construction
+    *calls ConstructL()
+    *@param MIRCacheObserver &
+    *@return CIRCacheMgmt*
+    */
+    IMPORT_C static CIRCacheMgmt* OpenL(MIRCacheObserver &aObserver);
+
+    /**
+    * Adds a cache observer
+    *
+    * @param aObserver The observer to be added
+    */
+    IMPORT_C void AddObserverL( MIRCacheObserver* aObserver );
+    
+    /**
+    * Removes a cache observer
+    *
+    * @param aObserver The observer to be removed
+    */
+    IMPORT_C void RemoveObserver( MIRCacheObserver* aObserver );
+  
+    /**
+    *CIRCacheMgmt::CheckCache()
+    *API Exposed to Isds Client to check and get the cached items.
+    *@ aType the type of items i.e category,channel or preset. aName is the 
+    *file name(type,CategoryId,PresetId
+    *@return TInt,1 for a cache hit,0 for cache miss,-1 for invalid cache
+    *
+    */
+    IMPORT_C void CheckCacheL(TInt aType,const TDesC& aName,
+        TBool aForceGet, TInt& aReturn);
+
+    /**
+    *CIRCacheMgmt::CheckValidity()
+    *Checks the freshness of the cache
+    *@param universal time of file creation
+    *@return TBool 1 if fresh,0 if stale
+    */ 
+    TBool CheckValidity(const TTime &aCreateTime,TInt aTrustPeriod) const;
+
+  
+    /**
+    *CIRCacheMgmt::CacheCategoryItems()
+    *Caches the category array of data.By externalizing it into a file.
+    *@param aPtrCategory the object array,aName the file name from which 
+    *the information is to be written
+    */ 
+    IMPORT_C  void CacheCategoryItemsL(
+        CArrayPtrFlat<CIRBrowseCatagoryItems>& aPtrCategory,
+        const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders);
+
+    /**
+    *CIRCacheMgmt::CacheChannelItems()
+    *Caches the channel objects array of data.By externalizing it into a file.
+    *@param aPtrChannel the object array,aName the file name from which 
+    *the information is to be written
+    */
+    IMPORT_C  void CacheChannelItemsL(
+        CArrayPtrFlat<CIRBrowseChannelItems>& aPtrChannel,
+        const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders);
+
+    /**
+    *CIRCacheMgmt::CachePresetItem()
+    *Caches the preset objects .By externalizing it into a file.
+    *Multiple presets can be cached.
+    *@param aPreset preset object,aName the file name from which 
+    *the information is to be written
+    */
+    IMPORT_C  void CachePresetItemL(
+        CArrayPtrFlat<CIRIsdsPreset>& aPtrPresets,
+        const TDesC& aName,const CIRHttpResponseData& aResponseHeaders);
+
+    /**
+    *Function : CIRCacheMgmt::CacheOtaInfoL()
+    * Caches the OTA information  .By externalizing it into a db.
+    *@param aOta otainfo object,aName the file name from which 
+    *the information is to be written
+    */
+    IMPORT_C void CacheOtaInfoL(const CIROTAUpdate& aOta,const TDesC& aName,
+        const CIRHttpResponseData& aResponseHeaders);
+                
+                
+    ////////////////////////////////////////////////////////////////////////
+    // CacheLogoL() API is added newly for logo cache management          //
+    ////////////////////////////////////////////////////////////////////////              
+    /**
+    *CIRCacheMgmt::CacheLogoL()
+    * Caches the logo data for a given logo url.
+    *@param aData --- logo data
+    *@param aUrl  --- logo url
+    */                
+    IMPORT_C void CacheLogoL(const TDesC8& aData, const TDesC& aUrl,
+        const CIRHttpResponseData& aResponseHeaders);
+                
+                
+    /**
+    *CIRCacheMgmt::UpdateTrustPeriodL()
+    *Modifies the Trust period that comes with the 304 
+    *Not Modified responces from isds
+    *@ aType the type of items i.e category,channel or preset.
+    *aName is the file name(type,CategoryId,PresetId
+    */    
+    IMPORT_C void UpdateTrustPeriodL(TInt aType, const TDesC& aName,
+        CIRHttpResponseData& aResponseHeaders);
+
+    /**
+    *CIRCacheMgmt::RemoveOtaInfoL() 
+    *removes any cached ota response in case it is invalid
+    */
+    IMPORT_C void RemoveOtaInfoL();
+    
+    /**
+    *CIRCacheMgmt::CheckSizeL()
+    *checks the current size of cache against the max cache limit
+    */  
+    void CheckSizeL();
+    /**
+    *CIRCacheMgmt::RemoveOldUnusedDataL()
+    *removes all unused data to bring the cache under the max cache size
+    */  
+    void RemoveOldUnusedDataL();
+    /**
+    *CIRCacheMgmt::CacheSize()
+    *@return the cache size
+    */  
+    TInt CacheSize();
+    
+private:
+
+    /**
+    *CIRCacheMgmt::CIRCacheMgmt()
+    *Standard C++ constructor
+    *@param MIRCacheObserver &
+    *@return NA
+    *sets the trust period to 24hrs(default)
+    */
+    CIRCacheMgmt(MIRCacheObserver &aObserver);
+    
+    /**
+    *CIRCacheMgmt::ConstructL()
+    *Standard two phased construction
+    *@param void
+    *@return void
+    *creates the folder paths if nonexistant
+    */
+    void ConstructL();
+  
+    /**
+    *CIRCacheMgmt::~CIRCacheMgmt()
+    *Standard C++ destructor
+    *@param NA
+    *@return NA
+    */
+    ~CIRCacheMgmt();
+  
+    /**
+    *CIRCacheMgmt::CreateCacheTableL()
+    *Creates the cache table
+    *CacheTable
+    * -----------------------------------------------------------------------------------------------
+    *| RowIndex|DataType|DataId|TrustPeriod|LastModified  |LastAccessed|Created|ItemCount|CachedData|
+    *------------------------------------------------------------------------------------------------
+    *| auto    |TInt    |TDesC |TInt       |TDesC/DateTime|TTime       |Time   |TInt     | Streamed |
+    *|increment|0,1,2 !0| !0   |  !0       |              |            |       |         | Data     |
+    *------------------------------------------------------------------------------------------------
+    */
+    void CreateCacheTableL();
+    
+    /**
+    *CIRCacheMgmt::CreateCacheIndexL()
+    *creates the indices for cache table
+    */
+    void CreateCacheIndexL();
+    
+    void FetchCacheIfAvailableL(TInt aType,const TDesC& aId,
+        TBool aForceGet,TInt& aReturnVal);
+        
+    void FetchCachedDataL(TInt aType,TInt aCountItems,RDbView& aCacheView);
+    
+    void CloseDb();
+    
+    TInt OpenCacheDb();
+    
+    TInt CreateDb();
+    
+    void CreateDbConditionalL();    
+    /** 
+    *CIRCacheMgmt::UpdateLastAccessedTime() 
+    *updates the last accessed field to aid in deletion of old data
+    *@param RDbView&,the view for which the update has to be made
+    */
+    void UpdateLastAccessedTimeL(RDbView &aCacheView);
+  
+public:
+    //!Enumeration for type identification
+    enum TIRTypes
+      {
+      ECatagory = 0,
+      EChannels,
+      EPresets,
+      EOtaInfo,
+      ELogo   //added for logo cache management
+      };
+      
+    //!Enumeration for return types     
+    enum TIRCacheStatus
+      {
+      ECacheNotValid = -1,
+      ENotCached,
+      ECacheUseable
+      };
+      
+    //! trust period for cache(24hrs by default)
+    TTimeIntervalSeconds iTrustPeriod;
+    
+    // Array of Pointers to PresetClass
+    //used to return an array of cached presets to the UI
+    CArrayPtrFlat<CIRIsdsPreset>* iPtrPreset;
+    
+    //! Array of Pointers to CategoryClass  
+    CArrayPtrFlat<CIRBrowseCatagoryItems>* iPtrCategory;
+    
+    //! Array of Pointers to BrowseCategoryClass
+    CArrayPtrFlat<CIRBrowseChannelItems>* iPtrChannel;
+    
+    //ota info holding object
+    CIROTAUpdate* iOTA;
+    //!Observer class for cache
+    MIRCacheObserver& iCacheObserver;
+    
+    //To store the logo data which is retrieved from the cache
+    RBuf8 iLogoData;
+    
+    //!time stamp string in HTTP format,used if cache is stale
+    TTime iLastModified;
+    
+    //ETag header assaociated witht the logo data
+    TBuf8< KMAXHEADER > iETag;
+  
+private:
+    
+    /** 
+    * Array of cache observers
+    */
+    RPointerArray<MIRCacheObserver> iCacheObservers;
+    
+    RDbNamedDatabase iCacheDb;
+    
+    TBool iOpen;
+    
+    //! fileserver session
+    RFs iFsSession;
+    
+    TFileName iDatabaseFileName;
+    
+    //central repository settings handle
+    CIRSettings* iSettings;
+    
+    CIRCacheCleanup* iCleanup;
+    
+    TInt iCacheDbSize;
+    
+    };
+    
+#endif //CIRCACHEMGMT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/inc/ircacheobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* 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 MIRCACHEOBSERVER_H
+#define MIRCACHEOBSERVER_H
+
+#include <e32def.h>
+
+class MIRCacheObserver
+{
+    public:
+    //!General error condition   
+    virtual void CacheError() = 0;
+    
+    //! If seeked data not in cache    
+    virtual void CacheFailed() = 0;
+    
+    //!If cached data is stale    
+    virtual void CacheInvalid() = 0;
+    
+    //!Data is valid and extracted into the structure    
+    virtual void CachedStructureL(TInt aChoice) = 0;
+                    
+};
+
+#endif //MIRCACHEOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/src/ircachecleanup.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* 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 "ircachecleanup.h"
+#include "ircachemgmt.h"
+#include "irdebug.h"
+
+//Constant decided on the rate of data collection in cache 
+/*in a high speed connection*/
+/* const TUint KConstantForCleanupFrequency = KCacheLimitSize*90; */
+//maximum time interval = 2147483648/KCacheLimitSize   
+
+const TUint KIntervalPerByte =2048 ;
+//
+const TInt KMinCleanupInterval = 2*60*1000000;//2 mins
+const TInt KMaxCleanupInterval = 2147483647;//~36 mins for 1MB data
+
+// ---------------------------------------------------------------------------
+//Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CIRCacheCleanup* CIRCacheCleanup::NewL(CIRCacheMgmt& aCacheDb)
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::NewL - Entering" );
+    CIRCacheCleanup* self = new(ELeave)CIRCacheCleanup(aCacheDb);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    IRLOG_DEBUG( "CIRCacheCleanup::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CIRCacheCleanup::~CIRCacheCleanup()
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::~CIRCacheCleanup - Entering" );
+    Cancel();
+    IRLOG_DEBUG( "CIRCacheCleanup::~CIRCacheCleanup - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+//Default Constructor
+// ---------------------------------------------------------------------------
+//
+CIRCacheCleanup::CIRCacheCleanup(CIRCacheMgmt& aCacheDb):
+    CTimer( CActive::EPriorityLow ), iDatabase( aCacheDb )
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::CIRCacheCleanup - Entering" );
+    CActiveScheduler::Add( this );
+    IRLOG_DEBUG( "CIRCacheCleanup::CIRCacheCleanup - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+//Second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CIRCacheCleanup::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::ConstructL - Entering" );
+    CTimer::ConstructL();   
+    CheckStatusL();
+    IRLOG_DEBUG( "CIRCacheCleanup::ConstructL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+//Cleanup CacheDb if necessary
+// ---------------------------------------------------------------------------
+//
+void CIRCacheCleanup::CleanupCacheDbL()
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::CleanupCacheDbL - Entering" );
+    iDatabase.CheckSizeL();
+    IRLOG_DEBUG( "CIRCacheCleanup::CleanupCacheDbL - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+//CheckStatus of CacheDb and do cleanup if necessary
+// ---------------------------------------------------------------------------
+//
+void CIRCacheCleanup::CheckStatusL()
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::CheckStatusL - Entering" );
+    TTimeIntervalMicroSeconds32  interval(GetCleanupInterval());
+    After(interval);
+    CleanupCacheDbL();
+    IRLOG_DEBUG( "CIRCacheCleanup::CheckStatusL - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+//  CIRCacheCleanup::RunL().
+// ---------------------------------------------------------------------------
+//
+void CIRCacheCleanup::RunL()
+     {
+     IRLOG_DEBUG( "CIRCacheCleanup::RunL - Entering" );
+     CheckStatusL();
+     IRLOG_DEBUG( "CIRCacheCleanup::RunL - Exiting" );
+     }
+      
+// ---------------------------------------------------------------------------
+//  CIRCacheCleanup::GetCleanupInterval().
+// ---------------------------------------------------------------------------
+//
+TUint32 CIRCacheCleanup::GetCleanupInterval()
+    {
+    IRLOG_DEBUG( "CIRCacheCleanup::GetCleanupInterval - Entering" );
+    //formula derivation:
+    //Timeinterval of cleanup (T) is inversely proportional to the cache size(S)
+    //Minimum time interval for cleanup routine 2 min.
+    //Maximum time interval for cleanup routine ~35mins.
+    //timeintervalperbyte = (35-2)*60*1000000/1024*1024
+    //TimeInterval = timeintervalperbyte*(MaxCacheLimit-CurrentCachesize)
+    
+    TInt interval =KIntervalPerByte * (KCacheLimitSize - iDatabase.CacheSize());
+    //keep the value range bound
+    interval = Max(interval,KMinCleanupInterval);
+    interval = Min(interval,KMaxCleanupInterval);
+    IRLOG_DEBUG( "CIRCacheCleanup::GetCleanupInterval - Exiting" );
+    return interval;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircachemgmt/src/ircachemgmt.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1544 @@
+/*
+* 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 <bautils.h>
+
+#include "irbrowsecatagoryitems.h"
+#include "irbrowsechannelitems.h"
+#include "ircachecleanup.h"
+#include "ircachemgmt.h"
+#include "ircacheobserver.h"
+#include "irdebug.h"
+#include "irhttprequestdata.h"
+#include "irisdspreset.h"
+#include "irotaupdate.h"
+#include "irsettings.h"
+
+//Default trust period value.24 hrs in secs with which the object is to be initialised
+const TInt KDefaultInterval = 24*60*60;
+//granualarity for the arrays
+//the granualarity value is based on superficial observation of the amount of 
+//data recieved for a particular request
+const TInt KBrowseGranualarity = 32;
+const TInt KChannelArrayGranualarity = 32;
+const TInt KPresetGranualarity = 12;
+//http length format length
+// "Sun, 06 Nov 1994 08:49:37 GMT" format
+const TInt KHttpDateLength = 25;
+
+//Max size( critical size ) in Bytes( 90% of the max size )
+//critical size is the size that triggers cleanup action
+const TInt KCacheCriticalSizeLimit = KCacheLimitSize*9/10;
+
+//No of rows deleted will be one fourth of the total number of rows
+const TInt KPercentRowsDeleted = 4;  
+
+//The indexing size for the column DataId is set to 100 
+const TInt KDataIdIndexSize = 100;
+
+//database file name
+_LIT( KCacheDbFile,"cacheDb.db" );
+
+//Table Name CacheTable
+_LIT( KCacheTable,"CacheTable" );
+
+//CacheTable columns
+_LIT( KRowIndexCol,     "RowIndex" );  
+_LIT( KDataTypeCol,     "DataType" );            
+_LIT( KDataIdCol,       "DataId" );       
+_LIT( KTrustPeriodCol,  "TrustPeriod" );       
+_LIT( KLastModifiedCol, "LastModified" ); 
+_LIT( KLastAccessedCol, "LastAccessed" ); 
+_LIT( KTimeCreation,    "Created" );
+_LIT( KItemCount,       "ItemCount" );
+_LIT( KCachedDataCol,   "CachedData" );
+_LIT( KETagHeader,      "ETagHeader" ); 
+
+//Table Index Names
+_LIT( KRowIndexColIndex,     "IndexRowIndex" );  
+_LIT( KDataTypeColIndex,     "IndexDataType" );            
+_LIT( KDataIdColIndex,       "IndexDataId" );  
+_LIT( KLastAccessedColIndex, "IndexLastAccessed" ); 
+_LIT( KTimeCreationIndex,    "IndexCreated" );
+//Field Lengths
+
+const TInt KIRObserverArrayGranularity( 2 );
+
+
+// ---------------------------------------------------------------------------
+// Function : OpenL
+// Standard two phased construction
+// calls ConstructL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRCacheMgmt* CIRCacheMgmt::OpenL( MIRCacheObserver &aObserver )
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::OpenL - Entering." );
+    CIRCacheMgmt* self = reinterpret_cast<CIRCacheMgmt*>( Dll::Tls() );
+    
+    if ( self )
+        {
+        User::LeaveIfError( self->Open() );
+        }
+    else
+        {
+        self = new ( ELeave ) CIRCacheMgmt( aObserver );
+        CleanupClosePushL( *self );
+        self->ConstructL();
+        User::LeaveIfError( Dll::SetTls( self ) );
+        CleanupStack::Pop( self );
+        }
+    IRLOG_DEBUG( "IRCacheMgmt::OpenL - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::~CIRCacheMgmt()
+// Standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRCacheMgmt::~CIRCacheMgmt() 
+    { 
+    IRLOG_DEBUG( "IRCacheMgmt::~CIRCacheMgmt - Entering." );
+    //array destruction
+    if ( iPtrPreset )
+         {
+         iPtrPreset->ResetAndDestroy();
+             delete iPtrPreset;
+             iPtrPreset = NULL;
+         }
+    if ( iPtrCategory )
+        {
+        iPtrCategory->ResetAndDestroy();
+        }
+    
+    delete iPtrCategory;
+    iPtrCategory = NULL;
+    if ( iPtrChannel )
+        {
+        iPtrChannel->ResetAndDestroy();
+        }
+    
+    delete iPtrChannel;
+    iPtrChannel = NULL;
+    if ( iSettings )
+        {
+        iSettings->Close();
+        }
+    if ( iOTA )
+        {
+        delete iOTA;
+        iOTA = NULL;
+        }
+    iLogoData.Close();    
+    CloseDb();
+    iCacheDb.Close();
+    delete iCleanup;
+    iFsSession.Close();
+    iCacheObservers.Close();
+    Dll::FreeTls();
+    IRLOG_DEBUG( "IRCacheMgmt::~CIRCacheMgmt - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CIRCacheMgmt()
+// Standard C++ constructor
+// sets the trust period to 24hrs(  default )
+// ---------------------------------------------------------------------------
+//
+CIRCacheMgmt::CIRCacheMgmt ( MIRCacheObserver &aObserver )
+    :iCacheObserver( aObserver ),
+    iCacheObservers( KIRObserverArrayGranularity )
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CIRCacheMgmt - Entering." );
+    //default trust period initially set to 24 hrs
+    //to be fetched from central repository
+    iTrustPeriod = TTimeIntervalSeconds( KDefaultInterval );  
+    IRLOG_DEBUG( "IRCacheMgmt::CIRCacheMgmt - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::ConstructL()
+// Standard two phased construction
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::ConstructL() 
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::ConstructL - Entering." );
+    User::LeaveIfError( iFsSession.Connect() );
+    //array construction
+    iPtrPreset = new ( ELeave ) CArrayPtrFlat<CIRIsdsPreset>(
+                              KPresetGranualarity );
+    iPtrCategory = new ( ELeave ) CArrayPtrFlat<CIRBrowseCatagoryItems>(
+                              KBrowseGranualarity );
+    iPtrChannel = new ( ELeave ) CArrayPtrFlat<CIRBrowseChannelItems>(
+                              KChannelArrayGranualarity );
+    iOTA = CIROTAUpdate::NewL();
+    iSettings = CIRSettings::OpenL();
+    iDatabaseFileName = iSettings->PrivatePath();
+    iDatabaseFileName.Append( KCacheDbFile );
+    CreateDbConditionalL();
+    iCleanup = CIRCacheCleanup::NewL( *this );
+    RemoveOtaInfoL();
+    IRLOG_DEBUG( "IRCacheMgmt::ConstructL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CreateDbConditionalL(
+// Creates dbms conditionally( only if not yet created )
+// calls CreateDb()
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::CreateDbConditionalL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CreateDbConditionalL - Entering." );
+    TInt err=KErrNone;
+    if ( !BaflUtils::FileExists( iFsSession, iDatabaseFileName ) )
+        {
+        err=CreateDb();
+        if ( KErrNone != err )
+             {
+             User::Leave( err ); 
+             }
+        }
+    IRLOG_DEBUG( "IRCacheMgmt::CreateDbConditionalL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CreateDb()
+// Creates the tables
+// ---------------------------------------------------------------------------
+//
+TInt CIRCacheMgmt::CreateDb()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CreateDb - Entering." );
+    CloseDb();
+    TInt err = iCacheDb.Replace( iFsSession,iDatabaseFileName );
+    if ( ( err != 0 ) )
+        {
+        return err; //unable to create file 
+        }                                   
+    TRAP( err,//trap start
+        CreateCacheTableL();
+        CreateCacheIndexL();
+        )//trap end
+    IRLOG_DEBUG( "IRCacheMgmt::CreateDb - Exiting." );
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::OpenCacheDb()
+// Opens both the databases 
+// ---------------------------------------------------------------------------
+//
+TInt CIRCacheMgmt::OpenCacheDb()
+    {
+    IRLOG_DEBUG( "CIRCacheMgmt::OpenCacheDb - Entering" );
+    CloseDb();
+    TInt error = KErrNone;
+    if ( !BaflUtils::FileExists( iFsSession, iDatabaseFileName ) )
+        {
+        //if file doesn't exist function leaves with error code
+        //KErrNotFound
+         return KErrNotFound;
+        }
+    //try and open the db 
+    error = iCacheDb.Open( iFsSession,iDatabaseFileName );
+    //return if error
+    if ( KErrNone != error )
+        {
+        return error;
+        }
+    //check if damaged
+    if ( iCacheDb.IsDamaged() )
+        {
+        //if data base is damaged then 
+        //try to recover
+        error = iCacheDb.Recover();
+        return error;
+        }
+          
+    iOpen = ETrue;
+    
+    IRLOG_DEBUG( "CIRCacheMgmt::OpenCacheDb - Exiting." );
+    return KErrNone;
+    }
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CloseDb()
+// Closes the database 
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::CloseDb()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CloseDb - Entering." );
+    iCacheDb.Close();
+    iOpen = EFalse;
+    IRLOG_DEBUG( "IRCacheMgmt::CloseDb - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CheckCache()
+// API Exposed to Isds Client to check and get the cached items. 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRCacheMgmt::CheckCacheL( TInt aType,const TDesC& aName,
+          TBool aForceGet,TInt& aReturn )   
+    {
+    IRLOG_DEBUG( "CIRCacheMgmt::CheckCacheL - Entering" );
+    //opens the db if not open already
+    if ( !iOpen )
+        {
+        TInt error = OpenCacheDb();
+        if ( KErrNone != error )
+            {
+            aReturn = ENotCached;
+            return; 
+            }
+        }
+    
+    //calls the function FetchCacheIfAvailable() passing the appropriate 
+    //type and id
+      
+    switch( aType )
+    {
+    case ECatagory: 
+    case EChannels:
+    case EPresets:
+    case EOtaInfo:
+    case ELogo:
+        {
+        TRAP_IGNORE( FetchCacheIfAvailableL( aType,aName,aForceGet,aReturn ) )
+        break;  
+        }
+      
+    default:
+        {
+        for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+            {
+            iCacheObservers[i]->CacheFailed();
+            }
+        aReturn = ENotCached;
+        break;  
+        }
+    }
+    CloseDb();
+    IRLOG_DEBUG( "CIRCacheMgmt::CheckCacheL - Exiting." );
+    }
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::FetchCacheIfAvailable()
+// Fetches the cache if available 
+// ---------------------------------------------------------------------------
+//
+//generic function to check the validity of the cache 
+void CIRCacheMgmt::FetchCacheIfAvailableL( TInt aType,const TDesC& aId,
+    TBool aForceGet,TInt& aReturnVal )
+    {
+    //Algo****
+    //1.check the cache table for a request type
+    //2.if the query returns a row,check for validity
+    //3.if invalid( stale ) do a conditional get
+    //4.if valid use cache
+    IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - Entering" );
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = aType AND KDataIdCol=aId
+    _LIT( query, "SELECT * FROM %S WHERE %S = %d AND %S = '%S'" );
+    
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + KCacheTable().Length() +
+                      KDataTypeCol().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aId.Length() );
+                      
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+                           aType,&KDataIdCol,&aId );
+    
+    IRLOG_DEBUG2( "CIRCacheMgmt::FetchCacheIfAvailableL - \
+    Going to evaluate SQL query: %S", sqlQuery );
+    
+    RDbView cacheView;
+    User::LeaveIfError( cacheView.Prepare( iCacheDb,*sqlQuery ) );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    CleanupClosePushL( cacheView );
+    User::LeaveIfError( cacheView.EvaluateAll() );
+    
+    //if no row match the query there is no cahche available for 
+    //that particular 
+    //request
+    if ( cacheView.IsEmptyL() )
+        {
+        //Return ENotCached
+        aReturnVal = ENotCached;
+        }
+    else
+        {
+        cacheView.FirstL();
+        cacheView.GetL();
+        CDbColSet* columns = cacheView.ColSetL();
+        TTime creationTime = cacheView.ColTime(
+            columns->ColNo( KTimeCreation ) );
+            
+        TInt cacheValidityTime = cacheView.ColInt(
+                                 columns->ColNo( KTrustPeriodCol ) );
+            
+        TInt countItems=cacheView.ColInt( columns->ColNo( KItemCount ) );
+        
+        IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - \
+        can check validity." );
+        
+        //check if cache is valid
+        //get it any way if it is "forcedget"
+        if ( aForceGet || CheckValidity( creationTime,cacheValidityTime ) )
+            {
+            //Fetch the cached data
+            //FetchCachedData( type,count,&view  )
+            TRAPD( err,FetchCachedDataL( aType,countItems,cacheView ) );
+            if ( err!=KErrNone )
+                {
+                //something goes wrong ,return not cached and fetch new data
+                aReturnVal = ENotCached;
+                }
+            else
+                {
+                //cache usable
+                aReturnVal = ECacheUseable;
+                }
+            }
+        else
+            {
+            iLastModified = cacheView.ColTime(
+                            columns->ColNo( KLastModifiedCol ) );
+                
+            iETag = cacheView.ColDes8( columns->ColNo( KETagHeader ) );     
+            aReturnVal = ECacheNotValid;
+            cacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                {
+                iCacheObservers[i]->CacheInvalid();
+                }
+            }
+        delete columns; 
+        }
+    CleanupStack::PopAndDestroy( &cacheView );
+    IRLOG_DEBUG( "CIRCacheMgmt::FetchCacheIfAvailableL - Exiting." );
+    
+    }
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::FetchCachedDataL()
+// fetches the cached data from the table into the cached structures
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::FetchCachedDataL( TInt aType,TInt aCountItems,
+      RDbView& aCacheView )
+    {
+    //Algo****
+    //fetch the data and internalize into appropriate structure
+    
+    IRLOG_DEBUG( "CIRCacheMgmt::FetchCachedDataL - Entering" );
+    CDbColSet* columns = aCacheView.ColSetL();
+    TInt columnNo = columns->ColNo( KCachedDataCol );
+    delete columns;
+    switch( aType )
+        {
+        case ECatagory:
+            {
+            //Internalize the category items into the 
+            //CIRBrowseCatagoryItems array
+            RDbColReadStream instream;
+            instream.OpenLC( aCacheView, columnNo );
+            CIRBrowseCatagoryItems* ptr;
+            if ( iPtrCategory )
+                {
+                iPtrCategory->ResetAndDestroy();
+                }
+            else
+                {
+                break;
+                }
+            for ( TInt iter = 0; iter < aCountItems; iter++ )
+                {
+                ptr=CIRBrowseCatagoryItems::NewL();
+                CleanupStack::PushL( ptr );
+                instream>>*ptr;
+                iPtrCategory->AppendL( ptr );
+                CleanupStack::Pop( ptr );
+                }
+            CleanupStack::PopAndDestroy( &instream );
+            //update the last accessed time
+            UpdateLastAccessedTimeL( aCacheView );
+            aCacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                {
+                iCacheObservers[i]->CachedStructureL( ECatagory );
+                }
+            break;
+            }
+        case EChannels:
+            {
+            //Internalize the channel items into 
+            //the CIRBrowseChannelItems array
+            RDbColReadStream instream;
+            instream.OpenLC( aCacheView, columnNo );
+            if ( iPtrChannel )
+                {
+                iPtrChannel->ResetAndDestroy();
+                }
+            CIRBrowseChannelItems *ptr;
+            for ( TInt iter = 0; iter < aCountItems; iter++ )
+                {
+                ptr = CIRBrowseChannelItems::NewL();
+                CleanupStack::PushL( ptr );
+                instream>>*ptr;
+                if ( iPtrChannel )
+                    {                
+                    iPtrChannel->AppendL( ptr );
+                    }
+                CleanupStack::Pop( ptr );
+                }
+            CleanupStack::PopAndDestroy( &instream );
+            //update the last accessed time
+            UpdateLastAccessedTimeL( aCacheView );
+            aCacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                {
+                iCacheObservers[i]->CachedStructureL( EChannels );
+                }
+            break;
+            }
+        case EPresets:
+            {
+            //Internalize the preset  into the CIRIsdsPreset object
+            RDbColReadStream instream;
+            instream.OpenLC( aCacheView, columnNo );
+            if ( iPtrPreset )
+                {
+                iPtrPreset->ResetAndDestroy();
+                }
+            CIRIsdsPreset *ptr;
+            for ( TInt iter = 0; iter < aCountItems; iter++ )
+                {
+                ptr = CIRIsdsPreset::NewL();
+                CleanupStack::PushL( ptr );
+                instream>>*ptr;
+                if ( iPtrPreset )
+                    {                
+                    iPtrPreset->AppendL( ptr );
+                    }
+                CleanupStack::Pop( ptr );
+                }
+            CleanupStack::PopAndDestroy( &instream );
+            //update the last accessed time
+            UpdateLastAccessedTimeL( aCacheView );
+            aCacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                {
+                iCacheObservers[i]->CachedStructureL( EPresets );
+                }
+            break;
+            }
+        case EOtaInfo:
+            {
+            //Internalize the ota info into the CIROTAUpdate object
+            RDbColReadStream instream;
+            instream.OpenLC( aCacheView, columnNo );
+            if ( iOTA )
+                {
+                delete iOTA;
+                iOTA = NULL;
+                iOTA = CIROTAUpdate::NewL();
+                instream>>*iOTA;
+                }
+          
+            CleanupStack::PopAndDestroy( &instream );
+            //update the last accessed time
+            UpdateLastAccessedTimeL( aCacheView );
+            aCacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                 {
+                 iCacheObservers[i]->CachedStructureL( EOtaInfo );
+                 }
+            break;
+            }
+        case ELogo:
+            {
+            //get the logo data from the cache
+            TInt logoSize = aCacheView.ColSize( columnNo );
+            iLogoData.Close();
+            iLogoData.Zero();
+            iLogoData.CreateL( logoSize );
+            
+            RDbColReadStream instream;
+            instream.OpenLC( aCacheView, columnNo );
+            instream.ReadL( iLogoData,aCacheView.ColLength( columnNo ) );
+            CleanupStack::PopAndDestroy( &instream );
+            //update the last accessed time
+            UpdateLastAccessedTimeL( aCacheView );
+            aCacheView.Close();
+            for ( TInt i = 0; i < iCacheObservers.Count(); i++ )
+                {
+                iCacheObservers[i]->CachedStructureL( ELogo );
+                }
+            break;
+            }
+        default:
+            {
+            aCacheView.Close();
+            }
+        }
+    IRLOG_DEBUG( "CIRCacheMgmt::FetchCachedDataL - Exiting." );
+    }
+// ---------------------------------------------------------------------------
+//updates the last accessed field to aid in deletion of old unused data
+//
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::UpdateLastAccessedTimeL( RDbView &aCacheView )
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Entering." );
+    //update the last accessed col
+    CDbColSet* columns = aCacheView.ColSetL();
+    TInt updateColNo = columns->ColNo( KLastAccessedCol );
+    delete columns;
+    TTime currentTime;
+    currentTime.UniversalTime();
+    //update the current time value
+    aCacheView.GetL();
+    aCacheView.UpdateL();
+    aCacheView.SetColL( updateColNo,currentTime );
+    aCacheView.PutL();
+    IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CheckValidity()
+// Checks the freshness of the cache
+// ---------------------------------------------------------------------------
+//
+TBool CIRCacheMgmt::CheckValidity( const TTime& aCreateTime,
+        TInt aTrustPeriod ) const
+    {
+    //Algo****
+    //1.get the last creation time from the table for the request
+    //2.calculate creation-time + trust-period < current-time *
+    //3.if true the cache is valid
+    //4.else do conditional-get
+    IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Entering" );
+    TTimeIntervalSeconds trustPeriod( aTrustPeriod );
+    TTimeIntervalSeconds diff;
+    TTime currentDeviceTime;
+    currentDeviceTime.UniversalTime();
+    currentDeviceTime.SecondsFrom( aCreateTime,diff );
+    //Has the cache expired
+    if ( diff<trustPeriod )
+        {
+        IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Exiting (1)." );
+        return  ETrue;
+        }
+      //Else return false
+     else
+         {
+         IRLOG_DEBUG( "CIRCacheMgmt::CheckValidity - Exiting (2)." );
+         return  EFalse; 
+         }
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CacheCategoryItemsL()
+// Caches the category array of data.By externalizing it into a file.
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRCacheMgmt::CacheCategoryItemsL(
+    CArrayPtrFlat<CIRBrowseCatagoryItems>& aPtrCategory,
+    const TDesC& aName, const CIRHttpResponseData& aResponseHeaders )
+    {
+    //Algo****
+    //1.check if similar request is cached
+    //2.delete if similar request is already present
+    //3.prepare a view for insertion
+    //4.push in the requested data as serialized data
+    
+    IRLOG_DEBUG( "IRCacheMgmt::CacheCategoryItemsL - Entering" );
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    
+    //clear similar data from the cache table before updating it with fresh data
+    //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + KDataTypeCol().Length() +
+                      KCacheTable().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aName.Length() );
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+                           ECatagory,&KDataIdCol,&aName );
+    iCacheDb.Begin();
+    //deletes a similar record if it existed.
+    //no problem if it did not exist
+    iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    iCacheDb.Commit();
+    
+    //get the cached data view for preset column to update with fresh data.
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
+    _LIT( query1,"SELECT * FROM %S WHERE %S = %d" );
+    HBufC* sqlQuery1 = HBufC::NewLC( query1().Length() + 
+                         KDataTypeCol().Length() +
+                       KCacheTable().Length() + 
+                       KDefaultRealWidth );
+    sqlQuery1->Des().Format( query1,&KCacheTable,&KDataTypeCol,ECatagory );
+    
+    RDbView cacheTableView;
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery1 ) );
+    CleanupStack::PopAndDestroy( sqlQuery1 );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );
+    
+    //prepare insertion values
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    TInt countItems=aPtrCategory.Count();
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    //write stream
+    RDbColWriteStream writeStream;
+    //start insertion into the view
+    //insert a new row
+    cacheTableView.InsertL();
+    //set values
+    cacheTableView.SetColL( columns->ColNo( KDataTypeCol ), ECatagory );
+    cacheTableView.SetColL( columns->ColNo( KDataIdCol ), aName );
+    cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+    cacheTableView.SetColL( columns->ColNo( KItemCount ), countItems );
+    //to be set only if available
+    cacheTableView.SetColL( columns->ColNo( KLastModifiedCol ),
+                           aResponseHeaders.iLastModified );
+    cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+    //open stream
+    writeStream.OpenLC( cacheTableView,columns->ColNo( KCachedDataCol ) );
+    for ( TInt iter = 0; iter < countItems; iter++ )
+        {
+        aPtrCategory[iter]->ExternalizeL( writeStream );
+        } 
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    cacheTableView.PutL();
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "IRCacheMgmt::CacheCategoryItemsL - Exiting." );
+    
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CacheChannelItemsL()
+// Caches the channel objects array of data.By externalizing it into a file..
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRCacheMgmt::CacheChannelItemsL(
+    CArrayPtrFlat<CIRBrowseChannelItems>& aPtrChannel,
+    const TDesC& aName,const CIRHttpResponseData& aResponseHeaders )
+    {
+    //Algo****
+    //1.check if similar request is cached
+    //2.delete if similar request is already present
+    //3.prepare a view for insertion
+    //4.push in the cached data request as serialized data
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheChannelItemsL - Entering" );
+    
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    
+    //convert the id information of descriptor to int value for comparision
+    //clear data from the cache table before updating it with fresh data
+    //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + KDataTypeCol().Length() +
+                      KCacheTable().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aName.Length() );
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+    EChannels,&KDataIdCol,&aName );
+    iCacheDb.Begin();
+    //deletes a similar record if it existed.
+    //no problem if it did not exist
+    iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    iCacheDb.Commit();
+    
+    //get the cached data view for preset column to update with fresh data.
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
+    _LIT( query1,"SELECT * FROM %S WHERE %S = %d" );
+    HBufC* sqlQuery1 = HBufC::NewLC( query1().Length() + 
+                       KDataTypeCol().Length() +
+                       KCacheTable().Length() + KDefaultRealWidth );
+    RDbView cacheTableView;
+    sqlQuery1->Des().Format( query1,&KCacheTable,&KDataTypeCol,EChannels ); 
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery1 ) );
+    CleanupStack::PopAndDestroy( sqlQuery1 );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );
+    
+    //prepare insertion values
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    TInt countItems=aPtrChannel.Count();
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    TBuf<KHttpDateLength>lastModified;
+    
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    //write stream
+    RDbColWriteStream writeStream;
+    
+    //start insertion into the view
+    //insert a new row
+    cacheTableView.InsertL();
+    //set values
+    cacheTableView.SetColL( columns->ColNo( KDataTypeCol ), EChannels );
+    cacheTableView.SetColL( columns->ColNo( KDataIdCol ), aName );
+    cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+    cacheTableView.SetColL( columns->ColNo( KItemCount ), countItems );
+    //to be set only if available
+    cacheTableView.SetColL( columns->ColNo( KLastModifiedCol ),
+                           aResponseHeaders.iLastModified );
+    //
+    cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+    //open stream
+    writeStream.OpenLC( cacheTableView,columns->ColNo( KCachedDataCol ) );
+    for ( TInt iter = 0; iter < countItems; iter++ )
+        {
+        aPtrChannel[iter]->ExternalizeL( writeStream );
+        } 
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    cacheTableView.PutL();
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheChannelItemsL - Exiting." );
+    
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CachePresetItemL()
+// Caches the preset object .By externalizing it into a file.
+//multiple presets can be cached at one time
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRCacheMgmt::CachePresetItemL(
+    CArrayPtrFlat<CIRIsdsPreset>& aPtrPresets,
+    const TDesC& aName,const CIRHttpResponseData& aResponseHeaders )
+    {
+    //Algo****
+    //1.check if similar request is cached
+    //2.delete if similar request is already present
+    //3.prepare a view for insertion
+    //4.push in the cached data request as serialized data
+    IRLOG_DEBUG( "CIRCacheMgmt::CachePresetItemL - Entering" );
+    
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    //convert the id information of descriptor to int value for comparision
+    //clear data from the cache table before updating it with fresh data
+    //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + 
+                      KDataTypeCol().Length() +
+                      KCacheTable().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aName.Length() );
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+                           EPresets,&KDataIdCol,&aName );
+    iCacheDb.Begin();
+    //deletes a similar record if it existed.
+    //no problem if it did not exist
+    iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    iCacheDb.Commit();
+    
+    //get the cached data view for preset column to update with fresh data.
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
+    _LIT( query1,"SELECT * FROM %S WHERE %S = %d" );
+    HBufC* sqlQuery1 = HBufC::NewLC( query1().Length() + 
+                       KDataTypeCol().Length() +
+                       KCacheTable().Length() + KDefaultRealWidth );
+    sqlQuery1->Des().Format( query1,&KCacheTable,&KDataTypeCol,EPresets );  
+    RDbView cacheTableView;
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery1 ) );
+    CleanupStack::PopAndDestroy( sqlQuery1 );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );
+    
+    //prepare insertion values
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    TBuf<KHttpDateLength>lastModified;
+    //default time set to 24hrs
+    //use iTrustPeriod
+    //type set to EPresets
+    //id set to dataId
+    //last modified time kept null
+    //item count set to 1
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    //write stream
+    RDbColWriteStream writeStream;
+    TInt countItems;
+    countItems = aPtrPresets.Count();
+    //start insertion into the view
+    //insert a new row
+    cacheTableView.InsertL();
+    //set values
+    cacheTableView.SetColL( columns->ColNo( KDataTypeCol ), EPresets );
+    cacheTableView.SetColL( columns->ColNo( KDataIdCol ), aName );
+    cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+    cacheTableView.SetColL( columns->ColNo( KItemCount ), countItems );
+    //to be set only if available
+    cacheTableView.SetColL( columns->ColNo( KLastModifiedCol ),
+    aResponseHeaders.iLastModified );
+    //
+    cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+    //open stream
+    writeStream.OpenLC( cacheTableView,columns->ColNo( KCachedDataCol ) );
+    for ( TInt iter = 0; iter < countItems; iter++ )
+        {
+        aPtrPresets[iter]->ExternalizeL( writeStream );
+        }
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    cacheTableView.PutL();
+      
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "CIRCacheMgmt::CachePresetItemL - Exiting." );
+    }
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CacheOtaInfoL()
+// Caches the OTA information  .By externalizing it into a db.
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRCacheMgmt::CacheOtaInfoL( const CIROTAUpdate& aOta,
+    const TDesC& aName,
+    const CIRHttpResponseData& aResponseHeaders )
+    {
+    //Algo****
+    //1.check if similar request is cached
+    //2.delete if similar request is already present
+    //3.prepare a view for insertion
+    //4.push in the cached data request as serialized data
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheOtaInfoL - Entering" );
+    
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    //convert the id information of descriptor to int value for comparision
+    //clear data from the cache table before updating it with fresh data
+    //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + 
+                      KDataTypeCol().Length() +
+                      KCacheTable().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aName.Length() );
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+        EOtaInfo,&KDataIdCol,&aName );
+        
+    User::LeaveIfError( iCacheDb.Begin() );
+    //deletes a similar record if it existed.
+    //no problem if it did not exist
+    iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    iCacheDb.Commit();
+    
+    //get the cached data view for preset column to update with fresh data.
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
+    _LIT( query1,"SELECT * FROM %S WHERE %S = %d" );
+    HBufC* sqlQuery1 = HBufC::NewLC( query1().Length() + 
+                       KDataTypeCol().Length() +
+                       KCacheTable().Length() + KDefaultRealWidth );
+        
+    sqlQuery1->Des().Format( query1,&KCacheTable,&KDataTypeCol,EOtaInfo );  
+    RDbView cacheTableView;
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery1 ) );
+    CleanupStack::PopAndDestroy( sqlQuery1 );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );
+    
+    //prepare insertion values
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    TBuf<KHttpDateLength>lastModified;
+    //default time set to 24hrs
+    //use iTrustPeriod
+    //type set to EPresets
+    //id set to dataId
+    //last modified time kept null
+    //item count set to 1
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    //write stream
+    RDbColWriteStream writeStream;
+    //start insertion into the view
+    //insert a new row
+    cacheTableView.InsertL();
+    //set values
+    cacheTableView.SetColL( columns->ColNo( KDataTypeCol ), EOtaInfo );
+    cacheTableView.SetColL( columns->ColNo( KDataIdCol ), aName );
+    cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+    cacheTableView.SetColL( columns->ColNo( KItemCount ), 1 );
+    //to be set only if available
+    cacheTableView.SetColL( columns->ColNo( KLastModifiedCol ),
+                           aResponseHeaders.iLastModified );
+    //
+    cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+    //open stream
+    writeStream.OpenLC( cacheTableView,columns->ColNo( KCachedDataCol ) );
+    aOta.ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    cacheTableView.PutL();
+      
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheOtaInfoL - Exiting." );
+    }
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CacheLogoL()
+// Caches the logo data  .By externalizing it into a db.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRCacheMgmt::CacheLogoL( const TDesC8& aData, const TDesC& aUrl,
+                           const CIRHttpResponseData& aResponseHeaders )
+    {
+    //Algo****
+    //1.check if similar request is cached
+    //2.delete if similar request is already present
+    //3.prepare a view for insertion
+    //4.push in the cached data request as serialized data
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheLogoL - Entering" );
+    
+    
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    //convert the id information of descriptor to int value for comparision
+    //clear data from the cache table before updating it with fresh data
+    //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"DELETE FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + KDataTypeCol().Length() +
+                      KCacheTable().Length() + KDataIdCol().Length() +
+                      KDefaultRealWidth + aUrl.Length() );
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+                           ELogo,&KDataIdCol,&aUrl );
+    iCacheDb.Begin();
+    //deletes a similar record if it existed.
+    //no problem if it did not exist
+    iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    iCacheDb.Commit();  
+    
+    //get the cached data view for preset column to update with fresh data.
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE
+    _LIT( query1,"SELECT * FROM %S WHERE %S = %d" );
+    HBufC* sqlQuery1 = HBufC::NewLC( query1().Length() + KDataTypeCol().Length() +
+                       KCacheTable().Length() + KDefaultRealWidth );
+    sqlQuery1->Des().Format( query1,&KCacheTable,&KDataTypeCol,ELogo ); 
+    RDbView cacheTableView;
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery1 ) );
+    CleanupStack::PopAndDestroy( sqlQuery1 );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );   
+    
+    //prepare insertion values
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    TBuf<KHttpDateLength>lastModified;
+    //default time set to 24hrs
+    //use iTrustPeriod
+    //type set to ELogo
+    //id set to dataId
+    //last modified time kept null
+    //item count set to 1
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    //write stream
+    //start insertion into the view
+    //insert a new row
+    cacheTableView.InsertL();
+    //set values
+    cacheTableView.SetColL( columns->ColNo( KDataTypeCol ), ELogo );
+    cacheTableView.SetColL( columns->ColNo( KDataIdCol ), aUrl );
+    cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+    cacheTableView.SetColL( columns->ColNo( KItemCount ), 1 );
+    //to be set only if available
+    cacheTableView.SetColL( columns->ColNo( KLastModifiedCol ),
+    aResponseHeaders.iLastModified );
+    //
+    cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+    cacheTableView.SetColL( columns->ColNo( KCachedDataCol ), aData );
+    
+    cacheTableView.SetColL( columns->ColNo( KETagHeader ), 
+                           aResponseHeaders.iETag );
+    
+    cacheTableView.PutL();
+    
+      
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "CIRCacheMgmt::CacheLogoL - Exiting." );         
+        
+    }
+  
+  
+  
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CreateCacheTableL()
+// creates the cache table
+// ---------------------------------------------------------------------------
+//
+//CacheTable
+// -----------------------------------------------------------------------------------------------------
+//| RowIndex|DataType|DataId|TrustPeriod|LastModified  |LastAccessed|Created|ItemCount|CachedData|
+//------------------------------------------------------------------------------------------------
+//| auto    |TInt    |DesC  |TInt       |TDesC/DateTime|TTime       |Time   |TInt     | Streamed |
+//|increment|0,1,2,NotNull|NotNull|  NotNull  |              |            |       |         | Data     |
+//------------------------------------------------------------------------------------------------------
+void CIRCacheMgmt::CreateCacheTableL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CreateCacheTableL - Entering." );
+    //the row index column which autoincrements
+    TDbCol rowIndexCol( KRowIndexCol, EDbColInt32 );   
+    rowIndexCol.iAttributes = TDbCol::EAutoIncrement;
+    
+    //the datatype column,to identify between   ECatagory = 0,EChannels=1,EPresets=2
+    TDbCol dataTypeCol( KDataTypeCol, EDbColInt32 );
+    dataTypeCol.iAttributes = TDbCol::ENotNull;
+     
+    //the dataID column,to uniquely identify the cached data
+    TDbCol dataId( KDataIdCol, EDbColLongText16 );
+    dataId.iAttributes = TDbCol::ENotNull; 
+    
+    //the trust period column to calculate cache validity
+    TDbCol trustPeriodCol( KTrustPeriodCol, EDbColInt32 );
+    
+    //the lastmodified column to fetch data conditionally
+    TDbCol lastModifiedCol( KLastModifiedCol, EDbColDateTime );
+    
+    
+    //the last accessed column used for table clean-up
+    TDbCol creationTimeCol( KTimeCreation, EDbColDateTime );
+      
+    //the time of creation saved to calculate the cache validity
+    TDbCol lastAccessedCol( KLastAccessedCol, EDbColDateTime );
+    
+    //the number of items in the data field
+    TDbCol itemCountCol( KItemCount, EDbColInt32 );
+    
+    //the data column to store cached data
+    //The column stores a potentially large amount of Unicode text data.
+    TDbCol cachedDataCol( KCachedDataCol, EDbColLongText8 );
+    
+    //the ETag header received along with the logo data
+    TDbCol etagHeader( KETagHeader, EDbColText8 );
+    
+    //colset
+    CDbColSet* cacheTablerColSet = CDbColSet::NewLC();
+    //populate colset
+    cacheTablerColSet->AddL( rowIndexCol );
+    cacheTablerColSet->AddL( dataTypeCol );
+    cacheTablerColSet->AddL( dataId );
+    cacheTablerColSet->AddL( trustPeriodCol );
+    cacheTablerColSet->AddL( lastModifiedCol );
+    cacheTablerColSet->AddL( creationTimeCol );
+    cacheTablerColSet->AddL( lastAccessedCol );
+    cacheTablerColSet->AddL( itemCountCol );
+    cacheTablerColSet->AddL( cachedDataCol );
+    cacheTablerColSet->AddL( etagHeader );
+    
+    // Create the CacheTable table
+    User::LeaveIfError( iCacheDb.CreateTable( KCacheTable, *cacheTablerColSet ) );
+    
+    CleanupStack::PopAndDestroy( cacheTablerColSet ); 
+    IRLOG_DEBUG( "IRCacheMgmt::CreateCacheTableL - Exiting." );
+    }
+  
+// ---------------------------------------------------------------------------
+// Function : CIRCacheMgmt::CreateCacheIndexL()
+// creates the indices for cache table
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::CreateCacheIndexL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CreateCacheIndexL - Entering." );
+    TDbKeyCol rowIndexCol( KRowIndexCol );
+    TDbKeyCol dataTypeCol( KDataTypeCol );
+    TDbKeyCol dataIdCol( KDataIdCol,KDataIdIndexSize );
+    TDbKeyCol timeCreationCol( KTimeCreation );
+    TDbKeyCol lastAccessedCol( KLastAccessedCol );
+     
+    CDbKey* index;
+    //index on the auto increment row id
+    index = CDbKey::NewLC();   
+    index->AddL( rowIndexCol );
+    User::LeaveIfError( iCacheDb.CreateIndex( KRowIndexColIndex, KCacheTable,
+       *index ) );
+    CleanupStack::PopAndDestroy( index );
+    
+    //index on the datatype column
+    index = CDbKey::NewLC();   
+    index->AddL( dataTypeCol );
+    User::LeaveIfError( iCacheDb.CreateIndex( KDataTypeColIndex, KCacheTable, 
+      *index ) );
+    CleanupStack::PopAndDestroy( index );
+    
+    //index on the data id column
+    index = CDbKey::NewLC();   
+    index->AddL( dataIdCol );
+    User::LeaveIfError( iCacheDb.CreateIndex( KDataIdColIndex, KCacheTable, 
+      *index ) );
+    CleanupStack::PopAndDestroy( index );
+    
+    //index on the time of record creation column
+    index = CDbKey::NewLC();   
+    index->AddL( timeCreationCol );
+    User::LeaveIfError( iCacheDb.CreateIndex( KTimeCreationIndex, KCacheTable, 
+      *index ) );
+    CleanupStack::PopAndDestroy( index );
+    
+    //index on the last accessed column
+    index = CDbKey::NewLC();   
+    index->AddL( lastAccessedCol );
+    User::LeaveIfError( iCacheDb.CreateIndex( KLastAccessedColIndex, KCacheTable,
+       *index ) );
+    CleanupStack::PopAndDestroy( index );
+    IRLOG_DEBUG( "IRCacheMgmt::CreateCacheIndexL - Exiting." );
+    }
+// ---------------------------------------------------------------------------
+//void CIRCacheMgmt::UpdateTrustPeriod()
+//updates the trust period for a not-modified responce
+// ---------------------------------------------------------------------------
+
+//
+EXPORT_C void CIRCacheMgmt::UpdateTrustPeriodL( TInt aType, const TDesC& aName,
+    CIRHttpResponseData& aResponseHeaders )
+    { 
+    IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriodL - Entering" );
+    TInt error = OpenCacheDb();
+    if ( KErrNone != error )
+        {
+          IRLOG_ERROR2( "IRCacheMgmt::UpdateTrustPeriodL - \
+          Error while opening cache DB (%d).", error );      
+        //no problems if this function returns here.
+        //normal flow won't get affected.
+        //only a particular request wont get cached
+        return; 
+        }
+    
+    //SELECT * FROM KCacheTable WHERE KDataTypeCol = TYPE AND KDataIdCol = DATAID 
+    _LIT( query,"SELECT * FROM %S WHERE %S = %d AND %S = '%S'" );
+    HBufC* sqlQuery = HBufC::NewLC( query().Length() + KCacheTable().Length() +
+                      KDataIdCol().Length() + KDataTypeCol().Length() + aName.Length()+
+                      KDefaultRealWidth );
+       
+    sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,
+                           aType,&KDataIdCol,&aName );
+        
+    //create view
+    RDbView cacheTableView;
+    User::LeaveIfError( cacheTableView.Prepare( iCacheDb,*sqlQuery ) );
+    CleanupStack::PopAndDestroy( sqlQuery );
+    CleanupClosePushL( cacheTableView );
+    
+    User::LeaveIfError( cacheTableView.EvaluateAll() );
+    
+    //prepare the update data
+    //will go into last accessed aswell as the creation time fields
+    TTime currentTime;
+    currentTime.UniversalTime();
+    //get the new trust period from the headers
+    TInt maxAge;
+    if ( aResponseHeaders.iMaxAge.Length() == 0 )
+        {
+        maxAge=iTrustPeriod.Int();
+        }
+    else
+        {
+        TLex8 conv( aResponseHeaders.iMaxAge );
+        conv.Val( maxAge ); 
+        maxAge = maxAge * KDefaultInterval;
+        }
+    CDbColSet* columns = cacheTableView.ColSetL();
+    CleanupStack::PushL( columns );
+    cacheTableView.FirstL();
+    if ( cacheTableView.AtRow() )
+        {
+        cacheTableView.UpdateL();
+        //update values
+        cacheTableView.SetColL( columns->ColNo( KTrustPeriodCol ), maxAge );
+        cacheTableView.SetColL( columns->ColNo( KLastAccessedCol ), currentTime );
+        cacheTableView.SetColL( columns->ColNo( KTimeCreation ), currentTime );
+        cacheTableView.PutL();
+        }
+    
+    CleanupStack::PopAndDestroy( columns );
+    CleanupStack::PopAndDestroy( &cacheTableView );
+    CloseDb();
+    IRLOG_DEBUG( "IRCacheMgmt::UpdateTrustPeriod - Exiting." ); 
+    }
+  
+// ---------------------------------------------------------------------------
+//  Used to dcontrol the cache table size by compacting and clearing up unused items
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::CheckSizeL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CheckSizeL - Entering." );
+    OpenCacheDb();
+    RDbDatabase::TSize dbSize = iCacheDb.Size();
+    iCacheDbSize = dbSize.iSize;
+    TInt size = CacheSize();
+    if ( size >= KCacheCriticalSizeLimit )
+        {
+        RemoveOldUnusedDataL();
+        OpenCacheDb();
+        iCacheDb.Compact();
+        //refresh the size information
+        dbSize = iCacheDb.Size();
+        iCacheDbSize = dbSize.iSize;
+        }
+    CloseDb();
+    IRLOG_DEBUG( "IRCacheMgmt::CheckSizeL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Used to control the cache table size by compacting and clearing up unused items
+// ---------------------------------------------------------------------------
+//
+void CIRCacheMgmt::RemoveOldUnusedDataL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveOldUnusedDataL - Entering." );
+    OpenCacheDb();
+    RDbTable cacheTable;
+    //open the table in updatable mode
+    User::LeaveIfError( cacheTable.Open( iCacheDb, KCacheTable, 
+        cacheTable.EUpdatable ) );
+    CleanupClosePushL( cacheTable );
+    cacheTable.Reset();
+    //set index as the last accessed time
+    cacheTable.SetIndex( KLastAccessedCol );
+    //begin transaction
+    iCacheDb.Begin();
+    // no of rows deleted is one fourth of the total number of rows
+    TInt deleteRows = cacheTable.CountL()/KPercentRowsDeleted;
+    TInt inc = 0;
+    //delete incrementally
+    for ( cacheTable.FirstL(); ( ( inc < deleteRows ) && cacheTable.AtRow() ); inc++ )
+        {
+        cacheTable.GetL();
+        cacheTable.DeleteL();
+        cacheTable.NextL();
+        }
+    //commit transaction
+    iCacheDb.Commit();
+    CleanupStack::PopAndDestroy( &cacheTable );
+    CloseDb();
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveOldUnusedDataL - Exiting." );
+    }
+  
+// ---------------------------------------------------------------------------
+// Used to get the cache table size
+// ---------------------------------------------------------------------------
+//
+TInt CIRCacheMgmt::CacheSize()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::CacheSize - Entering." );
+    OpenCacheDb();
+    RDbDatabase::TSize dbSize = iCacheDb.Size();
+    iCacheDbSize = dbSize.iSize;
+    CloseDb();
+    IRLOG_DEBUG( "IRCacheMgmt::CacheSize - Exiting." );
+    return iCacheDbSize;
+    }
+// ---------------------------------------------------------------------------
+//remove OTA info from cache if data is not valid any longer
+// ---------------------------------------------------------------------------
+EXPORT_C void CIRCacheMgmt::RemoveOtaInfoL()
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveOtaInfoL - Entering." );
+    //check if the silence period param is set.
+    //if not set that means the cached ota info if present is not valid.
+    if ( iSettings->GetSilencePeriodL() == 0 )
+        {
+        TInt error = OpenCacheDb();
+        if ( KErrNone != error )
+            {
+            //no problems if this function returns here.
+            //normal flow won't get affected.
+            //only a particular request wont get cached
+            return; 
+            }
+        //clear data from the cache table 
+        //DELETE FROM KCacheTable WHERE KDataTypeCol = TYPE 
+        _LIT( query,"DELETE FROM %S WHERE %S = %d" );
+        HBufC* sqlQuery = HBufC::NewLC( query().Length() + 
+                          KDataTypeCol().Length() +
+                          KCacheTable().Length() + KDataIdCol().Length() );
+        sqlQuery->Des().Format( query,&KCacheTable,&KDataTypeCol,EOtaInfo );
+        User::LeaveIfError( iCacheDb.Begin() );
+        //no problem if it did not exist
+        iCacheDb.Execute( *sqlQuery,EDbCompareNormal );
+        CleanupStack::PopAndDestroy( sqlQuery );
+        iCacheDb.Commit();
+            CloseDb();
+        }
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveOtaInfoL - Exiting." );
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// Adds a cache observer
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRCacheMgmt::AddObserverL( MIRCacheObserver* aObserver )
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::AddObserverL - Entering." );
+    iCacheObservers.AppendL( aObserver );
+    IRLOG_DEBUG( "IRCacheMgmt::AddObserverL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Removes a cache observer
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRCacheMgmt::RemoveObserver( MIRCacheObserver* aObserver )
+    {
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveObserver - Entering." );
+    TInt objectIndex = iCacheObservers.Find( aObserver );
+    
+    if ( objectIndex != KErrNotFound )
+        {
+        iCacheObservers.Remove( objectIndex );
+        }
+    IRLOG_DEBUG( "IRCacheMgmt::RemoveObserver - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/bmarm/irdatastructuresu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +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
+	_ZN13CIRIsdsPreset10SetImgUrlLERK7TDesC16 @ 9 NONAME
+	_ZN13CIRIsdsPreset11SetGenreIdLERK7TDesC16 @ 10 NONAME
+	_ZN13CIRIsdsPreset11SetUrlCountEi @ 11 NONAME
+	_ZN13CIRIsdsPreset11SetUrlCountEv @ 12 NONAME
+	_ZN13CIRIsdsPreset12ExternalizeLER12RWriteStream @ 13 NONAME
+	_ZN13CIRIsdsPreset12InternalizeLER11RReadStream @ 14 NONAME
+	_ZN13CIRIsdsPreset12SetLangCodeLERK7TDesC16 @ 15 NONAME
+	_ZN13CIRIsdsPreset12SetLangInfoLERK7TDesC16S2_ @ 16 NONAME
+	_ZN13CIRIsdsPreset12SetLogoDataLERK6TDesC8 @ 17 NONAME
+	_ZN13CIRIsdsPreset13SetGenreInfoLERK7TDesC16S2_ @ 18 NONAME
+	_ZN13CIRIsdsPreset13SetGenreNameLERK7TDesC16 @ 19 NONAME
+	_ZN13CIRIsdsPreset13SetShortDescLERK7TDesC16 @ 20 NONAME
+	_ZN13CIRIsdsPreset14SetChannelTypeEi @ 21 NONAME
+	_ZN13CIRIsdsPreset15SetCountryCodeLERK7TDesC16 @ 22 NONAME
+	_ZN13CIRIsdsPreset15SetCountryInfoLERK7TDesC16S2_ @ 23 NONAME
+	_ZN13CIRIsdsPreset15SetCountryNameLERK7TDesC16 @ 24 NONAME
+	_ZN13CIRIsdsPreset15SetDescriptionLERK7TDesC16 @ 25 NONAME
+	_ZN13CIRIsdsPreset17GetUrlForBitrateLEi @ 26 NONAME
+	_ZN13CIRIsdsPreset18GetChannelBitrateLEi @ 27 NONAME
+	_ZN13CIRIsdsPreset20SetAdvertisementUrlLERK7TDesC16 @ 28 NONAME
+	_ZN13CIRIsdsPreset20SetLastModifiedTimeLERK7TDesC16 @ 29 NONAME
+	_ZN13CIRIsdsPreset20SetMusicStoreStatusLERK7TDesC16 @ 30 NONAME
+	_ZN13CIRIsdsPreset22GetExactUrlForBitrateLEi @ 31 NONAME
+	_ZN13CIRIsdsPreset22SetAdvertisementInUseLERK7TDesC16 @ 32 NONAME
+	_ZN13CIRIsdsPreset4NewLEv @ 33 NONAME
+	_ZN13CIRIsdsPreset5NewLCEv @ 34 NONAME
+	_ZN13CIRIsdsPreset5SetIdERK7TDesC16 @ 35 NONAME
+	_ZN13CIRIsdsPreset5SetIdEi @ 36 NONAME
+	_ZN13CIRIsdsPreset6GetUrlEi @ 37 NONAME
+	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_S2_ @ 38 NONAME
+	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_i @ 39 NONAME
+	_ZN13CIRIsdsPreset8SetLangLERK7TDesC16 @ 40 NONAME
+	_ZN13CIRIsdsPreset8SetNameLERK7TDesC16 @ 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
+	_ZN21CIRBrowseChannelItems12InternalizeLER11RReadStream @ 69 NONAME
+	_ZN21CIRBrowseChannelItems12SetBannerUrlERK7TDesC16 @ 70 NONAME
+	_ZN21CIRBrowseChannelItems12SetImageUrlLERK7TDesC16 @ 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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/bwinscw/irdatastructuresu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,114 @@
+EXPORTS
+	?SetNameL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 1  NONAME ; void CIRIsdsPreset::SetNameL(class TDesC16 const &)
+	?NewLC@CIRBrowseChannelItems@@SAPAV1@XZ @ 2  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewLC(void)
+	?SetSize@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 3  NONAME ; void CIRBrowseChannelItems::SetSize(class TDesC16 const &)
+	?GetUrl@CIRIsdsPreset@@QAEAAVCIRChannelServerUrl@@H@Z @ 4  NONAME ; class CIRChannelServerUrl & CIRIsdsPreset::GetUrl(int)
+	?ExternalizeL@CIRLastPlayedSongs@@QAEXAAVRWriteStream@@@Z @ 5  NONAME ; void CIRLastPlayedSongs::ExternalizeL(class RWriteStream &)
+	?GetShortDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 6  NONAME ; class TDesC16 const & CIRIsdsPreset::GetShortDescription(void) const
+	?GetLastModifiedTime@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 7  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLastModifiedTime(void) const
+	?GetLangId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 8  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangId(void) 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
+	?SetGenreNameL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 11  NONAME ; void CIRIsdsPreset::SetGenreNameL(class TDesC16 const &)
+	?SetUsage@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 12  NONAME ; void CIRAdvertisement::SetUsage(class TDesC16 const &)
+	?NewL@CIROTAUpdate@@SAPAV1@XZ @ 13  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewL(void)
+	?GetUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 14  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetUrlForBitrateL(int)
+	??4CIRIsdsPreset@@QAEAAV0@ABV0@@Z @ 15  NONAME ; class CIRIsdsPreset & CIRIsdsPreset::operator=(class CIRIsdsPreset const &)
+	?SetLogoDataL@CIRIsdsPreset@@QAEXABVTDesC8@@@Z @ 16  NONAME ; void CIRIsdsPreset::SetLogoDataL(class TDesC8 const &)
+	?SetVisibleTime@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 17  NONAME ; void CIRAdvertisement::SetVisibleTime(class TDesC16 const &)
+	?GetSongName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 18  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetSongName(void)
+	?SetCountryNameL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 19  NONAME ; void CIRIsdsPreset::SetCountryNameL(class TDesC16 const &)
+	?GetCountryName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 20  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryName(void) const
+	?SetChannelType@CIRIsdsPreset@@QAEXH@Z @ 21  NONAME ; void CIRIsdsPreset::SetChannelType(int)
+	?ConstructL@CIRAdvertisement@@QBEXXZ @ 22  NONAME ; void CIRAdvertisement::ConstructL(void) const
+	?InternalizeL@CIRChannelServerUrl@@QAEXAAVRReadStream@@@Z @ 23  NONAME ; void CIRChannelServerUrl::InternalizeL(class RReadStream &)
+	?GetChannelType@CIRIsdsPreset@@QBEHXZ @ 24  NONAME ; int CIRIsdsPreset::GetChannelType(void) const
+	?SetAdvertisementInUseL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 25  NONAME ; void CIRIsdsPreset::SetAdvertisementInUseL(class TDesC16 const &)
+	?SetLangL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 26  NONAME ; void CIRIsdsPreset::SetLangL(class TDesC16 const &)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 27  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?GetMusicStoreStatus@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 28  NONAME ; class TDesC16 const & CIRIsdsPreset::GetMusicStoreStatus(void) const
+	?SetClickThroughUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 29  NONAME ; void CIRBrowseCatagoryItems::SetClickThroughUrl(class TDesC16 const &)
+	?NewLC@CIRLastPlayedSongs@@SAPAV1@XZ @ 30  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewLC(void)
+	?NewLC@CIRChannelServerUrl@@SAPAV1@XZ @ 31  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewLC(void)
+	?InternalizeL@CIRIsdsPreset@@QAEXAAVRReadStream@@@Z @ 32  NONAME ; void CIRIsdsPreset::InternalizeL(class RReadStream &)
+	?SetUrlCount@CIRIsdsPreset@@QAEXXZ @ 33  NONAME ; void CIRIsdsPreset::SetUrlCount(void)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 34  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &)
+	?NewL@CIRAdvertisement@@SAPAV1@XZ @ 35  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewL(void)
+	?NewL@CIRChannelServerUrl@@SAPAV1@XZ @ 36  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewL(void)
+	?GetUrlCount@CIRIsdsPreset@@QBEHXZ @ 37  NONAME ; int CIRIsdsPreset::GetUrlCount(void) const
+	?SetDescriptionL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 38  NONAME ; void CIRIsdsPreset::SetDescriptionL(class TDesC16 const &)
+	?NewL@CIRLastPlayedSongs@@SAPAV1@XZ @ 39  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewL(void)
+	?NewL@CIRIsdsPreset@@SAPAV1@XZ @ 40  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewL(void)
+	?SetClickThroughUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 41  NONAME ; void CIRBrowseChannelItems::SetClickThroughUrl(class TDesC16 const &)
+	?GetDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 42  NONAME ; class TDesC16 const & CIRIsdsPreset::GetDescription(void) const
+	?SetSize@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 43  NONAME ; void CIRBrowseCatagoryItems::SetSize(class TDesC16 const &)
+	?ExternalizeL@CIRChannelServerUrl@@QAEXAAVRWriteStream@@@Z @ 44  NONAME ; void CIRChannelServerUrl::ExternalizeL(class RWriteStream &)
+	?SetServerUrl@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 45  NONAME ; void CIRChannelServerUrl::SetServerUrl(class TDesC16 const &)
+	?SetLangCodeL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 46  NONAME ; void CIRIsdsPreset::SetLangCodeL(class TDesC16 const &)
+	?SetGetOperationL@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 47  NONAME ; void CIRBrowseChannelItems::SetGetOperationL(class TDesC16 const &)
+	?NewLC@CIRIsdsPreset@@SAPAV1@XZ @ 48  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewLC(void)
+	?InternalizeL@CIROTAUpdate@@QAEXAAVRReadStream@@@Z @ 49  NONAME ; void CIROTAUpdate::InternalizeL(class RReadStream &)
+	?GetCountryId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 50  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryId(void) const
+	?GetImgUrl@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 51  NONAME ; class TDesC16 const & CIRIsdsPreset::GetImgUrl(void) const
+	?SetCountryInfoL@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 52  NONAME ; void CIRIsdsPreset::SetCountryInfoL(class TDesC16 const &, class TDesC16 const &)
+	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@0H@Z @ 53  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &, class TDesC16 const &, int)
+	?SetAdvertisementUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 54  NONAME ; void CIRIsdsPreset::SetAdvertisementUrlL(class TDesC16 const &)
+	?GetServerUrl@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 55  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerUrl(void) const
+	?NewLC@CIRAdvertisement@@SAPAV1@XZ @ 56  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewLC(void)
+	?NewLC@CIRBrowseCatagoryItems@@SAPAV1@XZ @ 57  NONAME ; class CIRBrowseCatagoryItems * CIRBrowseCatagoryItems::NewLC(void)
+	?SetGetOperation@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 58  NONAME ; void CIRBrowseCatagoryItems::SetGetOperation(class TDesC16 const &)
+	?ExternalizeL@CIROTAUpdate@@QBEXAAVRWriteStream@@@Z @ 59  NONAME ; void CIROTAUpdate::ExternalizeL(class RWriteStream &) const
+	?GetName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 60  NONAME ; class TDesC16 const & CIRIsdsPreset::GetName(void) const
+	?GetServerName@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 61  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerName(void) const
+	?SetTextL@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 62  NONAME ; void CIRBrowseChannelItems::SetTextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?SetShortDescL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 63  NONAME ; void CIRIsdsPreset::SetShortDescL(class TDesC16 const &)
+	?GetChannelBitrateL@CIRIsdsPreset@@QAEHH@Z @ 64  NONAME ; int CIRIsdsPreset::GetChannelBitrateL(int)
+	?GetId@CIRIsdsPreset@@QBEHXZ @ 65  NONAME ; int CIRIsdsPreset::GetId(void) const
+	?GetLangName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 66  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangName(void) const
+	?SetOTAUrl@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 67  NONAME ; void CIROTAUpdate::SetOTAUrl(class TDesC16 const &)
+	?GetArtistName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 68  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetArtistName(void)
+	?SetId@CIRIsdsPreset@@QAEXH@Z @ 69  NONAME ; void CIRIsdsPreset::SetId(int)
+	?SetGenreIdL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 70  NONAME ; void CIRIsdsPreset::SetGenreIdL(class TDesC16 const &)
+	?SetUrlCount@CIRIsdsPreset@@QAEXH@Z @ 71  NONAME ; void CIRIsdsPreset::SetUrlCount(int)
+	?ConstructL@CIROTAUpdate@@QAEXXZ @ 72  NONAME ; void CIROTAUpdate::ConstructL(void)
+	?InternalizeL@CIRBrowseCatagoryItems@@QAEXAAVRReadStream@@@Z @ 73  NONAME ; void CIRBrowseCatagoryItems::InternalizeL(class RReadStream &)
+	?SetURL@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 74  NONAME ; void CIRAdvertisement::SetURL(class TDesC16 const &)
+	?ExternalizeL@CIRBrowseChannelItems@@QBEXAAVRWriteStream@@@Z @ 75  NONAME ; void CIRBrowseChannelItems::ExternalizeL(class RWriteStream &) const
+	?GetBitRate@CIRChannelServerUrl@@QBEHXZ @ 76  NONAME ; int CIRChannelServerUrl::GetBitRate(void) const
+	?SetImgUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 77  NONAME ; void CIRIsdsPreset::SetImgUrlL(class TDesC16 const &)
+	?NewLC@CIROTAUpdate@@SAPAV1@XZ @ 78  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewLC(void)
+	?SetUpdateInterval@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 79  NONAME ; void CIROTAUpdate::SetUpdateInterval(class TDesC16 const &)
+	?SetCountryCodeL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 80  NONAME ; void CIRIsdsPreset::SetCountryCodeL(class TDesC16 const &)
+	?ExternalizeL@CIRBrowseCatagoryItems@@QBEXAAVRWriteStream@@@Z @ 81  NONAME ; void CIRBrowseCatagoryItems::ExternalizeL(class RWriteStream &) const
+	?GetAvailableBitrates@CIRIsdsPreset@@QBEHAAV?$RArray@H@@@Z @ 82  NONAME ; int CIRIsdsPreset::GetAvailableBitrates(class RArray<int> &) const
+	?ExternalizeL@CIRIsdsPreset@@QAEXAAVRWriteStream@@@Z @ 83  NONAME ; void CIRIsdsPreset::ExternalizeL(class RWriteStream &)
+	?GetChannelUrlAtL@CIRIsdsPreset@@QBEABVTDesC16@@H@Z @ 84  NONAME ; class TDesC16 const & CIRIsdsPreset::GetChannelUrlAtL(int) const
+	?SetImageUrlL@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 85  NONAME ; void CIRBrowseChannelItems::SetImageUrlL(class TDesC16 const &)
+	?GetExactUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 86  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetExactUrlForBitrateL(int)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@0@Z @ 87  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &)
+	?SetSongName@CIRLastPlayedSongs@@QAEXABVTDesC16@@@Z @ 88  NONAME ; void CIRLastPlayedSongs::SetSongName(class TDesC16 const &)
+	?NewL@CIRBrowseChannelItems@@SAPAV1@XZ @ 89  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewL(void)
+	?SetTextL@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@0@Z @ 90  NONAME ; void CIRBrowseCatagoryItems::SetTextL(class TDesC16 const &, class TDesC16 const &)
+	?SetGenreInfoL@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 91  NONAME ; void CIRIsdsPreset::SetGenreInfoL(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 &)
+	?SetLangInfoL@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 94  NONAME ; void CIRIsdsPreset::SetLangInfoL(class TDesC16 const &, class TDesC16 const &)
+	?InternalizeL@CIRBrowseChannelItems@@QAEXAAVRReadStream@@@Z @ 95  NONAME ; void CIRBrowseChannelItems::InternalizeL(class RReadStream &)
+	?SetUpdateMethod@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 96  NONAME ; void CIROTAUpdate::SetUpdateMethod(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 &)
+	?SetBannerUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 102  NONAME ; void CIRBrowseCatagoryItems::SetBannerUrl(class TDesC16 const &)
+	?SetServerName@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 103  NONAME ; void CIRChannelServerUrl::SetServerName(class TDesC16 const &)
+	?SetBitRate@CIRChannelServerUrl@@QAEXH@Z @ 104  NONAME ; void CIRChannelServerUrl::SetBitRate(int)
+	?GetAdvertisementInUse@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 105  NONAME ; class TDesC16 const & CIRIsdsPreset::GetAdvertisementInUse(void) const
+	?SetAdvInUse@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 106  NONAME ; void CIRAdvertisement::SetAdvInUse(class TDesC16 const &)
+	?InternalizeL@CIRLastPlayedSongs@@QAEXAAVRReadStream@@@Z @ 107  NONAME ; void CIRLastPlayedSongs::InternalizeL(class RReadStream &)
+	?SetMusicStoreStatusL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 108  NONAME ; void CIRIsdsPreset::SetMusicStoreStatusL(class TDesC16 const &)
+	?SetVersion@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 109  NONAME ; void CIROTAUpdate::SetVersion(class TDesC16 const &)
+	?SetLastModifiedTimeL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 110  NONAME ; void CIRIsdsPreset::SetLastModifiedTimeL(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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+PRJ_MMPFILES
+ircommon.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/group/ircommon.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+#include 		<platform_paths.hrh>
+
+TARGET        irdatastructures.dll
+TARGETTYPE    dll
+UID            0x1000008d 0x2000B49A
+
+PAGED
+
+SOURCEPATH    ../src
+
+SOURCE		irbrowsecatagoryitems.cpp
+SOURCE		irchannelserverurl.cpp
+SOURCE		irisdspreset.cpp
+SOURCE		irbrowsechannelitems.cpp
+SOURCE		iradvertisement.cpp
+SOURCE		irotaupdate.cpp
+SOURCE		irlastplayedsongs.cpp
+
+USERINCLUDE    ../inc
+USERINCLUDE    ../../inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             estor.lib
+LIBRARY             euser.lib
+
+LIBRARY        flogger.lib
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY				CAP_GENERAL_DLL
+
+#if defined( WINSCW )
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/iradvertisement.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IRADVERTISEMENT_H
+#define IRADVERTISEMENT_H
+
+#include <e32base.h>
+
+/**
+ * This class is being used by xml parser.
+ * code is ready to support advertisement
+ * not being used in current release
+ */
+class CIRAdvertisement : public CBase
+    {
+    public :
+        
+    /**
+     * CIRAdvertisement::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return CIRAdvertisement*
+     */
+    IMPORT_C static CIRAdvertisement* NewLC();
+    
+    /**
+     * CIRAdvertisement::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return CIRAdvertisement*
+     */
+    IMPORT_C static CIRAdvertisement* NewL();
+    
+    /**
+     * CIRAdvertisement::ConstructL()
+     * standard second phase constructor
+     */
+    IMPORT_C void ConstructL() const;
+    
+    /**
+     *CIRAdvertisement::~CIRAdvertisement()
+     *standard C++ destructor
+     */
+    ~CIRAdvertisement();
+    
+    /**
+     *CIRAdvertisement::SetAdvInUse()
+     *Function to set the advertisement in use
+     *@param TDesC
+     */
+    IMPORT_C void SetAdvInUse( const TDesC& aAdvInUse );
+    
+    /**
+     *CIRAdvertisement::SetUsage()
+     *Function to set the url of the global advertisement
+     *@param TDesC
+     */
+	IMPORT_C void SetUsage( const TDesC& aUsageVisibleTimes );
+	
+    /**
+     * CIRAdvertisement::SetVisibleTime()
+     * Function to set the duration of the advertisement to be displayed
+     * @param TDesC
+     */
+    IMPORT_C void SetVisibleTime( const TDesC& aVisibleTime );
+    
+    /**
+     * CIRAdvertisement::SetURL()
+     * Function to set the url of the global advertisement
+     * @param TDesC
+     */
+    IMPORT_C void SetURL( const TDesC& aUrl );
+    
+    private :
+    // url to fetch the ad from		
+    HBufC* iUrl;
+    // url of the current ad in use
+    HBufC* iAdvInUse; 
+    // defines the time for which the ad is visible
+    TInt iVisibleTime;
+    // no of times the ad to be shown
+    TInt iUsageVisibleTimes;
+   };
+    
+#endif//IRADVERTISEMENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irbrowsecatagoryitems.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IRBROWSECATAGORYITEMS_H
+#define IRBROWSECATAGORYITEMS_H
+
+#include <e32base.h>
+
+class RReadStream;
+class RWriteStream;
+
+/**
+ * This class provides the basic structure to hold the browse information 
+ * information that come from the isds server.
+ * It also provides the basic getter and setter functions to 
+ * manage the browse information.
+ * @code
+ * CIRBrowseCatagoryItems* browse = CIRBrowseCatagoryItems::NewL()
+ * browse->SetXXX();
+ * browse->GetXXX()
+ * *browse = *browse2
+ * delete browse;
+ * @endcode
+ *   
+ */
+class CIRBrowseCatagoryItems : public CBase
+    {
+public :
+
+    /**
+     * CIRBrowseCatagoryItems::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return CIRBrowseCatagoryItems*
+     */
+    IMPORT_C static CIRBrowseCatagoryItems* NewL();
+    
+    /**
+     * CIRBrowseCatagoryItems::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return CIRBrowseCatagoryItems*
+     */
+    IMPORT_C static CIRBrowseCatagoryItems* NewLC();
+
+    /**
+     * CIRBrowseCatagoryItems::ConstructL()
+     * standard second phase constructor
+     */
+    void ConstructL() const;
+
+    /**
+     * CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
+     * standard C++ destructor
+     */
+    ~CIRBrowseCatagoryItems();
+
+    /**
+     * CIRBrowseCatagoryItems::SetTextL()
+     * sets the category name and category id
+     */
+    IMPORT_C void SetTextL( const TDesC& aCatName, const TDesC& aCatId );
+
+    /**
+     * CIRBrowseCatagoryItems::SetSize()
+     * sets the count of the no of items present under that type
+     */
+    IMPORT_C void SetSize( const TDesC& aCatSize );
+    
+    /**
+     * CIRBrowseCatagoryItems::SetGetOperation()
+     * sets the url that is used to get the next level of data
+     */
+    IMPORT_C void SetGetOperation( const TDesC& aCatGetOperation );
+    
+    /**
+     * CIRBrowseCatagoryItems::SetBannerUrl()
+     * Set data Banner Url
+     * @param TDesC
+     */
+    IMPORT_C void SetBannerUrl( const TDesC& aBannerUrl );
+    
+    /**
+     * CIRBrowseCatagoryItems::SetClickThroughUrl( )
+     * Set data Banner Url
+     * @param TDesC
+     */
+    IMPORT_C void SetClickThroughUrl( const TDesC& aClickThroughUrl );
+
+    /**
+     * CIRBrowseCatagoryItems::ExternalizeL()
+     * Externalizes the data from file
+     * @param RWriteStream
+     */
+    IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+    /**
+     *CIRBrowseCatagoryItems::InternalizeL()
+     *Internalizes the data from file
+     *@param RWriteStream&
+     */
+    IMPORT_C void InternalizeL( RReadStream& aStream );
+
+public:
+    //category name
+    HBufC* iCatName;
+    //category id
+    HBufC* iCatId;
+    //get operation
+    HBufC* iCatGetOperation;
+    //no of entities
+    TInt iSize;
+    //For Advertisements
+    HBufC* iCatBannerUrl;
+    HBufC* iCatClickThroughUrl;
+    };
+    
+#endif// IRBROWSECATAGORYITEMS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irbrowsechannelitems.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,189 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IRBROWSECHANNELITEMS_H
+#define IRBROWSECHANNELITEMS_H
+
+#include <e32base.h>
+
+class RReadStream;
+class RWriteStream;
+
+/**
+ * This class provides the basic structure to hold the browse information 
+ * information that come from the isds server.
+ * It also provides the basic getter and setter functions to 
+ * manage the browse information.
+ * @code
+ * CIRBrowseChannelItems* browse = CIRBrowseChannelItems::NewL()
+ * browse->SetXXX();
+ * browse->GetXXX()
+ * delete browse;
+ * @endcode
+ *   
+ */
+class CIRBrowseChannelItems : public CBase
+    {
+public :
+
+    /**
+     * CIRBrowseChannelItems::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return CIRBrowseChannelItems*
+     */
+    IMPORT_C static CIRBrowseChannelItems* NewLC();
+
+    /**
+     * CIRBrowseChannelItems::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return CIRBrowseChannelItems*
+     */
+    IMPORT_C static CIRBrowseChannelItems* NewL();
+
+    /**
+     * CIRBrowseChannelItems::ConstructL()
+     * standard two phased constructor
+     */
+    void ConstructL() const;
+
+    /**
+     * CIRBrowseChannelItems::~CIRBrowseChannelItems()
+     * standard C++ destructor
+     */
+    ~CIRBrowseChannelItems();
+
+public:
+
+    /**
+     * CIRBrowseChannelItems::SetTextL()
+     * Set data namely channelname,channelid,description
+     * @param TDesC,TDesC,TDesC
+     */
+    IMPORT_C void SetTextL( 
+        const TDesC& aChannelName,const TDesC& aChannelId, const TDesC& aDescription );
+
+    /**
+     * CIRBrowseChannelItems::SetGetOperationL()
+     * Set data get methord
+     * @param TDesC
+     */
+    IMPORT_C void SetGetOperationL( const TDesC& aChannelGetOperation );
+
+    /**
+     * CIRBrowseChannelItems::SetSize()
+     * Set data size of data
+     * @param TDesC
+     */
+    IMPORT_C void SetSize( const TDesC& aSize );
+
+    /**
+     * CIRBrowseChannelItems::SetImageUrlL()
+     * Set data for iImgUrl
+     * @param TDesC
+     */
+    IMPORT_C void SetImageUrlL( const TDesC& aImgUrl );
+
+    /**
+     * CIRBrowseChannelItems::SetGetOperation()
+     * Set data for the get operation
+     * @param TDesC
+     */
+    IMPORT_C void SetGetOperation( TDesC& aCatGetOperation );
+
+    /**
+     * CIRBrowseChannelItems::ExternalizeL()
+     * Externalizes data into persistent storage
+     * @param RWriteStream
+     */
+    IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+    /**
+     * CIRBrowseChannelItems::InternalizeL()
+     * internalizes data from persistent storage
+     * @param RReadStream
+     */
+    IMPORT_C void InternalizeL( RReadStream& aStream );
+
+    /**
+     * CIRBrowseChannelItems::SetLastPlayedUrl()
+     * Sets the last played url
+     */
+    IMPORT_C void SetLastPlayedUrl();
+
+    /**
+     * CIRBrowseChannelItems::SetBitrate()
+     * Set data for 3bitrates
+     * @param TDesC,TDesC,TDesC
+     */
+    IMPORT_C void SetBitrate( 
+        const TDesC& aBitrate1,const TDesC& aBitrate2, const TDesC& aBitrate3 );
+
+    /**
+     * CIRBrowseChannelItems::SetBitrate()
+     * Set data for 2 bitrates
+     * @param TDesC,TDesC
+     */
+    IMPORT_C void SetBitrate( const TDesC& aBitrate1, const TDesC& aBitrate2 );
+
+    /**
+     * CIRBrowseChannelItems::SetBitrate()
+     * Set data for 1 bitrate
+     * @param TDesC
+     */
+    IMPORT_C void SetBitrate( const TDesC& aBitrate1 );
+
+    /**
+     * CIRBrowseChannelItems::SetBannerUrl()
+     * Set data Banner Url, For Advertisements
+     * @param TDesC
+     */
+    IMPORT_C void SetBannerUrl( const TDesC& aBannerUrl );
+    
+    /**
+     * CIRBrowseChannelItems::SetClickThroughUrl()
+     * Set data Banner Url
+     * @param TDesC
+     */
+    IMPORT_C  void SetClickThroughUrl( const TDesC& aClickThroughUrl );
+
+public :
+    //channel name
+    HBufC* iChannelName;
+    //short description
+    HBufC* iShortDescription;
+    //url to fetch the preset from
+    HBufC* iChannelGetOperation;
+    //url to fetch the image from
+    RBuf iImgUrl;
+    //supported bitrates(were required for bitrate view)
+    //not in use now
+    TInt iBitrate1;
+    TInt iBitrate2;
+    TInt iBitrate3;
+    //channel id
+    TUint iChannelID;
+    TInt iSize;
+    
+    //For Advertisements
+    HBufC* iBannerUrl;
+    HBufC* iClickThroughUrl;
+    };
+
+#endif // IRBROWSECHANNELITEMS_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irchannelserverurl.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,148 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IRCHANNELSERVERURL_H
+#define IRCHANNELSERVERURL_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.
+ * for url selection for a particular bitrate some functionality 
+ * has been provided
+ * copy constructor and assignment operator has been provided to 
+ * override the default ones 
+ *
+ * @code
+ * CIRChannelServerUrl* presetUrl = CIRChannelServerUrl::NewL()
+ * preset->SetXXX();
+ * preset->GetXXX();
+ * @endcode
+ *   
+ */
+class CIRChannelServerUrl:public CBase
+    {
+public:
+    
+    /**
+     * CIRChannelServerUrl::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRChannelServerUrl
+     */
+    IMPORT_C static CIRChannelServerUrl* NewL();
+    
+    /**
+     * CIRChannelServerUrl::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRChannelServerUrl
+     */
+    IMPORT_C static CIRChannelServerUrl* NewLC();
+    
+    /**
+     * CIRChannelServerUrl::SetServerName()
+     * sets server name 
+     * @param TDesC
+     */
+    IMPORT_C void SetServerName( const TDesC& aServerName );
+    
+    /**
+     * CIRChannelServerUrl::SetServerUrl()
+     * sets server url 
+     * @param TDesC
+     */
+    IMPORT_C void SetServerUrl( const TDesC& aServerUrl );
+    
+    /**
+     * CIRChannelServerUrl::SetBitRate()
+     * sets server bitrate 
+     * @param TInt
+     */
+    IMPORT_C void SetBitRate( TInt aBitrate );
+    
+    /**
+     * CIRChannelServerUrl::GetServerName()
+     * gets server name 
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetServerName() const;
+    
+    /**
+     * CIRChannelServerUrl::GetServerUrl()
+     * gets server url 
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetServerUrl() const;
+    
+    /**
+     * CIRChannelServerUrl::GetBitRate()
+     * gets server bitrate
+     * @return TInt
+     */
+    IMPORT_C TInt GetBitRate() const;
+    
+    /**
+     * CIRChannelServerUrl::~CIRChannelServerUrl()
+     * standard C++ destructor 
+     */    
+    ~CIRChannelServerUrl();
+    
+    /**
+     * CIRChannelServerUrl::=()
+     * standard C++ copy constructor(deep copy) 
+     * @param CIRChannelServerUrl
+     */    
+    IMPORT_C CIRChannelServerUrl& operator=( const CIRChannelServerUrl& churl );
+        
+    /**
+     * CIRChannelServerUrl::ExternalizeL()
+     * function to externalize url data
+     * @param CIRChannelServerUrl
+     */
+    IMPORT_C void ExternalizeL( RWriteStream& aWriteStream );    
+    
+    /**
+     * CIRChannelServerUrl::InternalizeL()
+     * function to internalize url data
+     * @param CIRChannelServerUrl
+     */
+    IMPORT_C void InternalizeL( RReadStream& aReadStream );
+
+protected:
+    /**
+     * CIRChannelServerUrl::ConstructL()
+     * standard second phase construction
+     */    
+    void ConstructL() const;
+    
+public:
+    //server name
+    HBufC *iServerName;
+    HBufC *iURL;
+    //bit rate
+    TInt iBitrate;
+    };
+    
+#endif //IRCHANNELSERVERURL_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irisdspreset.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,532 @@
+/*
+* Copyright (c) 2006-2008 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: iSDS preset structure.
+ *
+ */
+
+#ifndef IRISDSPRESET_H
+#define IRISDSPRESET_H
+
+#include <badesca.h>
+
+class CIRChannelServerUrl;
+class RReadStream;
+class RWriteStream;
+
+/**
+ * This class provides the basic structure to hold the preset
+ * information that come from the isds server.
+ * It also provides the basic getter and setter functions to
+ * manage the preset information.
+ * for url selection for a particular bitrate some functionality
+ * has been provided
+ * copy constructor and assignment operator has been provided to
+ * override the default ones
+ *
+ * @code
+ * CIRIsdsPreset* preset = CIRIsdsPreset::NewL()
+ * preset->SetXXX();
+ * preset->GetXXX()
+ * *preset1 = *preset2
+ * @endcode
+ *
+ */
+class CIRIsdsPreset:public CBase
+    {
+
+    public:
+
+    /**
+     * CIRIsdsPreset::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRIsdsPreset
+     */
+    IMPORT_C static CIRIsdsPreset* NewL();
+
+    /**
+     * CIRIsdsPreset::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRIsdsPreset
+     */
+    IMPORT_C static CIRIsdsPreset* NewLC();
+
+    /**
+     * CIRIsdsPreset::~CIRIsdsPreset()
+     * standard C++ destructor
+     */
+    ~CIRIsdsPreset();
+
+	protected:
+    /**
+    *CIRIsdsPreset::CIRIsdsPreset()
+    *standard C++ constructor
+    */
+	CIRIsdsPreset();
+	
+	/**
+	*CIRIsdsPreset::ConstructL()
+	*standard second phase constructor(Leaveable)
+	*/
+	void ConstructL();
+
+    public:
+
+    /**
+     * CIRIsdsPreset::SetId()
+     * sets id
+     * @param TDesC,supplied by xml parser
+     */
+    IMPORT_C void SetId( const TDesC& aId );
+
+    /**
+     * CIRIsdsPreset::SetId()
+     * sets id
+     * @param TInt,provided to manipulate the id number
+     */
+    IMPORT_C void SetId( TInt aId );
+
+    /**
+     * CIRIsdsPreset::SetNameL()
+     * sets the preset name
+     * @param TdesC aname,the name to be set
+     */
+    IMPORT_C void SetNameL( const TDesC& aName );
+
+    /**
+     * CIRIsdsPreset::SetLangInfoL()
+     * sets the preset language name and the code
+     * @param TdesC,TdesC language id and name to be set
+     */
+    IMPORT_C void SetLangInfoL( const TDesC &aLangId,const TDesC& aLangName );
+
+    /**
+     * CIRIsdsPreset::SetCountryInfoL()
+     * sets the preset country name and the code
+     * @param TdesC,TdesC country id and country name to be set
+     */
+    IMPORT_C void SetCountryInfoL( const TDesC& aCountryId,
+        const TDesC& aCountryName );
+
+    /**
+     * CIRIsdsPreset::SetLangCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    IMPORT_C void SetLangCodeL( const TDesC &aLangId );
+
+    /**
+     * CIRIsdsPreset::SetLangL()
+     * sets the language
+     * @param TdesC language
+     */
+    IMPORT_C void SetLangL( const TDesC& aLangName );
+
+    /**
+     * CIRIsdsPreset::SetCountryCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    IMPORT_C void SetCountryCodeL( const TDesC &aCountryId );
+
+    /**
+     * CIRIsdsPreset::SetCountryNameL()
+     * sets the language name
+     * @param TdesC language name
+     */
+    IMPORT_C void SetCountryNameL( const TDesC& aCountryName );
+
+    /**
+     * CIRIsdsPreset::SetLastModifiedTimeL()
+     * sets the lastmodified time stamp
+     * @param TdesC lastmodified time stamp
+     */
+    IMPORT_C void SetLastModifiedTimeL( const TDesC &aLastModified );
+
+    /**
+     * CIRIsdsPreset::SetGenreInfoL()
+     * sets the genreid and name
+     * @param aGenreId
+     * @param aGenreName
+     */
+    IMPORT_C void SetGenreInfoL( const TDesC& aGenreId,const TDesC& aGenreName );
+
+    /**
+     * CIRIsdsPreset::SetImgUrlL()
+     * sets the image url
+     * @param aImgUrl
+     */
+    IMPORT_C void SetImgUrlL( const TDesC& aImgUrl );
+
+    /**
+     * CIRIsdsPreset::SetLogoDataL()
+     * sets the Logo Data
+     * @param aData
+     * @param aSize
+     */
+    IMPORT_C void SetLogoDataL( const TDesC8& aData );
+
+    /**
+     *CIRIsdsPreset::SetAdvertisementInUseL()
+     *sets the advertisementinuse url
+     *@param aAdvertisementInUse
+     */
+    IMPORT_C void SetAdvertisementInUseL( const TDesC& aAdvertisementInUse );
+
+    /**
+     * CIRIsdsPreset::SetDescriptionL()
+     * sets the description for the channel
+     * @param aDescription
+     */
+    IMPORT_C void SetDescriptionL( const TDesC& aDescription );
+
+    /**
+     * CIRIsdsPreset::SetAdvertisementUrlL()
+     * sets the advertisement url
+     * @param aAdvertisementUrl
+     */
+    IMPORT_C void SetAdvertisementUrlL( const TDesC& aAdvertisementUrl );
+
+    /**
+     * CIRIsdsPreset::SetUrlCount()
+     * sets the count of the number of urls
+     */
+    IMPORT_C void SetUrlCount();
+
+    /**
+     * CIRIsdsPreset::SetShortDescL()
+     * sets the short description
+     * @param aShortDesc
+     */
+    IMPORT_C void SetShortDescL( const TDesC& aShortDesc );
+
+    /**
+     * Sets the genre name
+     * @param aGenreName
+     */
+    IMPORT_C void SetGenreNameL( const TDesC& aGenreName );
+
+    /**
+     * Sets the genre id
+     * @param aGenreId
+     */
+    IMPORT_C void SetGenreIdL( const TDesC& aGenreId );
+
+    /**
+     *CIRIsdsPreset::SetUrlCount()
+     *sets the count of the number of urls
+     *@param aCnt ,count
+     */
+    IMPORT_C void SetUrlCount( TInt aCnt );
+
+	/**
+	*CIRIsdsPreset::SetUrlL()
+	*sets the channel server url
+	*@param aServerName ,server name
+	*@param aUrl ,server url
+	*@param aBitrate .server bitrate
+	*/
+	IMPORT_C void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,const TDesC &aBitrate);
+
+    /**
+     * CIRIsdsPreset::SetUrlL()
+     * sets the channel server url
+     * @param aServerName ,server name
+     * @param aUrl ,server url
+     * @param aBitrate ,server bitrate
+     */
+    IMPORT_C void SetUrlL( const TDesC& aServerName, const TDesC& aUrl, TInt aBitrate );
+
+	/**
+	*CIRIsdsPreset::SetChannelType()
+	*sets the channel type
+	*@param aChannelType userdefined,isds,adhoc
+	*/
+	IMPORT_C	void SetChannelType(TInt aChannelType);
+	
+	
+	/**
+	*CIRIsdsPreset::SetMusicStoreStatusL()
+	*sets the musicStoreEnabled 
+	*@param aMusicStoreStatus
+	*/
+	IMPORT_C    void SetMusicStoreStatusL(const TDesC& aMusicStoreStatus);
+	
+	
+	
+	
+
+	//for serialization
+	/**
+	*CIRIsdsPreset::ExternalizeL()
+	*serializes the preset data into a stream
+	*@param aWriteStream
+	*/
+	IMPORT_C	void ExternalizeL(RWriteStream& aWriteStream);
+
+    /**
+     * CIRIsdsPreset::InternalizeL()
+     * serializes the preset data from a stream to a structure
+     * @param aReadStream
+     */
+    IMPORT_C void InternalizeL( RReadStream& aReadStream );
+
+    /**
+     * CIRIsdsPreset::GetId()
+     * gets the channel id
+     * @return TInt
+     */
+    IMPORT_C TInt GetId() const;
+
+    /**
+     * CIRIsdsPreset::GetName()
+     * gets the channel name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetName() const;
+
+    /**
+     * CIRIsdsPreset::GetLangId()
+     * gets the channel channelid
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLangId() const;
+
+    /**
+     * CIRIsdsPreset::GetLangName()
+     * gets the channel language name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLangName() const;
+
+    /**
+     * CIRIsdsPreset::GetCountryId()
+     * gets the channel countryid
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetCountryId() const;
+
+    /**
+     * CIRIsdsPreset::GetCountryName()
+     * gets the channel country name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetCountryName() const;
+
+    /**
+     * CIRIsdsPreset::GetLastModifiedTime()
+     * gets the channel last modified time stamp
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLastModifiedTime() const;
+
+    /**
+     * CIRIsdsPreset::GetDescription()
+     * gets the channel description
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetDescription() const;
+
+    /**
+     * CIRIsdsPreset::GetShortDescription()
+     * gets the channel  short description
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetShortDescription() const;
+
+    /**
+     * CIRIsdsPreset::GetChannelType()
+     * gets the channel  Type
+     * @return TInt
+     */
+    IMPORT_C TInt GetChannelType() const;
+
+	/**
+	*CIRIsdsPreset::GetGenreId()
+	*gets the channel  genreid
+	*@return TDesC
+	*/
+	IMPORT_C	const TDesC& GetGenreId() const;
+
+    /**
+     * CIRIsdsPreset::GetGenreName()
+     * gets the channel  genre name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetGenreName() const;
+
+    /**
+     * CIRIsdsPreset::GetAdvertisementUrl()
+     * gets the channel  advertisement url
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetAdvertisementUrl() const;
+
+    /**
+     * Gets the channel advertisement in use
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetAdvertisementInUse() const;
+
+    /**
+     * Gets the image url
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetImgUrl() const;
+
+    /**
+     * CIRIsdsPreset::GetUrlCount()
+     * gets the channel  url count
+     * @return TDesC
+     */
+    IMPORT_C TInt GetUrlCount() const;
+
+    /**
+     * CIRIsdsPreset::GetLogoData()
+     * gets the Logo Data
+     * @return TDesC&
+     */
+    IMPORT_C const TDesC8& GetLogoData() const;
+
+		/**
+	*CIRIsdsPreset::GetMusicStoreStatus()
+	*gets the musicStoreEnabled 
+	*@return TDesC&
+	*/
+	IMPORT_C    const TDesC& GetMusicStoreStatus() const;
+
+    /**
+     * CIRIsdsPreset::SetLastModifiedTime()
+     * gets the channel  url at a particular index
+     * @param aindex
+     * @return CIRChannelServerUrl
+     */
+    IMPORT_C CIRChannelServerUrl& GetUrl( TInt aInt );
+
+    /**
+     * CIRIsdsPreset::operator=()
+     * assignment operator
+     * @param CIRIsdsPreset& aPreset
+     * @return CIRIsdsPreset
+     */
+    IMPORT_C CIRIsdsPreset& operator=(const CIRIsdsPreset& aPreset);
+
+    /**
+     * CIRIsdsPreset::GetAvailableBitrates()
+     * gets the bitrate array
+     * @return RArray<TInt>
+     */
+    IMPORT_C TInt GetAvailableBitrates( RArray<TInt>& aBitrates ) const;
+
+    /**
+     * CIRIsdsPreset::GetUrlForBitrateL()
+     * gets the array of bitrates for a particular bitrate
+     * @param aBitrate
+     * @return CDesCArrayFlat
+     */
+    IMPORT_C CDesCArrayFlat* GetUrlForBitrateL( TInt aBitrate );
+
+    /**
+     * CIRIsdsPreset::GetExactUrlForBitrateL()
+     * Urls exactly matching a given bitrate for display purpose
+     * @param aBitrate
+     * @return CDesCArrayFlat
+     */
+    IMPORT_C CDesCArrayFlat* GetExactUrlForBitrateL( TInt aBitrate );
+
+    /**
+	*CIRIsdsPreset::GetChannelUrlAtL()
+	*sets the lastmodified time stamp
+	*returns the url at the urlarray by index
+	*@param aIndex
+	*@return TDesC
+	*/
+	IMPORT_C const TDesC& GetChannelUrlAtL(TInt aIndex) const;
+    /**
+     * CIRIsdsPreset::GetChannelUrlAtL()
+     * sets the lastmodified time stamp
+     * returns the url at the urlarray by index
+     * @param aIndex
+     * @return TDesC
+     */
+    IMPORT_C  TInt GetChannelBitrateL( TInt aIndex );
+
+private:
+
+    /**
+     * CIRIsdsPreset::SortInOrderL()
+     * sorts the urls in bitrate order desc.
+     */
+    void SortInOrderL();
+
+public:
+
+    //url array
+    CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
+
+    /**
+     * type of presets(source)
+     */
+    enum TChannelType
+        {
+        EUserDefined, // added by user
+        EIsdsPreset, // fetched from isds
+        EAdhoc // not in use currently
+        };
+
+private:
+	//no of channel urls
+	TInt iChannelUrlCount;
+    //0 for user defined 1 for isds type.
+	TInt iType;
+	//isds generated preset id
+	TInt iPresetId;
+	//preset name
+	RBuf iName;
+	//preset language code
+	RBuf iLanguageCode;
+	//preset language
+	RBuf iLanguage;
+	//preset country of origin code
+	RBuf iCountryCode;
+	//preset country of origin
+	RBuf iCountry;
+	//preset last modified
+	RBuf iLastModified;
+	//musicStoreEnabled value
+	RBuf iMusicStoreStatus;
+	//not in use
+	RBuf iAdvertisementUrl;
+	//not in use
+	RBuf iAdvertisementInUse;
+	//not in use
+	RBuf iImgUrl;
+	//Logo Data
+	RBuf8 iLogoData;
+	//channel description
+	RBuf iDescription;
+	//channel short desription
+	RBuf iShortDesc;
+	//channel genre name
+	RBuf iGenereName;
+	//channel genre id
+	RBuf iGenereId;
+	//channel bitrate
+	TInt iBitrate;
+
+	};
+
+#endif    //IRISDSPRESET_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irlastplayedsongs.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IRLASTPLAYEDSONGS_H
+#define IRLASTPLAYEDSONGS_H
+
+#include <e32base.h>
+
+class RReadStream;
+class RWriteStream;
+
+class CIRLastPlayedSongs:public CBase
+    {
+    public:
+        
+    /**
+     * Function : NewL
+     * Function returns an instance of CIRLastPlayedSongs
+     * Two phase constructor
+     * @return instance of CIRLastPlayedSongs
+     */
+    IMPORT_C static CIRLastPlayedSongs* NewL();
+    
+    /**
+     * CIRLastPlayedSongs::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRLastPlayedSongs
+     */
+    IMPORT_C static CIRLastPlayedSongs* NewLC();
+    
+    /**
+     * CIRLastPlayedSongs::~CIRLastPlayedSongs()
+     * standard C++ destructor
+     */
+    ~CIRLastPlayedSongs();
+    
+    /**
+     * CIRLastPlayedSongs::SetSongName()
+     * Function to set song name from a TDesC
+     * @param TDesC
+     */
+    IMPORT_C void SetSongName( const TDesC&aSongName );
+    
+    /**
+     * CIRLastPlayedSongs::GetSongName()
+     * Function to get song name from a TDesC
+     * @return TDesc instance
+     */
+    IMPORT_C TDesC& GetSongName();
+
+    /**
+     * CIRLastPlayedSongs::SetArtistName()
+     * Function to set artist name from a TDesC
+     * @param TDesc
+     */
+    IMPORT_C void SetArtistName( const TDesC& aArtistName );
+    
+    /**
+     * CIRLastPlayedSongs::GetArtistName()
+     * Function to get artist name from a TDesC
+     * @return TDesc instance
+     */
+    IMPORT_C TDesC& GetArtistName();
+     
+    /**
+     * CIRLastPlayedSongs::ExternalizeL()
+     * externalizes the data
+     * @param RWriteStream
+     */
+    IMPORT_C void ExternalizeL( RWriteStream& aWriteStream );
+    
+    /**
+     * CIRLastPlayedSongs::InternalizeL()
+     * internalizes the data
+     * @param RWriteStream
+     */
+    IMPORT_C void InternalizeL( RReadStream& aReadStream );        
+    
+    /**
+     * CIRLastPlayedSongs::=()
+     * standard C++ copy constructor(deep copy) 
+     * @param CIRLastPlayedSongs
+     * @return CIRLastPlayedSongs reference
+     */
+    IMPORT_C CIRLastPlayedSongs& operator=( const CIRLastPlayedSongs& aSng );
+    
+    protected:
+    /**
+     * CIRLastPlayedSongs::ConstructL()
+     * standard second phase constructor
+     */
+    void ConstructL();
+    
+private:
+    HBufC* iSongName;
+    HBufC* iArtistName;    
+    };
+    
+#endif //IRLASTPLAYEDSONGS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irotaupdate.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,128 @@
+/*
+* 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:
+ *
+ */
+
+#ifndef IROTAUPDATE_H
+#define IROTAUPDATE_H
+
+#include <e32base.h>
+
+class RReadStream;
+class RWriteStream;
+
+/**
+ * This class provides the basic structure to hold the OTA information.
+ * information that come from the isds server is parsed and put into this structure
+ * It also provides the basic setter functions to 
+ * manage the OTA information.
+ * @code
+ * CIROTAUpdate* ota = CIROTAUpdate::NewL()
+ * ota->SetXXX();
+ * delete ota;
+ * @endcode
+ *   
+ */
+
+class CIROTAUpdate : public CBase
+    {
+    
+    public:
+    
+    /**
+     * Function : NewL
+     * Function returns an instance of CIROTAUpdate
+     * Two phase constructor
+     * @return instance of CIROTAUpdate
+     */
+    IMPORT_C static CIROTAUpdate* NewLC();
+    
+    /**
+     * CIROTAUpdate::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return *CIROTAUpdate
+     */
+    IMPORT_C static CIROTAUpdate* NewL();
+    
+    /**
+     * CIROTAUpdate::ConstructL()
+     * standard second phase constructor
+     */
+    IMPORT_C void ConstructL();
+    
+    /**
+     * CIROTAUpdate::~CIROTAUpdate()
+     * standard C++ destructor
+     */
+    ~CIROTAUpdate();
+    
+    public:
+    
+    /**
+     * CIROTAUpdate::SetUpdateMethod()
+     * Function to set update method
+     * @param TDesC
+     */
+    IMPORT_C void SetUpdateMethod( const TDesC& aUpdateMethod );
+    
+    /**
+     * CIROTAUpdate::SetVersion()
+     * Function to set version
+     * @param TDesC
+     */
+    IMPORT_C void SetVersion( const TDesC& aVersion );
+    
+    /**
+     * CIROTAUpdate::SetUpdateInterval()
+     * Function to set update interval
+     * @param TDesC
+     */
+    IMPORT_C void SetUpdateInterval( const TDesC& aUpdateInterval );
+    
+    /**
+     * CIROTAUpdate::SetOTAUrl()
+     * Function to set OTA Url
+     * @param TDesC
+     */
+    IMPORT_C void SetOTAUrl( const TDesC& aOTAUrl );
+    
+    /**
+     * CIROTAUpdate::ExternalizeL()
+     * externalizes the data
+     * @param RWriteStream
+     */
+    IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+    
+    /**
+     * CIROTAUpdate::InternalizeL()
+     * internalizes the data
+     * @param RWriteStream
+     */
+    IMPORT_C void InternalizeL( RReadStream& aStream );
+    
+    public:
+    // native or browser    
+    HBufC* iUpdateMethod;
+    // version no
+    HBufC* iVersion; 
+    // url where the newer version can be found
+    HBufC* iOTAUrl;
+    // silence period
+    TInt iUpdateInterval;
+   };
+   
+#endif// IROTAUPDATE_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/iradvertisement.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* 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:
+ *
+ */
+
+#include "iradvertisement.h"
+#include "irdebug.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Function : NewLC
+// Function returns an instance of CIRAdvertisement
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRAdvertisement* CIRAdvertisement::NewLC()
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::NewLC - Entering" );
+    CIRAdvertisement* self = new( ELeave )CIRAdvertisement;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRAdvertisement::NewLC - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRAdvertisement* CIRAdvertisement::NewL()
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::NewL - Entering" );
+    CIRAdvertisement* self = CIRAdvertisement::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRAdvertisement::NewL - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::ConstructL()
+// standard second phase constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRAdvertisement::ConstructL() const
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::ConstructL" );
+    return;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::~CIRAdvertisement()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRAdvertisement::~CIRAdvertisement()
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::~CIRAdvertisement - Entering" );
+    delete  iUrl;
+    iUrl = NULL;
+    delete iAdvInUse;
+    iAdvInUse = NULL;
+    IRLOG_DEBUG( "CIRAdvertisement::~CIRAdvertisement - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::SetAdvInUse()
+// Function to set the advertisement in use
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRAdvertisement::SetAdvInUse( const TDesC& aAdvInUse )
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::SetAdvInUse - Entering" );
+    iAdvInUse = aAdvInUse.Alloc();
+    IRLOG_DEBUG( "CIRAdvertisement::SetAdvInUse - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::SetUsage()
+// Function to set the number of times the global adv to be shown
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRAdvertisement::SetUsage( const TDesC& aUsageVisibleTimes )
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::SetUsage - Entering" );
+    TLex var( aUsageVisibleTimes );
+    var.Val( iUsageVisibleTimes );
+    IRLOG_DEBUG( "CIRAdvertisement::SetUsage - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::SetVisibleTime()
+// Function to set the duration of the advertisement to be displayed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRAdvertisement::SetVisibleTime( const TDesC& aVisibleTime )
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::SetVisibleTime - Entering" );
+    TLex var( aVisibleTime );
+    var.Val( iVisibleTime );
+    IRLOG_DEBUG( "CIRAdvertisement::SetVisibleTime - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRAdvertisement::SetURL()
+// Function to set the url of the global advertisement
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRAdvertisement::SetURL( const TDesC& aUrl )
+    {
+    IRLOG_DEBUG( "CIRAdvertisement::SetURL - Entering" );
+    iUrl = aUrl.Alloc();
+    IRLOG_DEBUG( "CIRAdvertisement::SetURL - Exiting." );
+    return;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irbrowsecatagoryitems.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,267 @@
+/*
+* 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:
+ *
+ */
+
+#include <s32strm.h>
+
+#include "irdebug.h"
+#include "irbrowsecatagoryitems.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRBrowseCatagoryItems* CIRBrowseCatagoryItems::NewL()
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewL - Entering" );
+    CIRBrowseCatagoryItems* self = CIRBrowseCatagoryItems::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewL - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRBrowseCatagoryItems* CIRBrowseCatagoryItems::NewLC()
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewLC - Entering" );
+    CIRBrowseCatagoryItems* self = new( ELeave )CIRBrowseCatagoryItems;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::NewLC - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::ConstructL()
+// standard second phase constructor
+// ---------------------------------------------------------------------------
+//
+ void CIRBrowseCatagoryItems::ConstructL() const
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::ConstructL" );
+    return;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+ CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems()
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems - Entering" );
+    delete iCatName;
+    iCatName = NULL;
+    delete iCatId;
+    iCatId = NULL;
+    delete iCatGetOperation;
+    iCatGetOperation = NULL;
+    
+    delete iCatBannerUrl;
+    iCatBannerUrl = NULL;
+    
+    delete iCatClickThroughUrl;
+    iCatClickThroughUrl = NULL;
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::~CIRBrowseCatagoryItems - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::SetTextL()
+// sets the cache status informa
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseCatagoryItems::SetTextL( const TDesC& aCatName,
+                                               const TDesC& aCatId )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetTextL - Entering" );
+    iCatName = aCatName.Alloc();
+    iCatId = aCatId.Alloc();    
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetTextL - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::SetSize()
+// sets the size of the object iSize,after converting it from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseCatagoryItems::SetSize( const TDesC& aCatSize )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetSize - Entering" );
+    TLex var( aCatSize );
+    var.Val( iSize );
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetSize - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::SetGetOperation()
+// sets params for retriving data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseCatagoryItems::SetGetOperation( 
+                                                  const TDesC& aCatGetOperation )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetGetOperation - Entering" );
+    iCatGetOperation = aCatGetOperation.Alloc();
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetGetOperation - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::ExternalizeL()
+// externalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseCatagoryItems::ExternalizeL( RWriteStream& aStream ) const
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::ExternalizeL - Entering" );
+    if ( !iCatGetOperation )
+        {
+        aStream.WriteInt32L( 0 );
+        }
+    else
+        {
+        aStream.WriteInt32L( iCatGetOperation->Des().MaxLength() );
+        aStream << *iCatGetOperation;
+        }
+    
+    if ( !iCatName )
+        {
+        aStream.WriteInt32L( 0 );
+        }
+    else
+        {
+        aStream.WriteInt32L( iCatName->Des().MaxLength() );
+        aStream << *iCatName;
+        }
+    
+    if ( !iCatId )
+        {
+        aStream.WriteInt32L( 0 );            
+        }
+    else
+        {
+        aStream.WriteInt32L( iCatId->Des().MaxLength() );
+        aStream << *iCatId;
+        }
+    
+    if ( iSize>0 )
+        {
+        aStream.WriteInt32L( iSize );
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );            
+        }
+    
+    if ( !iCatBannerUrl )
+        {
+        aStream.WriteInt32L( 0 );            
+        }
+    else
+        {
+        aStream.WriteInt32L( iCatBannerUrl->Des().MaxLength() );
+        aStream << *iCatBannerUrl;
+        }
+    
+    if ( !iCatClickThroughUrl )
+        {
+        aStream.WriteInt32L( 0 );    
+        }
+    else
+        {
+        aStream.WriteInt32L( iCatClickThroughUrl->Des().MaxLength() );
+        aStream << *iCatClickThroughUrl;
+        }
+    
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::ExternalizeL - Exiting." );    
+    }  
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseCatagoryItems::InternalizeL()
+// internalizes the data.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseCatagoryItems::InternalizeL( RReadStream& aStream )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Entering" );
+    TInt maxlen;
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iCatGetOperation = HBufC::NewL( aStream,maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iCatName = HBufC::NewL( aStream,maxlen );            
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iCatId = HBufC::NewL( aStream,maxlen );    
+        }
+    
+    iSize  = aStream.ReadInt32L();
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iCatBannerUrl = HBufC::NewL( aStream, maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iCatClickThroughUrl = HBufC::NewL( aStream, maxlen );    
+        }
+    
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Exiting." );
+    }  
+    
+
+EXPORT_C void CIRBrowseCatagoryItems::SetBannerUrl( const TDesC& aBannerUrl )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetBannerUrl() - Entering" );
+    iCatBannerUrl = aBannerUrl.Alloc();
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetBannerUrl - Exiting" );
+    }
+    
+    
+EXPORT_C void CIRBrowseCatagoryItems::SetClickThroughUrl( const TDesC& aClickThroughUrl )
+    {
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetClickThroughUrl() - Entering" );
+    iCatClickThroughUrl = aClickThroughUrl.Alloc();
+    IRLOG_DEBUG( "CIRBrowseCatagoryItems::SetClickThroughUrl() - Exiting" );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irbrowsechannelitems.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,360 @@
+/*
+* 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:
+ *
+ */
+
+#include <s32strm.h>
+
+#include "irbrowsechannelitems.h"
+#include "irdebug.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C CIRBrowseChannelItems* CIRBrowseChannelItems::NewLC()
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::NewLC - Entering" );
+    CIRBrowseChannelItems* self = new( ELeave )CIRBrowseChannelItems;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRBrowseChannelItems::NewLC - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRBrowseChannelItems* CIRBrowseChannelItems::NewL()
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::NewL - Entering" );
+    CIRBrowseChannelItems* self = CIRBrowseChannelItems::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRBrowseChannelItems::NewL - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::ConstructL()
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+ void CIRBrowseChannelItems::ConstructL() const
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::ConstructL" );
+    return;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::~CIRBrowseChannelItems()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//    
+ CIRBrowseChannelItems::~CIRBrowseChannelItems()
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::~CIRBrowseChannelItems - Entering" );
+    delete iChannelName;
+    iChannelName = NULL;
+    delete iChannelGetOperation;
+    iChannelGetOperation = NULL;
+    delete iShortDescription;
+    iShortDescription = NULL;
+    iImgUrl.Close();
+    
+    delete iBannerUrl;
+    iBannerUrl = NULL;
+    delete iClickThroughUrl;
+    iClickThroughUrl = NULL;
+
+    IRLOG_DEBUG( "CIRBrowseChannelItems::~CIRBrowseChannelItems - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetTextL()
+// Set data namely channelname,channelid,description
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetTextL( const TDesC& aChannelName, 
+    const TDesC& aChannelId, const TDesC& aDescription )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetTextL - Entering" );
+    iChannelName = aChannelName.Alloc();
+    iShortDescription = aDescription.Alloc();    
+    TLex var( aChannelId );
+    var.Val( iChannelID );
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetTextL - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetGetOperationL()
+// Set data get methord
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CIRBrowseChannelItems::SetGetOperationL( 
+    const TDesC& aChannelGetOperation )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetGetOperationL - Entering" );
+    iChannelGetOperation = aChannelGetOperation.Alloc();
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetGetOperationL - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetSize()
+// Set data size of data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetSize( const TDesC& aSize )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetSize - Entering" );
+    TLex var( aSize );
+    var.Val( iSize );
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetSize - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetImageUrlL()
+// Set the url for the iImgUrl
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CIRBrowseChannelItems::SetImageUrlL( const TDesC& aImgUrl )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetImageUrlL - Entering" );
+    iImgUrl.CreateL( aImgUrl.Length() );
+    iImgUrl.Copy( aImgUrl );
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetImageUrlL - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::ExternalizeL()
+// Externalizes data into persistent storage
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::ExternalizeL( RWriteStream& aStream ) const
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::ExternalizeL - Entering" );
+    if ( iChannelName )
+        {
+        aStream.WriteInt32L( iChannelName->Des().MaxLength() );
+        aStream << *iChannelName;
+        }
+    else 
+        {
+        aStream.WriteInt32L (0 );
+        }
+    
+    if ( ( iShortDescription ) && ( iShortDescription->Des().MaxLength() != 0 ) )
+        {    
+        TInt a = iShortDescription->Des().MaxLength();
+        aStream.WriteInt32L( iShortDescription->Des().MaxLength() );
+        aStream << *iShortDescription;
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );
+        }
+    
+    if ( iChannelGetOperation )
+        {
+        aStream.WriteInt32L( iChannelGetOperation->Des().MaxLength() );
+        aStream << *iChannelGetOperation;
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );
+        }
+    
+    aStream.WriteInt32L( iBitrate1 );
+    aStream.WriteInt32L( iBitrate2 );
+    aStream.WriteInt32L( iBitrate3 );
+    aStream.WriteUint32L( iChannelID );
+    if ( iBannerUrl )
+        {
+        aStream.WriteInt32L( iBannerUrl->Des().MaxLength() );
+        aStream << *iBannerUrl;
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );
+        }
+    
+    if ( iClickThroughUrl )    
+        {
+        aStream.WriteInt32L( iClickThroughUrl->Des().MaxLength() );
+        aStream << *iClickThroughUrl;
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );
+        }
+        
+    if ( iImgUrl.Length() != 0 )
+        {
+        aStream.WriteInt32L( iImgUrl.MaxLength() );
+        aStream << iImgUrl;
+        }
+    else
+        {
+        aStream.WriteInt32L( 0 );    
+        }
+
+    IRLOG_DEBUG( "CIRBrowseChannelItems::ExternalizeL - Exiting." );
+    }  
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::InternalizeL()
+// internalizes data from persistent storage
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::InternalizeL( RReadStream& aStream )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::InternalizeL - Entering" );
+    TInt maxlen;
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iChannelName = HBufC::NewL( aStream,maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iShortDescription = HBufC::NewL( aStream,maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iChannelGetOperation = HBufC::NewL( aStream,maxlen );
+        }
+    iBitrate1 = aStream.ReadInt32L();
+    iBitrate2 = aStream.ReadInt32L();
+    iBitrate3 = aStream.ReadInt32L();
+    iChannelID = aStream.ReadUint32L();
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iBannerUrl = HBufC::NewL( aStream, maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iClickThroughUrl = HBufC::NewL( aStream, maxlen );
+        }
+    
+    maxlen = aStream.ReadInt32L();
+    if ( maxlen != 0 )
+        {
+        iImgUrl.Close();
+        iImgUrl.CreateL( aStream, maxlen );            
+        }
+    
+    IRLOG_DEBUG( "CIRBrowseChannelItems::InternalizeL - Exiting." );
+    }  
+    
+
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetBitrate()
+// Set data for 3bitrates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetBitrate( const TDesC& aBitrate1, 
+    const TDesC& aBitrate2, const TDesC& aBitrate3 )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate3 - Entering" );
+    TLex var1( aBitrate1 );
+    var1.Val( iBitrate1 );
+    TLex var2( aBitrate2 );
+    var2.Val( iBitrate2 );
+    TLex var3( aBitrate3 );
+    var3.Val( iBitrate3 );    
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate3 - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetBitrate()
+// Set data for 2 bitrates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetBitrate( const TDesC& aBitrate1, 
+    const TDesC& aBitrate2)
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate2 - Entering" );
+    TLex var1( aBitrate1 );
+    var1.Val( iBitrate1 );
+    TLex var2( aBitrate2 );
+    var2.Val( iBitrate2 );
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate2 - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetBitrate()
+// Set data for 1 bitrate
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetBitrate( const TDesC& aBitrate1 )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate1 - Entering" );
+    TLex var1( aBitrate1 );
+    var1.Val( iBitrate1 );    
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBitrate1 - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetBannerUrl()
+// Set data namely BannerUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetBannerUrl( const TDesC& aBannerUrl )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBannerUrl - Entering" );
+    iBannerUrl = aBannerUrl.Alloc();
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetBannerUrl - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRBrowseChannelItems::SetBannerUrl()
+// Set data namely BannerUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRBrowseChannelItems::SetClickThroughUrl( const TDesC& aClickThroughUrl )
+    {
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetClickThroughUrl - Entering" );
+    iClickThroughUrl = aClickThroughUrl.Alloc();
+    IRLOG_DEBUG( "CIRBrowseChannelItems::SetClickThroughUrl - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irchannelserverurl.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,281 @@
+/*
+* 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:
+ *
+ */
+
+#include <s32strm.h>
+
+#include "irchannelserverurl.h"
+#include "irdebug.h"
+    
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRChannelServerUrl* CIRChannelServerUrl::NewL()
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::NewL - Entering" );
+    CIRChannelServerUrl* self = CIRChannelServerUrl::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRChannelServerUrl::NewL - Exiting." );
+    return self;
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRChannelServerUrl* CIRChannelServerUrl::NewLC()
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::NewLC - Entering" );
+    CIRChannelServerUrl* self = new( ELeave )CIRChannelServerUrl;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRChannelServerUrl::NewLC - Exiting." );
+    return self;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::SetServerName()
+// sets server name 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRChannelServerUrl::SetServerName( const TDesC& aServerName )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetServerName - Entering" );
+    iServerName = aServerName.Alloc();
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetServerName - Exiting." );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::SetServerUrl()
+// sets server url 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRChannelServerUrl::SetServerUrl( const TDesC& aServerUrl )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetServerUrl - Entering" );
+    iURL = aServerUrl.Alloc();
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetServerUrl - Exiting." );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::SetBitRate()
+// sets server bitrate 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRChannelServerUrl::SetBitRate( TInt aBitrate )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetBitRate - Entering" );
+    iBitrate = aBitrate;
+    //if a negative value comes,set the bitrate to 0,so that it is accessable 
+    //to all the setting combination
+    if ( iBitrate < 0 )
+        {
+        iBitrate = 0;
+        }
+    IRLOG_DEBUG( "CIRChannelServerUrl::SetBitRate - Exiting." );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::GetServerName()
+// gets server name 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRChannelServerUrl::GetServerName() const
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::GetServerName" );
+    if ( NULL == iServerName )
+        {
+        CIRChannelServerUrl *tempUrl = const_cast<CIRChannelServerUrl*>( this );
+	    tempUrl->iServerName = HBufC::New(0);
+        }
+    return *iServerName;
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::GetServerUrl()
+// gets server url 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRChannelServerUrl::GetServerUrl() const
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::GetServerUrl" );
+    if ( NULL == iURL )
+        {
+        CIRChannelServerUrl *tempUrl = const_cast<CIRChannelServerUrl*>( this );
+	    tempUrl->iURL = HBufC::New(0);
+        }    
+    return *iURL;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+//CIRChannelServerUrl::GetBitRate()
+//gets server bitrate
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRChannelServerUrl::GetBitRate() const
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::GetBitRate" );
+    return iBitrate;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+//CIRChannelServerUrl::~CIRChannelServerUrl()
+//standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRChannelServerUrl::~CIRChannelServerUrl()
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::~CIRChannelServerUrl - Entering" );
+    delete iServerName;
+	iServerName=NULL;
+    delete iURL;
+	iURL=NULL;
+    IRLOG_DEBUG( "CIRChannelServerUrl::~CIRChannelServerUrl - Exiting." );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::=()
+// standard C++ copy constructor( deep copy ) 
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C CIRChannelServerUrl& CIRChannelServerUrl::operator = ( 
+    const CIRChannelServerUrl& churl )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::operator= - Entering" );
+    if ( &churl == this )
+        {
+        return *this;
+        }
+    
+    if ( iServerName )
+        {
+        delete iServerName;
+        iServerName = NULL;
+        }
+    
+    if ( churl.iServerName )
+        {
+        iServerName = churl.iServerName->Alloc();
+        }
+    
+    if ( iURL )
+        {
+        delete iURL;
+        iURL = NULL;
+        }
+    
+    if ( churl.iBitrate )
+        {
+        iURL = churl.iURL->Alloc();
+        }
+    
+    iBitrate = churl.iBitrate;
+    IRLOG_DEBUG( "CIRChannelServerUrl::operator= - Exiting." );
+    return *this;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::ExternalizeL()
+// function to externalize url data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRChannelServerUrl::ExternalizeL( RWriteStream& aWriteStream )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::ExternalizeL - Entering" );
+    TInt len;
+    if ( !iServerName )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iServerName->Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << *iServerName;
+        }
+        
+    if ( !iURL )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iURL->Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << *iURL;
+        }
+        
+    aWriteStream.WriteInt32L( iBitrate );
+    IRLOG_DEBUG( "CIRChannelServerUrl::ExternalizeL - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::InternalizeL()
+// function to internalize url data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRChannelServerUrl::InternalizeL( RReadStream& aReadStream )
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::InternalizeL - Entering" );
+    TInt len;
+    len = aReadStream.ReadInt32L();
+    if ( len != 0 )
+        {
+        iServerName=HBufC::NewL( aReadStream, len );    
+        }
+
+    len = aReadStream.ReadInt32L();
+    if ( len != 0 )
+        {
+        iURL = HBufC::NewL( aReadStream, len );    
+        }
+    iBitrate = aReadStream.ReadInt32L();
+    IRLOG_DEBUG( "CIRChannelServerUrl::InternalizeL - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRChannelServerUrl::ConstructL()
+// standard second phase construction
+// ---------------------------------------------------------------------------
+//    
+ void CIRChannelServerUrl::ConstructL() const
+    {
+    IRLOG_DEBUG( "CIRChannelServerUrl::ConstructL" );
+    return;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irisdspreset.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1157 @@
+/*
+* Copyright (c) 2006-2008 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: iSDS preset structure.
+ *
+ */
+
+#include <s32strm.h>
+
+#include "irchannelserverurl.h"
+#include "irdebug.h"
+#include "irisdspreset.h"
+
+const TInt KUrlArrayMaxLength = 128;
+const TInt KUrlForBitrateMaxLength = 128;
+
+_LIT( KComma, "," );
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewL()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Entering" );
+	CIRIsdsPreset* self = CIRIsdsPreset::NewLC();
+	CleanupStack::Pop( self );
+	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Exiting." );
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewLC()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Entering" );
+	CIRIsdsPreset* self = new( ELeave )CIRIsdsPreset;
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Exiting." );
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::~CIRIsdsPreset()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRIsdsPreset::~CIRIsdsPreset()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Entering" );
+	iName.Close();
+	iLanguageCode.Close();
+	iLanguage.Close();
+	iCountryCode.Close();
+	iCountry.Close();
+	iLastModified.Close();
+	iMusicStoreStatus.Close();
+	iAdvertisementUrl.Close();
+	iAdvertisementInUse.Close();
+	iImgUrl.Close();
+	iLogoData.Close();
+	iDescription.Close();
+	iShortDesc.Close();
+	iGenereName.Close();
+	iGenereId.Close();
+
+	if ( iUrlArray )
+		{
+		iUrlArray->ResetAndDestroy();
+		}
+	
+	delete iUrlArray;
+	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::CIRIsdsPreset()
+// default C++ constructor
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+CIRIsdsPreset::CIRIsdsPreset()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::CIRIsdsPreset" );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::ConstructL()
+// standard second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsPreset::ConstructL()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Entering" );
+	iUrlArray = new( ELeave )CArrayPtrFlat<CIRChannelServerUrl>( 
+		KUrlArrayMaxLength );
+	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetId()
+// Function to set iPresetId from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetId( const TDesC& aId )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Entering" );
+	TLex conv( aId );
+	conv.Val( iPresetId );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetId()
+// Function to set iPresetId
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetId( TInt aId )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Entering" );
+	iPresetId = aId;
+	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Exiting." );
+	}
+
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetNameL()
+//Function to set iName from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetNameL( const TDesC& aName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetNameL - Entering" );
+	iName.Close();
+	iName.CreateL( aName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetNameL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetLangInfoL()
+//Function to set iLanguageCode, iLanguage
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetLangInfoL( const TDesC& aLangId,
+	const TDesC& aLangName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfoL - Entering" );
+    SetLangCodeL( aLangId );
+    SetLangL( aLangName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfoL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetLangCodeL()
+// Function to set iLanguageCode from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetLangCodeL( const TDesC& aLangId )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCodeL - Entering" );
+	iLanguageCode.Close();
+	iLanguageCode.CreateL( aLangId );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCodeL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetLangL()
+// Function to set iLanguage from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetLangL( const TDesC& aLangName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangL - Entering" );
+	iLanguage.Close();
+	iLanguage.CreateL( aLangName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLangL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetCountryCodeL()
+// Function to set iCountryCode from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetCountryCodeL( const TDesC& aCountryId )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCodeL - Entering" );
+	iCountryCode.Close();
+	iCountryCode.CreateL( aCountryId );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCodeL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetCountryNameL()
+//Function to set iCountry from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetCountryNameL( const TDesC& aCountryName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryNameL - Entering" );
+	iCountry.Close();
+	iCountry.CreateL( aCountryName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryNameL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetLangInfoL()
+// Function to set iCountryCode, iCountry
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetCountryInfoL( const TDesC& aCountryId,
+	const TDesC& aCountryName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfoL - Entering" );
+	SetCountryCodeL( aCountryId );
+    SetCountryNameL( aCountryName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfoL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetLastModifiedTimeL()
+// Function to set iLastModified
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetLastModifiedTimeL( const TDesC& aLastModified )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTimeL - Entering" );
+	iLastModified.Close();
+	iLastModified.CreateL( aLastModified );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTimeL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetGenreInfoL()
+//Function to set iGenereName, iGenereId
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetGenreInfoL( const TDesC& aGenreId,
+	const TDesC& aGenreName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPresetL::SetGenreInfoL - Entering" );
+
+	if ( iGenereName.Length() )
+		{
+		RBuf newBuf;
+		newBuf.CreateL(
+		    iGenereName.Length() + aGenreName.Length() + KComma().Length() );
+		newBuf.Append( iGenereName );
+		newBuf.Append( KComma );
+		newBuf.Append( aGenreName );
+		iGenereName.Close();
+		iGenereName.CreateL( newBuf );
+		newBuf.Close();
+		}
+	
+	if ( iGenereId.Length() )
+		{
+		RBuf newBuf;
+        newBuf.CreateL(
+            iGenereId.Length() + aGenreId.Length() + KComma().Length() );
+        newBuf.Append( iGenereId );
+        newBuf.Append( KComma );
+        newBuf.Append( aGenreId );
+        iGenereId.Close();
+        iGenereId.CreateL( newBuf );
+        newBuf.Close();
+		}
+	
+	if ( !iGenereName.Length() )
+		{
+		iGenereName.Close();
+		iGenereName.CreateL( aGenreName );
+		}
+	
+	if ( !iGenereId.Length() )
+		{
+		iGenereId.Close();
+		iGenereId.CreateL( aGenreId );
+		}
+
+	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreInfoL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetImgUrlL()
+// Function to set iImgUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetImgUrlL( const TDesC& aImgUrl )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrlL - Entering" );
+	iImgUrl.Close();
+	iImgUrl.CreateL( aImgUrl );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrlL - Exiting." );
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetLogoDataL()
+// Function to set LogoData
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRIsdsPreset::SetLogoDataL( const TDesC8& aData )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Entering" );
+
+	iLogoData.Close();
+	iLogoData.CreateL( aData );
+
+	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Exiting." );
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetAdvertisementInUseL()
+// Function to set iAdvertisementInUse
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetAdvertisementInUseL( 
+	const TDesC& aAdvertisementInUse )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUseL - Entering" );
+	iAdvertisementInUse.Close();
+	iAdvertisementInUse.CreateL( aAdvertisementInUse );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUseL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetDescriptionL()
+// Function to set iDescription
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset:: SetDescriptionL( const TDesC& aDescription )
+	{
+    IRLOG_DEBUG( "CIRIsdsPreset::SetDescriptionL - Entering" );
+    iDescription.Close();
+    iDescription.CreateL( aDescription );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetDescriptionL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetAdvertisementUrlL()
+// Function to set iAdvertisementUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetAdvertisementUrlL( 
+	const TDesC& aAdvertisementUrl )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrlL - Entering" );
+	iAdvertisementUrl.Close();
+	iAdvertisementUrl.CreateL( aAdvertisementUrl );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrlL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetUrlCount()
+//Function to set iChannelUrlCount
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetUrlCount()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
+	iChannelUrlCount = iUrlArray->Count();
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetShortDescL()
+// Function to set iShortDesc
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetShortDescL( const TDesC& aShortDesc )
+	{
+    IRLOG_DEBUG( "CIRIsdsPreset::SetShortDescL - Entering" );
+    iShortDesc.Close();
+    iShortDesc.CreateL( aShortDesc );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetShortDescL - Exiting." );
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetGenreNameL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetGenreNameL( const TDesC& aGenreName )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreNameL - Entering" );
+	iGenereName.Close();
+	iGenereName.CreateL( aGenreName );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreNameL - Exiting" );
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetGenreIdL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetGenreIdL( const TDesC& aGenreId )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreIdL - Entering" );
+	iGenereId.Close();
+	iGenereId.CreateL( aGenreId );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreIdL - Exiting" );
+	}
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetUrlCount()
+//Function to set iChannelUrlCount
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetUrlCount( TInt aCnt )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
+	iChannelUrlCount = aCnt;
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
+	}
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetUrl()
+//Function to set Url parameter
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetUrlL( const TDesC& aServerName,
+	const TDesC& aUrl, const TDesC& aBitrate )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Entering" );
+	CIRChannelServerUrl * hold = CIRChannelServerUrl::NewL();
+	hold->SetServerName( aServerName );
+	hold->SetServerUrl( aUrl );
+	TLex conv( aBitrate );
+	TInt conVal = 0;
+	conv.Val( conVal );
+	//if a negative value comes,set the bitrate to 0,so that it is accessable
+	//to all the setting combination
+	if ( conVal < 0)
+		{
+		conVal = 0;
+		}
+	
+	hold->SetBitRate( conVal );
+	iUrlArray->AppendL( hold );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetUrl()
+//Function to set Url parameter
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetUrlL( const TDesC& aServerName, 
+	const TDesC& aUrl, TInt aBitrate )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Entering" );
+	CIRChannelServerUrl * hold = CIRChannelServerUrl::NewL();
+	hold->SetServerName( aServerName );
+	hold->SetServerUrl( aUrl );
+
+	//if a negative value comes,set the bitrate to 0,so that it is accessable
+	//to all the setting combination
+	if ( aBitrate < 0)
+		{
+		aBitrate = 0;
+		}
+	
+	hold->SetBitRate( aBitrate );
+	iUrlArray->AppendL( hold );
+	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::SetChannelType()
+// Function to set iType
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetChannelType( TInt aType )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Entering" );
+
+	if ( aType != EUserDefined && aType != EIsdsPreset && aType != EAdhoc )
+		{
+		aType = EUserDefined;
+		}
+	
+	iType = aType;
+	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Exiting." );
+	}
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::SetMusicStoreStatusL()
+//Function to set iMusicStoreStatus parameter
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::SetMusicStoreStatusL( const TDesC& aMusicStoreStatus )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatusL - Entering" );
+	iMusicStoreStatus.Close();
+	iMusicStoreStatus.CreateL( aMusicStoreStatus );	
+	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatusL - Exiting" );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::ExternalizeL()
+// externalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::ExternalizeL( RWriteStream& aWriteStream )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Entering" );
+//! externalize TInts s
+	aWriteStream.WriteInt32L(iPresetId);
+	aWriteStream.WriteInt32L(iType);
+	aWriteStream.WriteInt32L(iChannelUrlCount);
+
+	// Externalize RBufs
+    aWriteStream << iLanguageCode;
+    aWriteStream << iLanguage;
+    aWriteStream << iCountryCode;
+    aWriteStream << iCountry;
+    aWriteStream << iGenereName;
+    aWriteStream << iGenereId;
+    aWriteStream << iName;
+    aWriteStream << iLastModified;
+    aWriteStream << iAdvertisementUrl;
+    aWriteStream << iAdvertisementInUse;
+    aWriteStream << iImgUrl;
+    aWriteStream << iDescription;
+    aWriteStream << iShortDesc;
+	aWriteStream << iMusicStoreStatus;
+	aWriteStream << iLogoData;
+
+	for ( TInt cnt=0; cnt < iChannelUrlCount; ++cnt )
+		{
+		GetUrl( cnt ).ExternalizeL( aWriteStream );
+		}
+	
+	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::InternalizeL()
+// internalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsPreset::InternalizeL( RReadStream& aReadStream )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Entering" );
+	//! Internalize TInts s
+	iPresetId=aReadStream.ReadInt32L();
+	iType=aReadStream.ReadInt32L();
+	iChannelUrlCount=aReadStream.ReadInt32L();
+
+	// Internalize RBufs
+	iLanguageCode.Close();
+	iLanguageCode.CreateL( aReadStream, KMaxTInt );
+
+	iLanguage.Close();
+	iLanguage.CreateL( aReadStream, KMaxTInt );
+
+	iCountryCode.Close();
+	iCountryCode.CreateL( aReadStream, KMaxTInt );
+
+	iCountry.Close();
+	iCountry.CreateL( aReadStream, KMaxTInt );
+
+	iGenereName.Close();
+	iGenereName.CreateL( aReadStream, KMaxTInt );
+
+	iGenereId.Close();
+	iGenereId.CreateL( aReadStream, KMaxTInt );
+
+	iName.Close();
+	iName.CreateL( aReadStream, KMaxTInt );
+
+	iLastModified.Close();
+	iLastModified.CreateL( aReadStream, KMaxTInt );
+
+	iAdvertisementUrl.Close();
+	iAdvertisementUrl.CreateL( aReadStream, KMaxTInt );
+
+	iAdvertisementInUse.Close();
+	iAdvertisementInUse.CreateL( aReadStream, KMaxTInt );
+
+	iImgUrl.Close();
+	iImgUrl.CreateL( aReadStream, KMaxTInt );
+
+	iDescription.Close();
+	iDescription.CreateL( aReadStream, KMaxTInt );
+
+	iShortDesc.Close();
+	iShortDesc.CreateL( aReadStream, KMaxTInt );
+
+	iMusicStoreStatus.Close();
+	iMusicStoreStatus.CreateL( aReadStream, KMaxTInt );
+
+
+    iUrlArray->ResetAndDestroy();
+
+	iLogoData.Close();
+	iLogoData.CreateL(aReadStream, KMaxTInt);
+		
+	CIRChannelServerUrl* url = NULL;
+	for ( TInt cnt = 0; cnt < iChannelUrlCount; ++cnt )
+		{
+		url = CIRChannelServerUrl::NewLC();
+		url->InternalizeL( aReadStream );
+		iUrlArray->AppendL( url );
+		CleanupStack::Pop( url );
+		}
+	
+	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetId()
+// Function to get iPresetId
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsPreset::GetId() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetId" );
+	return iPresetId;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetId()
+// Function to get iName
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  const TDesC& CIRIsdsPreset::GetName() const 
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetName" );
+	return iName;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetLangId()
+// Function to get iLanguageCode
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetLangId() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetLangId" );
+	return iLanguageCode;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetLangName()
+// Function to get iLanguage
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetLangName() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetLangName" );
+	return iLanguage;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetCountryId()
+// Function to get iCountryCode
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetCountryId() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryId" );
+	return iCountryCode;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetCountryName()
+// Function to get iCountry
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetCountryName() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryName" );
+	return iCountry;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetLastModifiedTime()
+// Function to get iLastModified
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetLastModifiedTime() const 
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetLastModifiedTime" );
+	return iLastModified;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetDescription()
+// Function to get iDescription
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetDescription() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetDescription" );
+	return iDescription;
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetShortDescription()
+// Function to get iDescription
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  const TDesC& CIRIsdsPreset::GetShortDescription() const 
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetShortDescription" );
+	return iShortDesc;
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetChannelType()
+// Function to get iType
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsPreset::GetChannelType() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelType" );
+	return iType;
+	}
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::GetGenreId()
+//Function to get iGenereId
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetGenreId() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreId" );
+	return iGenereId;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetGenreName()
+// Function to get iGenereName
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetGenreName() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreName" );
+	return iGenereName;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetAdvertisementUrl()
+// Function to get iAdvertisementUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementUrl() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementUrl" );
+	return iAdvertisementUrl;
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetAdvertisementInUse()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementInUse() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementInUse" );
+	return iAdvertisementInUse;
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetImgUrl()
+// Function to get iImgUrl
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetImgUrl() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetImgUrl" );
+	return iImgUrl;
+	}
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetUrlCount()
+// Function to get iChannelUrlCount
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsPreset::GetUrlCount() const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlCount" );
+	return iChannelUrlCount;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetUrl()
+// Function to get iLanguageCode
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRChannelServerUrl& CIRIsdsPreset::GetUrl( TInt aInt )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrl" );
+	ASSERT( aInt >= 0 && aInt < iUrlArray->Count() ); 
+	return ( ( *iUrlArray->At( aInt ) ) );
+	}
+
+
+EXPORT_C  const TDesC& CIRIsdsPreset::GetMusicStoreStatus() const 
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetMusicStoreStatus" );
+	return iMusicStoreStatus;	
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetLogoData()
+// Function to get LogoData
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  const TDesC8& CIRIsdsPreset::GetLogoData() const 
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetLogoData" );
+	return iLogoData;
+	}
+
+
+// ---------------------------------------------------------------------------
+//CIRIsdsPreset::=()
+//standard C++ copy constructor(deep copy)
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRIsdsPreset& CIRIsdsPreset::operator=( const CIRIsdsPreset& aPreset )
+	{
+    IRLOG_DEBUG( "CIRIsdsPreset::operator=  - Entering" );
+
+    if ( &aPreset == this)
+		{
+		return *this;
+		}
+
+    iName.Close();
+	iName.Create( aPreset.iName );
+
+	iLanguageCode.Close();
+	iLanguageCode.Create( aPreset.iLanguageCode );
+
+	iLanguage.Close();
+	iLanguage.Create( aPreset.iLanguage );
+
+	iCountryCode.Close();
+	iCountryCode.Create( aPreset.iCountryCode );
+
+	iCountry.Close();
+	iCountry.Create( aPreset.iCountry );
+
+	iLastModified.Close();
+	iLastModified.Create( aPreset.iLastModified );
+
+	iAdvertisementUrl.Close();
+	iAdvertisementUrl.Create( aPreset.iAdvertisementUrl );
+
+	iAdvertisementInUse.Close();
+	iAdvertisementInUse.Create( aPreset.iAdvertisementInUse );
+
+	iImgUrl.Close();
+	iImgUrl.Create( aPreset.iImgUrl );
+
+	iLogoData.Close();
+	iLogoData.Create( aPreset.iLogoData );
+
+	iDescription.Close();
+	iDescription.Create( aPreset.iDescription );
+
+	iShortDesc.Close();
+	iShortDesc.Create( aPreset.iShortDesc );
+	
+	iMusicStoreStatus.Close();
+	iMusicStoreStatus.Create( aPreset.iMusicStoreStatus );
+
+	iGenereName.Close();
+	iGenereName.Create( aPreset.iGenereName );
+
+	iGenereId.Close();
+	iGenereId.Create( aPreset.iGenereId );
+
+
+	iUrlArray->ResetAndDestroy();
+		
+	for(TInt cnt=0;cnt<aPreset.iChannelUrlCount;cnt++)
+		{
+		ASSERT( cnt >= 0 && cnt < aPreset.iUrlArray->Count() );
+		TRAPD( errUrl, SetUrlL( aPreset.iUrlArray->At( cnt )->GetServerName(), 
+		    aPreset.iUrlArray->At( cnt )->GetServerUrl(), 
+		    aPreset.iUrlArray->At( cnt )->GetBitRate()) )
+		
+		if ( errUrl != KErrNone )
+			{
+			return *this ;
+			}
+		}
+	iChannelUrlCount=aPreset.iChannelUrlCount;
+	iType=aPreset.iType;  //0 for user defined 1 for isds type.
+	iPresetId = aPreset.iPresetId;
+	IRLOG_DEBUG( "CIRIsdsPreset::operator= - Exiting." );
+ 	return *this;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetAvailableBitrates()
+// Function to get available bitrates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsPreset::GetAvailableBitrates( RArray<TInt>& aBitrates ) const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Entering." );
+	aBitrates.Reset();
+	TInt err = KErrNone;
+	for ( TInt loop = 0; loop < iUrlArray->Count() && !err; ++loop )
+		{
+		err = aBitrates.InsertInOrder( iUrlArray->At( loop )->GetBitRate() );
+		if ( err == KErrAlreadyExists )
+		    {
+		    // Do not allow duplicates, but strip them away.
+		    err = KErrNone;
+		    }
+		}
+
+    if ( err )
+        {
+        aBitrates.Reset();
+        }
+    
+	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Exiting." );
+	return err;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetUrlForBitrateL()
+// Function to get Url for a given bitrate
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetUrlForBitrateL( TInt aBitrate )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
+	CDesCArrayFlat* urlForBitrate = new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
+	CleanupStack::PushL( urlForBitrate );
+	iBitrate = aBitrate;
+	SortInOrderL();
+	//appending the urls with bit rate less than or
+	//equal to given bit rate limit
+	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
+		{
+		if ( aBitrate >= iUrlArray->At( loop )->GetBitRate())
+			{
+			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
+			}
+		}
+	
+	//appending	the url	with bit rate greater than given
+	//bit rate limit
+	for ( TInt loop = ( iUrlArray->Count()-1 ); loop >= 0; --loop)
+		{
+		if ( aBitrate<iUrlArray->At( loop )->GetBitRate() )
+			{
+			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
+			}
+		}
+	if ( urlForBitrate->MdcaCount()==0 && iUrlArray->Count() > 0 )
+		{
+		urlForBitrate->AppendL( iUrlArray->At( 0 )->GetServerUrl() );
+		}
+
+    CleanupStack::Pop( urlForBitrate );
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
+	return urlForBitrate;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetExactUrlForBitrateL()
+// Function to get Urls exactly matching a given bitrate for display purpose
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetExactUrlForBitrateL( TInt aBitrate )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
+	CDesCArrayFlat* urlForBitrate = 
+	    new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
+	
+	CleanupStack::PushL(urlForBitrate);
+
+	SortInOrderL();
+	//appending the urls with bit rate less than or
+	//equal to given bit rate limit
+	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
+		{
+		if ( aBitrate == iUrlArray->At( loop )->GetBitRate() )
+			{
+			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
+			}
+		}
+
+    CleanupStack::Pop( urlForBitrate );
+	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
+	return urlForBitrate;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetChannelUrlAtL()
+// Function to get channel Url for a given index
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRIsdsPreset::GetChannelUrlAtL( TInt aIndex ) const
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
+	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
+	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
+	return iUrlArray->At( aIndex )->GetServerUrl();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRIsdsPreset::GetChannelBitrateL()
+// Function to get channel Url for a given index
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsPreset::GetChannelBitrateL( TInt aIndex )
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
+	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
+	CDesCArrayFlat* urlForBitrate = 
+	    new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
+	
+	CleanupStack::PushL( urlForBitrate );
+	SortInOrderL();
+	//appending the urls with bit rate less than or
+	//equal to given bit rate limit
+	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
+		{
+		if ( iBitrate >= iUrlArray->At( loop )->GetBitRate())
+			{
+			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
+			}
+		}
+	
+	//appending	the url	with bit rate greater than given
+	//bit rate limit
+	for ( TInt loop = ( iUrlArray->Count() - 1 );loop >= 0; --loop )
+		{
+		if ( iBitrate<iUrlArray->At( loop )->GetBitRate() )
+			{
+			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
+			}
+		}
+	
+	if ( urlForBitrate->MdcaCount() == 0 && iUrlArray->Count() > 0 )
+		{
+		urlForBitrate->AppendL( iUrlArray->At( 0 )->GetServerUrl() );
+		}
+	
+    for ( TInt i = 0; i < iUrlArray->Count(); ++i )
+	    {
+	    if ( iUrlArray->At( i )->GetServerUrl().Compare
+	            ( urlForBitrate->MdcaPoint( aIndex ) ) == 0 )
+		    {
+		    IRRDEBUG2( "CIRIsdsPreset:: - GetChannelBitrateL", KNullDesC );
+		    CleanupStack::Pop( urlForBitrate );
+			return iUrlArray->At( i )->GetBitRate();
+		    }
+	    }
+    
+    CleanupStack::Pop( urlForBitrate );
+	IRRDEBUG2( "CIRIsdsPreset:: - GetChannelUrlAtL Exiting", KNullDesC );
+	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
+	return 0;
+	}
+
+
+//----------------------------------------------------------------------------
+// CIRIsdsPreset::SortInOrderL()
+// simple bubble shot
+// to sort the  bitrates in desc order
+//----------------------------------------------------------------------------
+//
+void CIRIsdsPreset::SortInOrderL()
+	{
+	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
+	//temporary holder for pointer
+	CIRChannelServerUrl* holdTemp = NULL;
+	TInt urlcount = iUrlArray->Count();
+	//sorts the array pointers [of urls] in the descending order of bit rate
+	//bubble sort algorithm is used for this
+	for ( TInt sortcount = ( urlcount - 1 ); sortcount >= 0; --sortcount )
+	  	{
+	    for ( TInt index = 1; index <= sortcount; index++ )
+	    	{
+	      	if ( iUrlArray->At( index - 1 )->GetBitRate() < 
+	      			iUrlArray->At( index )->GetBitRate())
+		       {
+		       holdTemp = iUrlArray->At( index-1 );
+		       iUrlArray->At( index - 1 ) = iUrlArray->At( index );
+		       iUrlArray->At( index ) = holdTemp;
+		       }
+	    	}
+	  	}
+	
+	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
+	return;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irlastplayedsongs.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,192 @@
+/*
+ * 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 <s32strm.h>
+
+#include "irdebug.h"
+#include "irlastplayedsongs.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Function : NewL
+// Function returns an instance of CIRLastPlayedSongs
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRLastPlayedSongs* CIRLastPlayedSongs::NewL()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::NewL - Entering" );
+	CIRLastPlayedSongs* self = CIRLastPlayedSongs::NewLC();
+	CleanupStack::Pop( self );
+	IRLOG_DEBUG( "CIRLastPlayedSongs::NewL - Exiting." );
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRLastPlayedSongs* CIRLastPlayedSongs::NewLC()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::NewLC - Entering" );
+	CIRLastPlayedSongs* self = new( ELeave )CIRLastPlayedSongs;
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	IRLOG_DEBUG( "CIRLastPlayedSongs::NewLC - Exiting." );
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::~CIRLastPlayedSongs()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRLastPlayedSongs::~CIRLastPlayedSongs()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::~CIRLastPlayedSongs - Entering" );
+	delete iSongName;
+	iSongName = NULL;
+	delete iArtistName;
+	iArtistName = NULL;
+	IRLOG_DEBUG( "CIRLastPlayedSongs::~CIRLastPlayedSongs - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::SetSongName()
+// Function to set song name from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLastPlayedSongs::SetSongName( const TDesC& aSongName )
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::SetSongName - Entering" );
+	iSongName = aSongName.Alloc();
+	IRLOG_DEBUG( "CIRLastPlayedSongs::SetSongName - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::GetSongName()
+// Function to get song name from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TDesC& CIRLastPlayedSongs::GetSongName()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::GetSongName" );
+	return *iSongName;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::SetArtistName()
+// Function to set artist name from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLastPlayedSongs::SetArtistName( const TDesC& aArtistName )
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::SetArtistName - Entering" );
+	iArtistName = aArtistName.Alloc();
+	IRLOG_DEBUG( "CIRLastPlayedSongs::SetArtistName - Exiting." );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::GetArtistName()
+// Function to get artist name from a TDesC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TDesC& CIRLastPlayedSongs::GetArtistName()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::GetArtistName" );
+	return *iArtistName;
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::ExternalizeL()
+// externalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLastPlayedSongs::ExternalizeL( RWriteStream& aWriteStream )
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::ExternalizeL - Entering" );
+	TInt32 len = iSongName->Length();
+	TRAP_IGNORE( aWriteStream.WriteInt32L( len ) )
+	aWriteStream << *iSongName;
+	len = iArtistName->Length();
+	TRAP_IGNORE( aWriteStream.WriteInt32L( len ) )
+	aWriteStream << *iArtistName;	
+	IRLOG_DEBUG( "CIRLastPlayedSongs::ExternalizeL - Exiting." );	
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::InternalizeL()
+// internalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLastPlayedSongs::InternalizeL( RReadStream& aReadStream )
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::InternalizeL - Entering" );
+	TInt8 len;
+	len = aReadStream.ReadInt8L();
+	iSongName = HBufC::NewL( aReadStream, len );
+	len=aReadStream.ReadInt8L();
+	iArtistName = HBufC::NewL( aReadStream, len) ;
+	IRLOG_DEBUG( "CIRLastPlayedSongs::InternalizeL - Exiting." );
+	}
+		
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::=()
+// standard C++ copy constructor(deep copy) 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C CIRLastPlayedSongs& CIRLastPlayedSongs::operator = ( const 
+	CIRLastPlayedSongs& aSng )
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::operator= - Entering" );
+	 if ( &aSng == this )
+		{
+		return *this;
+		}
+	 
+	iArtistName = aSng.iArtistName;
+	iSongName = aSng.iSongName;
+	IRLOG_DEBUG( "CIRLastPlayedSongs::operator= - Exiting." );
+	return *this;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CIRLastPlayedSongs::ConstructL()
+// standard second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRLastPlayedSongs::ConstructL()
+	{
+	IRLOG_DEBUG( "CIRLastPlayedSongs::ConstructL" );
+	return;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/src/irotaupdate.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,220 @@
+/*
+* 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:
+ *
+ */
+
+#include <s32strm.h>
+
+#include "irdebug.h"
+#include "irotaupdate.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+//----------------------------------------------------------------------------
+// Function : NewLC
+// Function returns an instance of CIROTAUpdate
+// Two phase constructor
+//----------------------------------------------------------------------------
+//
+EXPORT_C CIROTAUpdate* CIROTAUpdate::NewLC()
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::NewLC - Entering" );
+	CIROTAUpdate* self = new( ELeave )CIROTAUpdate;
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	IRLOG_DEBUG( "CIROTAUpdate::NewLC - Exiting." );
+	return self;
+	}
+
+
+//----------------------------------------------------------------------------
+// Function : NewL
+// Function returns an instance of CIROTAUpdate
+// Two phase constructor
+//----------------------------------------------------------------------------
+//
+EXPORT_C CIROTAUpdate* CIROTAUpdate::NewL()
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::NewL - Entering" );
+	CIROTAUpdate* self = CIROTAUpdate::NewLC();
+	CleanupStack::Pop( self );
+	IRLOG_DEBUG( "CIROTAUpdate::NewL - Exiting." );
+	return self;
+	}
+
+
+//----------------------------------------------------------------------------
+//CIROTAUpdate::ConstructL()
+//standard second phase constructor
+//----------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::ConstructL()
+	{
+    IRLOG_DEBUG( "CIROTAUpdate::ConstructL" );
+	return;
+	}
+
+
+//----------------------------------------------------------------------------
+// CIROTAUpdate::~CIROTAUpdate()
+// standard C++ destructor
+//----------------------------------------------------------------------------
+//	
+CIROTAUpdate::~CIROTAUpdate()
+	{
+    IRLOG_DEBUG( "CIROTAUpdate::~CIROTAUpdate - Entering" ); 
+    delete iUpdateMethod;
+    delete iVersion;
+    delete iOTAUrl;
+    IRLOG_DEBUG( "CIROTAUpdate::~CIROTAUpdate - Exiting." );
+	}
+
+
+//----------------------------------------------------------------------------
+//CIROTAUpdate::SetUpdateMethod()
+//Function to set update method
+//----------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::SetUpdateMethod( const TDesC& aUpdateMethod )
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateMethod - Entering" );
+	iUpdateMethod = aUpdateMethod.Alloc();
+	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateMethod - Exiting." );
+	}
+	
+
+//----------------------------------------------------------------------------
+// CIROTAUpdate::SetVersion()
+// Function to set version
+//----------------------------------------------------------------------------
+//	
+EXPORT_C  void CIROTAUpdate::SetVersion( const TDesC& aVersion )
+	{          
+	IRLOG_DEBUG( "CIROTAUpdate::SetVersion - Entering" );
+	iVersion = aVersion.Alloc();
+	IRLOG_DEBUG( "CIROTAUpdate::SetVersion - Exiting." );
+	}
+
+
+//----------------------------------------------------------------------------
+// CIROTAUpdate::SetUpdateInterval()
+// Function to set update interval
+//----------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::SetUpdateInterval( const TDesC& aUpdateInterval )
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateInterval - Entering" );
+	TLex var( aUpdateInterval );
+	var.Val( iUpdateInterval );
+	IRLOG_DEBUG( "CIROTAUpdate::SetUpdateInterval - Exiting." );
+	}
+	
+
+//----------------------------------------------------------------------------
+// CIROTAUpdate::SetOTAUrl()
+// Function to set OTA Url
+//----------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::SetOTAUrl( const TDesC& aOTAUrl )
+  {
+    IRLOG_DEBUG( "CIROTAUpdate::SetOTAUrl - Entering" );
+	iOTAUrl = aOTAUrl.Alloc();
+	IRLOG_DEBUG( "CIROTAUpdate::SetOTAUrl - Exiting." );
+  }
+
+
+// ---------------------------------------------------------------------------
+// CIROTAUpdate::ExternalizeL()
+// externalizes the data
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::ExternalizeL( RWriteStream& aStream ) const
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::ExternalizeL - Entering" );
+	aStream.WriteInt32L( iUpdateInterval );
+	TInt length = 0;
+	if( iVersion )
+		{
+		length = iVersion->Length();
+		aStream.WriteInt32L( length );
+		aStream << *iVersion;
+		}
+	else
+		{
+		length = 0;
+		aStream.WriteInt32L( length );
+		}
+
+	if ( iOTAUrl )
+		{
+		length = iOTAUrl->Length();
+		aStream.WriteInt32L( length );
+		aStream << *iOTAUrl;
+		}
+	else
+		{
+		length = 0;
+		aStream.WriteInt32L( length );
+		}
+		
+	if ( iUpdateMethod )
+		{
+		length = iUpdateMethod->Length();
+		aStream.WriteInt32L( length );
+		aStream << *iUpdateMethod;
+		}
+	else
+		{
+		length = 0;
+		aStream.WriteInt32L( length );
+		}
+	
+    IRLOG_DEBUG( "CIROTAUpdate::ExternalizeL - Exiting." );
+	}  
+
+
+// ---------------------------------------------------------------------------
+// CIROTAUpdate::InternalizeL()
+// internalizes the data.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIROTAUpdate::InternalizeL( RReadStream& aStream )
+	{
+	IRLOG_DEBUG( "CIROTAUpdate::InternalizeL - Entering" );
+	iUpdateInterval = aStream.ReadInt32L();
+	TInt length = aStream.ReadInt32L();
+	if ( length )
+		{
+		iVersion = HBufC::NewL( aStream, length );
+		}
+		
+	length = aStream.ReadInt32L();
+	if ( length )
+		{
+		iOTAUrl = HBufC::NewL( aStream, length );
+		}
+		
+ 	length = aStream.ReadInt32L();
+	if ( length )
+		{
+		iUpdateMethod = HBufC::NewL( aStream, length );
+		}
+	
+	IRLOG_DEBUG( "CIRBrowseCatagoryItems::InternalizeL - Exiting." );
+	}  
+	
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/bmarm/irdataprovideru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,23 @@
+EXPORTS
+	_ZN15CIRDataProvider16ReleaseResourcesEv @ 1 NONAME
+	_ZN15CIRDataProvider19GetHttpDataProviderEv @ 2 NONAME
+	_ZN15CIRDataProvider19IRHttpCancelRequestEv @ 3 NONAME
+	_ZN15CIRDataProvider19IRHttpIssueRequestLER18CIRHttpRequestData @ 4 NONAME
+	_ZN15CIRDataProvider4NewLER23MIRDataProviderObserver @ 5 NONAME
+	_ZN15CIRDataProvider4NewLER23MIRDataProviderObserverRK7TDesC16 @ 6 NONAME
+	_ZN19CIRHttpDataProvider21GetLogoDownloadEngineEv @ 7 NONAME
+	_ZN21CIRLogoDownloadEngine12SendRequestLEP13CIRIsdsPresetP21MLogoDownloadObserveriii @ 8 NONAME
+	_ZN21CIRLogoDownloadEngine12SendRequestLEP13CIRIsdsPresetii @ 9 NONAME
+	_ZN21CIRLogoDownloadEngine13GetCacheLogoLERK7TDesC16Ri @ 10 NONAME
+	_ZN21CIRLogoDownloadEngine13SendCacheLogoEv @ 11 NONAME
+	_ZN21CIRLogoDownloadEngine17CancelTransactionEv @ 12 NONAME
+	_ZN21CIRLogoDownloadEngine19SendPresetWithLogoLEv @ 13 NONAME
+	_ZN21CIRLogoDownloadEngine4NewLEv @ 14 NONAME
+	_ZN21CIRLogoDownloadEngineD0Ev @ 15 NONAME
+	_ZN21CIRLogoDownloadEngineD1Ev @ 16 NONAME
+	_ZN21CIRLogoDownloadEngineD2Ev @ 17 NONAME
+	_ZNK21CIRLogoDownloadEngine9IsRunningEv @ 18 NONAME
+	_ZTI21CIRLogoDownloadEngine @ 19 NONAME
+	_ZTV21CIRLogoDownloadEngine @ 20 NONAME
+	_ZN21CIRLogoDownloadEngine13IsLogoCachedLEP13CIRIsdsPresetii @ 21 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/bwinscw/irdataprovideru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+	?SendPresetWithLogoL@CIRLogoDownloadEngine@@QAEXXZ @ 1  NONAME ; void CIRLogoDownloadEngine::SendPresetWithLogoL(void)
+	?GetCacheLogoL@CIRLogoDownloadEngine@@QAEXABVTDesC16@@AAH@Z @ 2  NONAME ; void CIRLogoDownloadEngine::GetCacheLogoL(class TDesC16 const &, int &)
+	?CancelTransaction@CIRLogoDownloadEngine@@QAEXXZ @ 3  NONAME ; void CIRLogoDownloadEngine::CancelTransaction(void)
+	?SendRequestL@CIRLogoDownloadEngine@@QAEXPAVCIRIsdsPreset@@PAVMLogoDownloadObserver@@HHH@Z @ 4  NONAME ; void CIRLogoDownloadEngine::SendRequestL(class CIRIsdsPreset *, class MLogoDownloadObserver *, int, int, int)
+	?NewL@CIRDataProvider@@SAPAV1@AAVMIRDataProviderObserver@@@Z @ 5  NONAME ; class CIRDataProvider * CIRDataProvider::NewL(class MIRDataProviderObserver &)
+	?IsLogoCachedL@CIRLogoDownloadEngine@@QAEHPAVCIRIsdsPreset@@HH@Z @ 6  NONAME ; int CIRLogoDownloadEngine::IsLogoCachedL(class CIRIsdsPreset *, int, int)
+	?SendRequestL@CIRLogoDownloadEngine@@QAEXPAVCIRIsdsPreset@@HH@Z @ 7  NONAME ; void CIRLogoDownloadEngine::SendRequestL(class CIRIsdsPreset *, int, int)
+	?NewL@CIRLogoDownloadEngine@@SAPAV1@XZ @ 8  NONAME ; class CIRLogoDownloadEngine * CIRLogoDownloadEngine::NewL(void)
+	?SendCacheLogo@CIRLogoDownloadEngine@@QAEAAVTDesC8@@XZ @ 9  NONAME ; class TDesC8 & CIRLogoDownloadEngine::SendCacheLogo(void)
+	??1CIRLogoDownloadEngine@@UAE@XZ @ 10  NONAME ; CIRLogoDownloadEngine::~CIRLogoDownloadEngine(void)
+	?IRHttpCancelRequest@CIRDataProvider@@QAEXXZ @ 11  NONAME ; void CIRDataProvider::IRHttpCancelRequest(void)
+	?IsRunning@CIRLogoDownloadEngine@@QBEHXZ @ 12  NONAME ; int CIRLogoDownloadEngine::IsRunning(void) const
+	?NewL@CIRDataProvider@@SAPAV1@AAVMIRDataProviderObserver@@ABVTDesC16@@@Z @ 13  NONAME ; class CIRDataProvider * CIRDataProvider::NewL(class MIRDataProviderObserver &, class TDesC16 const &)
+	?GetLogoDownloadEngine@CIRHttpDataProvider@@QAEPAVCIRLogoDownloadEngine@@XZ @ 14  NONAME ; class CIRLogoDownloadEngine * CIRHttpDataProvider::GetLogoDownloadEngine(void)
+	?ReleaseResources@CIRDataProvider@@QAEXXZ @ 15  NONAME ; void CIRDataProvider::ReleaseResources(void)
+	?GetHttpDataProvider@CIRDataProvider@@QAEPAVCIRHttpDataProvider@@XZ @ 16  NONAME ; class CIRHttpDataProvider * CIRDataProvider::GetHttpDataProvider(void)
+	?IRHttpIssueRequestL@CIRDataProvider@@QAEXAAVCIRHttpRequestData@@@Z @ 17  NONAME ; void CIRDataProvider::IRHttpIssueRequestL(class CIRHttpRequestData &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+PRJ_MMPFILES
+irdataprovider.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/group/irdataprovider.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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 		<platform_paths.hrh>
+
+//MACRO ENABLE_USAGE_REPORT_TEST
+
+TARGET        irdataprovider.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x2000B49C
+
+PAGED
+
+SOURCEPATH    ../src
+
+SOURCE        irdataprovider.cpp
+SOURCE        irhttpdataprovider.cpp
+SOURCE        irdataprovidertimer.cpp
+SOURCE        irhttppost.cpp
+SOURCE        irlogodownloadengine.cpp
+
+USERINCLUDE    ../inc
+USERINCLUDE    ../../inc
+USERINCLUDE    ../../irsettings/inc
+USERINCLUDE    ../../irnetworkcontroller/inc
+USERINCLUDE    ../../ircommon/inc
+USERINCLUDE    ../../irfavoritesdb/inc
+USERINCLUDE    ../../irpresetplugin/inc
+USERINCLUDE    ../../ircachemgmt/inc
+USERINCLUDE    ../../irsessionlog/inc
+USERINCLUDE    ../../../presetserver/include
+USERINCLUDE    ../../../presetserver/clientinc
+USERINCLUDE    ../../../presetserver/serverinc
+
+APP_LAYER_SYSTEMINCLUDE
+// TODO will be removed after the changes of /epoc32/include
+SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(http)
+SYSTEMINCLUDE    MW_LAYER_PUBLIC_EXPORT_PATH(http)
+SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(mmf/common)
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             cone.lib
+LIBRARY             efsrv.lib
+LIBRARY             euser.lib
+LIBRARY             http.lib
+LIBRARY             inetprotutil.lib
+LIBRARY             irnetworkcontroller.lib
+LIBRARY             irsettings.lib
+LIBRARY             irdatastructures.lib
+LIBRARY             irfavoritesdb.lib
+LIBRARY             psclient100.lib
+LIBRARY             ircachemgmt.lib
+LIBRARY             mmfcontrollerframework.lib //to get the supported MIME types
+LIBRARY             avkon.lib //to display the information note
+
+
+
+//test linker error
+LIBRARY cenrepnotifhandler.lib
+LIBRARY	commonengine.lib
+LIBRARY etel.lib
+LIBRARY etel3rdparty.lib
+LIBRARY etelmm.lib
+LIBRARY estor.lib
+LIBRARY xmlframework.lib
+
+
+//LIBRARY avctpplugins.lib
+//LIBRARY eintsock.lib
+LIBRARY impapprotocolcontroller.lib
+LIBRARY imut.lib
+LIBRARY netmsg.lib
+LIBRARY netmeta.lib
+LIBRARY nifman.lib
+LIBRARY pops.lib
+LIBRARY responsemsg.lib
+LIBRARY smts.lib
+LIBRARY ezlib.lib
+
+//test end
+
+
+LIBRARY        flogger.lib
+
+#if defined( WINSCW )
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY				CAP_GENERAL_DLL
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irdataprovider.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,302 @@
+/*
+* 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:  Engine to fetch the logos 
+*
+*/
+
+
+#ifndef IRDATAPROVIDER_H
+#define IRDATAPROVIDER_H
+
+#include <f32file.h>
+
+#include "irdataprovidertimer.h"
+#include "irhttpdataproviderobserver.h"
+
+class CIRHttpDataProvider;
+class CIRHttpRequestData;
+class CIRHttpResponseData;
+class CIRSettings;
+class MIRDataProviderObserver;
+
+/**
+ * This class provides the interface with the UI for IRDataProvider component
+ *
+ * @code
+ *
+ * // Create the data provider object. This is used for interaction with
+ * // the iSDS
+ *
+ * CIRDataProvider* iDataProvider = CIRDataProvider::NewL(iObserver);
+ *
+ * // This API is used to give a request to the iSDS and the aRequestObject
+ * // contains the headers to be set for the request url. The call back
+ * // function as defined by MIRDataProviderObserver is called to indicate
+ * // any responses.
+ *
+ * iDataProvider->IRHttpIssueRequestL( aRequestObject );
+ *
+ * // This API is called to cancel a previously issued request.
+ * // If there is no previously issued request it is ignored.
+ *
+ *  iDataProvider->IRHttpCancelRequest();
+ *
+ * // This API is called to indicate the data provider component to
+ * // release the resources held by it generally called when the network
+ * // connection gets disconnected.
+ *
+ * iDataProvider->ReleaseResources();
+ * @endcode
+ */
+
+NONSHARABLE_CLASS ( CIRDataProvider ): public CBase,
+                                       public MIRHttpDataProviderObserver,
+                                       public MIRDataProviderTimeoutNotifier
+    {
+public:
+
+    /**
+     *  CIRDataProvider::NewL
+     *  Creates instance of CIRDataProvider.
+     *  @param aObserver Observer for HTTP request.
+     *  @return CIRDataProvider*
+     */
+    IMPORT_C static CIRDataProvider *NewL(MIRDataProviderObserver &aObserver);
+
+    /**
+     *  CIRDataProvider::NewL()
+     *  Creates instance of CIRDataProvider.
+     *  @param aObserver Observer for HTTP request.
+     *  @return CIRDataProvider*
+     */
+    IMPORT_C static CIRDataProvider *NewL( MIRDataProviderObserver &aObserver,
+                                           const TDesC &aFilePath );
+
+    /**
+     *  CIRDataProvider::~CIRDataProvider()
+     *  Destructs an instance of CIRDataProvider.
+     */
+    virtual ~CIRDataProvider();
+
+    /**
+     *  CIRDataProvider::IRHttpIssueRequest()
+     *  Used to issue an Http request
+     *  @param aRequestObject A reference of CIRHttpRequestData containing
+     *  HTTP request parameters
+     */
+    IMPORT_C void IRHttpIssueRequestL( CIRHttpRequestData &aRequestObject );
+
+    /**
+     *  CIRDataProvider::IRHttpCancelRequest()
+     *  Used to cancel a request
+     */
+    IMPORT_C void IRHttpCancelRequest();
+
+    /**
+     *  CIRDataProvider::ReleaseResources()
+     *  Used to release all the resources help by data provider
+     *  Called when there is a network disconnection
+     */
+    IMPORT_C void ReleaseResources();
+
+    IMPORT_C CIRHttpDataProvider* GetHttpDataProvider();
+	
+    /**
+     *  CIRDataProvider::ExtractHeaderValue()
+     *  
+     *  
+     */
+    void ExtractHeaderValue( const TDesC8& aHeaderData,
+                    const TDesC8& aHeaderName, const TDesC8& aDelimeter,
+                    TDes8& aHolder ) const;
+
+    /*
+     *These are the callback functions used by CIRHttpDataProvider to
+     *provide the CIRDataProvider with the data after processing the
+     *HTTP request.
+     */
+    /**
+     *  CIRDataProvider::HttpEventComplete()
+     *  Used to Indicate to the observer that the request event has completed
+     */
+    virtual void HttpEventComplete();
+
+    /**
+     *  CIRDataProvider::HttpHeaderReceived()
+     *  Used by CIRHttpDataProvider to indicate that an HTTP header is
+     *  received.
+     *  @param aHeaderData Reference to the Header Info
+     */
+    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData );
+
+    /**
+     *  CIRDataProvider::HttpDateHeaderReceived()
+     *  Used by CIRHttpDataProvider to indicate that an HTTP header is
+     *  received.
+     *  @param aHeader Reference to the Header Info
+     *  @param aTime Reference to the TTime object containing time to be
+     *  set in the header
+     */
+    virtual void HttpDateHeaderReceived( const TDesC8 &aHeader,
+                    const TTime& aTime );
+
+    /**
+     *  CIRDataProvider::HttpBodyReceived()
+     *  Used by CIRHttpDataProvider to indicate that an HTTP response
+     *  body is received.
+     *  @param aHeaderData Reference to the Body data of HTTP request
+     */
+    virtual void HttpBodyReceived( const TDesC8 &aBodyData );
+
+    /**
+     *  CIRDataProvider::HttpTransactionError()
+     *  Used by CIRHttpDataProvider to indicate that a HTTP Transaction
+     *  error has occured.
+     *  @param aErrCode Error code indicating the HTTP Transaction error
+     */
+    virtual void HttpTransactionError( TInt aErrCode );
+
+    /**
+     *  CIRDataProvider::HttpResponseCodeRecieved()
+     *  Used by CIRHttpDataProvider to indicate to the iSDS Client that a
+     *  304 Not Changed response received
+     *  Note: Implemented in version 0.2
+     *  @param aResponseCode Response code received after HTTP Transaction
+     */
+    virtual void HttpResponseCodeRecieved( TInt aResponseCode );
+
+    /**
+     *  CIRDataProvider::TimerExpired( )
+     *  Called to indicate expiry of timer
+     */
+    virtual void TimerExpired();
+
+private:
+    
+    /**
+     *  CIRDataProvider::CIRDataProvider()
+     *  Default Constructor
+     *  @param aObserver Reference to the IRDataProvider Observer
+     */
+    CIRDataProvider( MIRDataProviderObserver &aObserver );
+    
+    /**
+     *  void CIRDataProvider::ConstructL()
+     *  2nd Phase construction
+     */
+    void ConstructL();
+    
+    /**
+     *  void CIRDataProvider::ConstructL()
+     *  2nd Phase construction
+     */
+    void ConstructL( const TDesC &aFileName );
+    
+    /**
+     *  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
+     *  Creates instance of CIRDataProvider.
+     *  @param aObserver Observer for HTTP request.
+     *  @return CIRDataProvider*
+     */
+    static CIRDataProvider *NewLC( MIRDataProviderObserver &aObserver );
+    
+    /**
+     *  CIRDataProvider::NewLC()
+     *  Creates instance of CIRDataProvider.
+     *  @param aObserver Observer for HTTP request.
+     *  @return CIRDataProvider*
+     */
+    static CIRDataProvider *NewLC( MIRDataProviderObserver &aObserver,
+                                   const TDesC &aFileName );
+
+    /**
+     *  CIRDataProvider::SetOffsetSeconds()
+     *  Stores the offset between device time and response header in settings
+     *  @param isds time
+     */
+    void SetOffsetSeconds( const TTime& aTime );
+    
+#ifdef REQUEST_ZIP_RESPONSE
+    /**
+     *  CIRDataProvider::UnzipFileL()
+     *  Unzip the gz file to xml file
+     *  @param aOutputFile out put file
+     */
+    void UnzipFileL( const TDesC& aOutputFile );
+#endif
+    
+private:
+
+    /**
+     * Reference of the observer object to which call backs are returned
+     */
+    MIRDataProviderObserver &iDataProviderObserver;
+
+    /**
+     * Pointer to the HttpDataProvider object which is the actual
+     * implementation of RFC 2616
+     */
+    CIRHttpDataProvider *iHttpDataProvider;
+
+    /**
+     * Pointer to timer object
+     * Used for Timeout
+     */
+    CIRDataProviderTimer *iDataProviderTimer;
+    
+    /**
+     * File server session handle
+     * Used for creation of XML data
+     */
+    RFs iFsSession;
+    
+    /**
+     * File handle to create the xml file
+     */
+    RFile iFile;
+
+#ifdef REQUEST_ZIP_RESPONSE
+    /**
+     * Name of the Xml Gz file to be created
+     */
+    TFileName iXmlGzFilePath;
+#endif
+    
+    /**
+     * Name of the Xml file to be created
+     */
+    TFileName iXmlFilePath;
+
+    /**
+     * Pointer to Response header data
+     */
+    CIRHttpResponseData* iResponseHeaders;
+
+    /**
+     * Used to access Settings object
+     */
+    CIRSettings* iIRSettings;
+
+    /**
+     * Timer timeout value
+     */
+    TInt iTimeOut;
+    };
+
+#endif // IRDATAPROVIDER_H
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irdataproviderconstants.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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 IRDATAPROVIDERCONSTANTS_H
+#define IRDATAPROVIDERCONSTANTS_H
+
+#include <e32def.h>
+
+// Constants
+const TInt KMaxHeaderNameLength = 32;
+const TInt KMaxHeaderValueLength = 128;
+const TInt KMaxStatusTextLength = 32;
+const TInt KDPMaxContentTypeLength = 128;
+const TInt KMaxCharSetLength = 128;
+
+// This client accepts all content types.
+_LIT8( KAccept, "*/*" );
+// Used to specify the Accept Charset
+_LIT8( KAcceptCharset, "iso-8859-1, utf-8, iso-10646-ucs-2; q=0.6" );
+// Used to specify the Accept Language
+_LIT8( KAcceptLanguage, "en" );
+// Used to specify the Accept encoding
+_LIT8( KAcceptEncoding, "gzip" );
+// Some texts for header output
+_LIT( KDPColon, ": " );
+// Default Content-Type
+_LIT8( KDefaultContentType, "application/xml" );
+// Default CharSet
+_LIT8( KDefaultCharSet, "UTF-8" );
+
+ // HTTP POST ContentType
+_LIT8( KPostContentType, "application/x-gzip" );
+/*!
+ * Http Success 2xx Status codes
+ */
+
+const TInt KOk = 200;
+const TInt KCreated = 201;
+const TInt KAccepted = 202;
+const TInt KNonAuthoritativeInformation = 203;
+const TInt KNoContent = 204;
+const TInt KResetContent = 205;
+const TInt KPartialContent = 206;
+/*!
+ * Redirection 3xx status codes
+ */
+const TInt KMultipleChoices = 300;
+const TInt KMovedPermanently = 301;
+const TInt KFound = 302;
+const TInt KSeeOther = 303;
+const TInt KNotModified = 304;
+const TInt KUseProxy = 305;
+/*
+This status code is not used as per RFC 2616
+const TInt KUnused = 306 
+ */
+const TInt KTemporaryRedirect = 307;
+/*!
+ * Client Error 4xx status codes
+ */
+const TInt KBadRequest = 400;
+const TInt KUnauthorized = 401;
+const TInt KPaymentRequired = 402;
+const TInt KForbidden = 403;
+const TInt KNotFound = 404;
+const TInt KMethodNotAllowed = 405;
+const TInt KNotAcceptable = 406;
+const TInt KProxyAuthenticationRequired = 407;
+const TInt KRequestTimeout = 408;
+const TInt KConflict = 409;
+const TInt KGone = 410;
+const TInt KLengthRequired = 411;
+const TInt KPreconditionFailed = 412;
+const TInt KRequestEntityTooLarge = 413;
+const TInt KRequestURITooLong = 414;
+const TInt KUnsupportedMediaType = 415;
+const TInt KRequestedRangeNotSatisfiable = 416;
+const TInt KExpectationFailed = 417;
+/*!
+ * Server Error 5xx status codes
+ */
+const TInt KInternalServerError = 500;
+const TInt KNotImplemented = 501;
+const TInt KBadGateway = 502;
+const TInt KServiceUnavailable = 503;
+const TInt KGatewayTimeout = 504;
+const TInt KHTTPVersionNotSupported = 505;
+/*!
+ * Timeout  code
+ */
+const TInt KDataProviderTimeout =  - 12345;
+const TInt KDndTimedOut = -5120;
+
+#endif // IRDATAPROVIDERCONSTANTS_H
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irdataproviderobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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 IRDATAPROVIDEROBSERVER_H
+#define IRDATAPROVIDEROBSERVER_H
+
+#include <e32cmn.h>
+
+class CIRHttpResponseData;
+
+/**
+ * MIRDataProviderObserver
+ * passes events and responses body data with this interface. 
+ * An instance of this class must be provided for construction of 
+ * CIRDataProvider.
+ */
+
+class MIRDataProviderObserver
+    {
+public:
+
+    /** 
+     *  void MIRDataProviderObserver::IRHttpGeneralError(TInt aErrCode)
+     *  Used to determine the Private path of IRAPP
+     *     
+     */
+    virtual void IRHttpGeneralError( TInt aErrCode ) = 0;
+    
+    /** 
+     *  void MIRDataProviderObserver::IRHttpDataReceived(TDesC& aXmlPath)
+     *  Used to determine the Private path of IRAPP
+     */
+    virtual void IRHttpDataReceived( const TDesC &aXmlPath,
+            const CIRHttpResponseData& aResponseHeaders ) = 0;
+    /** 
+     *  void MIRDataProviderObserver::IRHttpContentNotChanged()
+     *  Used to determine the Private path of IRAPP
+     */
+    virtual void IRHttpResponseCodeReceived( TInt aResponseCode,
+            CIRHttpResponseData& aResponseHeaders  ) = 0;
+    };
+    
+#endif // IRDATAPROVIDEROBSERVER_H
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irdataprovidertimer.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* 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 IRDATAPROVIDERTIMER_H
+#define IRDATAPROVIDERTIMER_H
+
+#include <e32base.h>
+
+/**
+ * Call for timer expiry
+ */
+class MIRDataProviderTimeoutNotifier
+    {
+public:
+
+    /**
+     * Called when the timer raises an event.
+     */
+    virtual void TimerExpired() = 0;
+    };
+
+/**
+ * Timer class for response timerouts
+ */
+NONSHARABLE_CLASS ( CIRDataProviderTimer ) : public CTimer
+    {
+public:
+
+    /**
+     * CIRDataProviderTimer::NewL()
+     * Two phase constructor
+     * @param aPriority Specifies the priority of the timer
+     * @param aNotify Reference of the observer
+     * @return CIRDataProviderTimer object
+     */
+
+    static CIRDataProviderTimer *NewL( const TInt aPriority,
+                    MIRDataProviderTimeoutNotifier &aNotify );
+
+    /** 
+     * CIRDataProviderTimer::NewLC()
+     * @param aPriority Specifies the priority of the timer
+     * @param aNotify Reference of the observer
+     * @return CIRDataProviderTimer object
+     */
+    static CIRDataProviderTimer *NewLC( const TInt aPriority,
+                    MIRDataProviderTimeoutNotifier &aNotify );
+
+    /**
+     * CIRDataProviderTimer::~CIRDataProviderTimer()
+     * Default C++ destructor
+     */
+    virtual ~CIRDataProviderTimer();
+
+protected:
+
+    /** 
+     * Derived from CTimer
+     * CIRDataProviderTimer::RunL()
+     */
+    void RunL();
+
+    /** 
+     * Derived from CTimer
+     * CIRDataProviderTimer::RunError()
+     */
+    TInt RunError( TInt aError );
+
+private:
+
+    /**
+     * CIRDataProviderTimer::CIRDataProviderTimer()
+     * 
+     */
+    CIRDataProviderTimer( const TInt aPriority,
+                    MIRDataProviderTimeoutNotifier &aNotify );
+
+    /**
+     * CIRDataProviderTimer::ConstructL()
+     * Second phase constructor
+     */
+    void ConstructL();
+
+private:
+
+    /** 
+     * Handle to the class to be notified of a timeout event.
+     */
+    MIRDataProviderTimeoutNotifier &iNotify;
+
+    };
+
+#endif // IRDATAPROVIDERTIMER_H
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irhttpdataprovider.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,257 @@
+/*
+* 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 IRHTTPDATAPROVIDER_H
+#define IRHTTPDATAPROVIDER_H
+
+#include <mhttptransactioncallback.h>
+#include <rhttpsession.h>
+
+#include "irdataproviderconstants.h"
+#include "irfavoritesdb.h"
+
+class CIRHttpPost;
+class CIRHttpRequestData;
+class CIRNetworkController;
+class CIRLogoDownloadEngine;
+class CIRFavoritesDb;
+class MIRHttpDataProviderObserver;
+
+/**
+ * This class provides the implementation of the HTTP client
+ */
+
+NONSHARABLE_CLASS( CIRHttpDataProvider ) : public CBase,
+                                           public MHTTPTransactionCallback
+    {
+public:
+    
+    /**
+     * CIRHttpDataProvider::CIRHttpDataProvider()
+     * Creates instance of CIRHttpDataProvider.
+     * @param aObserver Reference to HTTP Data provider observer
+     */
+    CIRHttpDataProvider( MIRHttpDataProviderObserver &aObserver );
+    
+    /**
+     * CIRHttpDataProvider::~CIRHttpDataProvider()
+     * Destructs instance of CIRHttpDataProvider.
+     */
+    virtual ~CIRHttpDataProvider();
+    
+    /**
+     * CIRHttpDataProvider::NewL()
+     * Creates instance of CIRHttpDataProvider.
+     * @param aObserver Reference to HTTP Data provider observer
+     */
+    static CIRHttpDataProvider *NewL( MIRHttpDataProviderObserver &aObserver );
+    
+    /**
+     *  CIRHttpDataProvider::NewLC()
+     *  Creates instance of CIRHttpDataProvider.
+     *  @param aObserver Reference to HTTP Data provider observer
+     */
+    static CIRHttpDataProvider *NewLC( MIRHttpDataProviderObserver &aObserver );
+    
+    /**
+     * CIRHttpDataProvider::ConstructL()
+     * 2nd phase construction
+     */
+    void ConstructL();
+    
+    /**
+     * CIRHttpDataProvider::CancelTransactionL()
+     * Cancel the issued Http transaction
+     */
+    void CancelTransaction();
+    
+    /**
+     * CIRHttpDataProvider::GetHttpSession()
+     * returns the iHttpSession
+     */
+    RHTTPSession GetHttpSession();
+
+    /**
+     *  CIRHttpDataProvider::IssueHttpRequestL()
+     *  Used to issue the request.
+     *  @param aRequestInfo Reference to request object
+     */
+    TInt IssueHttpRequestL( CIRHttpRequestData &aRequestObject );
+    
+    /**
+     *  CIRHttpDataProvider::SetHttpContentType()
+     *  Set the Http content type
+     *  @param aContentType Specifies the Content-Type
+     *  @param aCharSet Specifies the Charecter set
+     */
+    void SetHttpContentType( const TDesC &aContentType, const TDesC &aCharSet );
+
+    /**
+     *  CIRHttpDataProvider::InitializeHttpDataProviderL();
+     *  Initialize the data provider component
+     */
+    void InitializeHttpDataProviderL();
+
+    /**
+     *  CIRHttpDataProvider::ReleaseResources();
+     *  Releases the resources held by data provider
+     */
+    void ReleaseResources();
+
+    IMPORT_C CIRLogoDownloadEngine* GetLogoDownloadEngine();
+
+    private:
+    /**
+     * CIRHttpDataProvider::MHFRunL()
+     * Inherited from MHTTPTransactionCallback
+     * Called by framework to pass transaction events.
+     * @param aTransaction HTTP Transaction object
+     * @param aEvent HTTP Transaction Event
+     */
+    void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent &aEvent );
+    
+    /**
+     * CIRHttpDataProvider::MHFRunError()
+     * Inherited from MHTTPTransactionCallback
+     * Called by framework to pass transaction errors
+     * @param aError Error code of the HTTP Transactin
+     * @return TInt Return code KErrNone if success
+     */
+    TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction,
+                      const THTTPEvent &aEvent );
+    
+    /**
+     *  CIRHttpDataProvider::ExtractResponseHeadersL()
+     *  Used to Extract the response headers.
+     *  @param aTransaction HTTP Transaction object
+     */
+    void ExtractResponseHeadersL( const RHTTPTransaction& aTransaction );
+    
+    /**
+     *  CIRHttpDataProvider::SetHeaderL()
+     *  Used to set the Http header
+     *  @param aHeaders HTTP Headers object
+     *  @param aHeaderField Header field
+     *  @param aHeaderValue Header value
+     */
+    void SetHeaderL( RHTTPHeaders aHeaders, TInt aHeaderField,
+                     const TDesC8 &aHeaderValue ) const;
+
+    /**
+     * CIRHttpDataProvider::BuildHeadersL()
+     * Build the headers for the request
+     * @param CIRHttpRequestData&
+     */
+    void BuildHeadersL( const CIRHttpRequestData &aRequestInfo );
+
+    /**
+     * CIRHttpDataProvider::ValidateStatusCode()
+     * Validate the status code returned
+     * @param aStatusCode Status code
+     */
+    void ValidateStatusCode( TInt aStatusCode );
+
+    /**
+     *  CIRHttpDataProvider::CloseLogFile ();
+     *  Used to Close the log file LogUsage.gz externally 
+     *  from other sources (bug-fixing)
+     */
+    void CloseLogFile();
+
+public:
+
+    /**
+     * iSetNonUAProfUserAgent Set when the UAProf should not be used
+     * may be used for image data provider
+     */
+    TBool iSetNonUAProfUserAgent;
+
+private:
+
+    /**
+     * Status code of the response
+     */
+    TInt iStatusCode;
+
+    /**
+     * Indicates if the transaction is active ie. there is a pending
+     * request.
+     */
+    TBool iRunning;
+
+    /**
+     * Used to identify first request to the data provider object
+     */
+    TBool iFirstTime;
+
+    /**
+     * HTTP session object
+     */
+    RHTTPSession iHttpSession;
+
+    /**
+     * HTTP transaction object
+     */
+    RHTTPTransaction iHttpTransaction;
+
+    /**
+     * HTTP Post object
+     */
+    CIRHttpPost* iLogMessage;
+
+    CIRFavoritesDb* iFavDb;
+
+    /**
+     * Network controller handle pointer
+     */
+    CIRNetworkController *iIRNetworkControllerHandle;
+
+    /**
+     * Reference of the Http data provider Observer
+     */
+    MIRHttpDataProviderObserver &iObserver;
+
+    /**
+     * Status text of the response
+     */
+    TBuf<KMaxStatusTextLength> iStatusText;
+
+    /**
+     * Content type header info
+     */
+    TBuf8<KDPMaxContentTypeLength> iContentType;
+
+    /**
+     * Character set header info
+     */
+    TBuf8<KMaxCharSetLength> iCharSet;
+
+    /**
+     * Set to ETrue if the response code is KNotModified ( 304 )
+     */
+    TBool iNotModified;
+
+    /**
+     * Pointet to Logo download
+     */
+    CIRLogoDownloadEngine* iLogoDownloadEngine;
+
+    };
+#endif // IRHTTPDATAPROVIDER_H
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irhttpdataproviderobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* 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 IRHTTPDATAPROVIDEROBSERVER_H
+#define IRHTTPDATAPROVIDEROBSERVER_H
+
+#include <e32cmn.h>
+
+/**
+ * MIRHttpDataProviderObserver
+ * passes events and responses body data with this interface. 
+ * An instance of this class must be provided for construction of 
+ * CIRHttpDataProvider.
+ */
+class MIRHttpDataProviderObserver
+    {
+public:
+    
+    /** 
+     *  void MIRHttpDataProviderObserver::HttpEventComplete()
+     *  Used to indicate HTTP event completion
+     */
+    virtual void HttpEventComplete() = 0;
+    
+    /** 
+     *  void MIRHttpDataProviderObserver::HttpHeaderReceived()
+     *  Used to indicate HTTP header is received
+     */
+    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData ) = 0;
+        
+    /** 
+     *  HttpDateHeaderReceived();
+     *  Used to indicate HTTP header is received
+     *  to be set in the request header
+     */
+    virtual void HttpDateHeaderReceived( const TDesC8 &aHeader,
+                                         const TTime& aTime ) = 0;
+
+    /** 
+     *  void MIRHttpDataProviderObserver::HttpBodyReceived()
+     *  Used to indicate HTTP body is received
+     */
+    virtual void HttpBodyReceived( const TDesC8 &aBodyData ) = 0;
+    
+    /** 
+     *  void MIRHttpDataProviderObserver::HttpTransactionError()
+     *  Used to indicate HTTP Transaction error
+     */
+    virtual void HttpTransactionError( TInt aErrorCode ) = 0;
+    
+    /** 
+     *  void MIRHttpDataProviderObserver::HttpResponseCodeRecieved(
+     *  TInt aResponseCode)
+     *  Used to indicate HTTP response code recieved
+     */
+    virtual void HttpResponseCodeRecieved( TInt aResponseCode ) = 0;
+    
+    };
+
+#endif // IRHTTPDATAPROVIDEROBSERVER_H
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irhttppost.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* 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 IRHTTPPOST_H
+#define IRHTTPPOST_H
+
+#include <f32file.h>
+#include <mhttpdatasupplier.h>
+#include <rhttptransaction.h>
+
+class CIRSettings;
+
+/**
+ * CIRHttpPost class for posting the data
+ * Reading from the file as chunks of data
+ * using MHTTPDataSupplier - Data supplier 
+ */
+NONSHARABLE_CLASS ( CIRHttpPost ) : public CBase, public MHTTPDataSupplier
+    {
+public:
+
+    /** 
+     * CIRHttpPost::NewL
+     * 1st phase constructor
+     */
+    static CIRHttpPost* NewL( const RHTTPTransaction& aHttpTransaction );
+
+    /** 
+     * CIRHttpPost::~CIRHttpPost
+     * C++ default destructor
+     */
+    virtual ~CIRHttpPost();
+
+    /** 
+     * CIRHttpPost::GetNextDataPart
+     * Obtain a data part from the supplier. 
+     * The data is guaranteed to survive until a call
+     * is made to ReleaseData(). 
+     */
+    virtual TBool GetNextDataPart( TPtrC8& aDataPart );
+
+    /** 
+     * ReleaseData()
+     * Release the current data part being held at the data supplier
+     */
+    virtual void ReleaseData();
+
+    /** 
+     * OverallDataSize()
+     * Obtain the overall size of the data being supplied, 
+     * if known to the supplier
+     */
+    virtual TInt OverallDataSize();
+
+    /** 
+     * Reset()
+     * Reset the data supplier
+     * otherwise returns KErrNone
+     */
+    virtual TInt Reset();
+
+    /** 
+     * GetFileToPostL()
+     * Prepares the data to be posted from the log file
+     */
+    void GetFileToPostL( TInt *aFileSize );
+
+    /** 
+     * CloseLogFile ()
+     * Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
+     */
+    void CloseLogFile();
+
+    /** 
+     * SetTransaction().
+     * Sets transaction.
+     *
+     * @param aHttpTransaction Reference to RHTTPTransaction.
+     */
+    void SetTransaction( const RHTTPTransaction& aHttpTransaction );
+
+private:
+
+    /** 
+     * CIRHttpPost::CIRHttpPost
+     * C++ default constructor
+     * @param aHttpTransaction Reference to RHTTPTransaction
+     */
+    CIRHttpPost( const RHTTPTransaction& aHttpTransaction );
+
+    /** 
+     * CIRHttpPost::ConstructL
+     * 2nd phase constructor
+     */
+    void ConstructL();
+
+    /** 
+     * CIRHttpPost::GetDataPartFromFileL
+     * Obtain a data part from the browse log file.
+     *
+     * @param aDataPart Data from browse log to be returned.
+     */
+    void GetDataPartFromFileL( TDes8& aDataPart );
+
+private:
+
+    /**
+     * Browse log file.
+     */
+    RFile iLogFile;
+
+    /**
+     * Total size of the post data file
+     */
+    TInt iTotalsize;
+
+    /**
+     * set the initial data sent
+     */
+    TInt iStartPos;
+
+    /**
+     * remaining size of data to be sent
+     */
+    TInt iRemainingLength;
+
+    /**
+     * object to HTTP Transaction 
+     */
+    RHTTPTransaction iTransaction;
+
+    /**
+     * Data part buffer.
+     */
+    RBuf8 iPartPostBuffer;
+
+    /**
+     *central repository settings handle
+     */
+    CIRSettings* iSettings;
+    };
+
+#endif //IRHTTPPOST_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irhttprequestdata.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,168 @@
+/*
+* 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:
+*
+*/
+
+
+#ifndef IRHTTPREQUESTDATA_H
+#define IRHTTPREQUESTDATA_H
+
+#include <e32base.h>
+
+// Constants
+/**
+ * Used to specify the maximum header-field value length
+ */
+const TInt KMAXHEADERLENGTH = 255;
+
+/**
+ * Used to specify the maximum URI length
+ */
+const TInt KMAXURILENGTH = 256;
+
+// Enumerations
+/**
+ * Enum specifying the type of HTTP request
+ */
+enum TIRHttpDataProvider
+    {
+    EIRHttpGET = 1, EIRHttpPOST
+    };
+
+/**
+ * Class to hold the request data
+ */
+class CIRHttpRequestData : public CBase
+    {
+public:
+    
+    /** 
+     *  void CIRHttpRequestData::CIRHttpRequestData()
+     *  Default C++ Constructor
+     */
+    inline CIRHttpRequestData()
+        {
+        // Implementation not required
+        }
+        
+    /** 
+     *  void CIRHttpRequestData::~CIRHttpRequestData()
+     *  Default C++ Destructor
+     *     
+     */
+    virtual inline ~CIRHttpRequestData()
+        {
+        // Implementation not required        
+        }
+public:
+    
+    /**
+     * This value indicates type of request method ( GET / POST )
+     */ 
+    TInt iMethod;
+    
+    /**
+     * IfModifiedSince header info
+     */    
+    TDateTime iIfModifiedSince;
+    
+    /**
+     * Set as ETrue if the IfModifiedSince header is set
+     */ 
+    TBool isIfModifiedSet;
+    
+    /**
+     * Used to set the Accept-Language Header
+     */ 
+    TBuf8 < KMAXHEADERLENGTH > iAcceptLanguage; 
+    
+    /**
+     * Used to set the Content-Type Header
+     */
+    TBuf8<KMAXHEADERLENGTH> iContentType;
+
+    /**
+     * Used to specify the URI
+     */
+    TBuf8<KMAXURILENGTH> iUri;
+    };
+
+
+class CIRHttpResponseData: public CBase
+    {
+public:
+
+    /** 
+     *  void CIRHttpResponseData::CIRHttpResponseData()
+     *  Default C++ Constructor
+     *     
+     */
+    inline CIRHttpResponseData()
+        {
+        // Implementation not required
+        }
+        
+    /** 
+     *  void CIRHttpResponseData::~CIRHttpResponseData()
+     *  Default C++ Destructor
+     */
+    inline ~CIRHttpResponseData()
+        {
+        // Implementation not required
+        }
+public:
+    
+    /**
+     * Content type of the data
+     */ 
+    TBuf8 < KMAXHEADERLENGTH > iContentType;
+    
+    /**
+     * Date header value of the response
+     */ 
+    TTime iDate;
+    
+    /**
+     * Max age header value
+     */
+    TBuf8 < KMAXHEADERLENGTH > iMaxAge;
+    
+    /**
+     * Content-Length header value
+     */
+    TBuf8 < KMAXHEADERLENGTH > iContentLength;
+
+    /**
+     * LastModified header value
+     */ 
+    TTime iLastModified;
+    
+    /**
+     * Expires header value
+     */ 
+    TBuf8 < KMAXHEADERLENGTH > iExpires;
+    
+    /**
+     * ETag header value, Used in logo downloads
+     */
+    TBuf8 < KMAXHEADERLENGTH > iETag;
+    
+    };
+
+#endif // IRHTTPREQUESTDATA_H
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/irlogodownloadengine.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,541 @@
+/*
+* 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: Header of IRLogoDownloadEngine.cpp
+*
+*/
+
+
+#ifndef IRLOGODOWNLOADENGINE_H
+#define IRLOGODOWNLOADENGINE_H
+
+#include <mhttpdatasupplier.h>
+#include <mhttptransactioncallback.h>
+#include <rhttptransaction.h>
+#include <rhttpsession.h>
+#include <rhttpheaders.h>
+#include <http.h>
+#include <es_sock.h>
+
+#include "irisdspreset.h"
+#include "mlogodownloadobserver.h"
+#include "ircacheobserver.h"
+#include "iractivenetworkobserver.h"
+
+
+//Used to specify the maximum header-field value length
+const TInt KMAXHEADERLENGTHS = 255;
+
+//Forward Declarations
+class RHTTPSession;
+class RHTTPTransaction;
+class CIRIsdsPreset;
+class CIRNetworkController;
+class MLogoDownloadObserver;
+class CIRCacheMgmt; //for logo cache mgmt
+class CIRHttpResponseData;
+class MIRActiveNetworkObserver;//for network up and downs
+
+
+
+/**
+ * class CIRLogoDownlaodEngine
+ */
+class CIRLogoDownloadEngine : public CBase,
+                              public MHTTPTransactionCallback,
+                              public MHTTPDataSupplier,
+                              public MIRCacheObserver,
+                              public MIRActiveNetworkObserver
+    {
+public:
+    
+    /**
+     * enum TState
+     * status of the transaction
+     */
+   	enum TState
+        {   
+        EIdle,
+        ESendingEvent
+        };
+
+    /**
+     * CIRLogoDownloadEngine* NewL()
+     * Creates instance of CIRLogoDownloadEngine.
+     */
+    IMPORT_C static CIRLogoDownloadEngine* NewL();
+
+
+    /**
+     * SendRequestL(CIRIsdsPreset* aPreset)
+     * API is called from the SearchResultsView for to download logo
+     */
+    IMPORT_C void SendRequestL( CIRIsdsPreset* aPreset, TInt aXValue = 0,
+                                TInt aYValue = 0 );
+
+    /**
+     * SendRequestL()
+     * API is called from the NowPlayingView for to download logo 
+     */
+    IMPORT_C void SendRequestL( CIRIsdsPreset* aPreset,
+                    MLogoDownloadObserver* aLogoHandle, TInt aNPVReq = 1,
+                    TInt aXValue = 0, TInt aYValue = 0 );
+
+    /**
+     * IsLogoCachedL()
+     * 
+     */
+    IMPORT_C TBool IsLogoCachedL( CIRIsdsPreset* aPreset, TInt aXValue = 0,
+                    TInt aYValue = 0 );
+
+    /**
+     * CancelTransaction()
+     * cancels the current transaction
+     */
+    IMPORT_C void CancelTransaction();
+
+    /**
+     * TBool IsRunning() const
+     * To know the status of downloading logo
+     */
+    IMPORT_C TBool IsRunning() const;
+
+    /**
+     * ~CIRLogoDownloadEngine()
+     * Destructs instance of CIRLogoDownloadEngine
+     */
+    IMPORT_C ~CIRLogoDownloadEngine();
+
+    /**
+     * void SendPresetWithLogoL()
+     * sends the preset with logo to the requestors
+     */
+    IMPORT_C void SendPresetWithLogoL();
+
+    /**
+     * GetCacheLogoL(TDesC& aUrl,TInt& aStatus)
+     * takes the url as a parameter and returns the logo data which is in cache
+     * this API is called form the search results for to display logo on the view
+     */
+    IMPORT_C void GetCacheLogoL( const TDesC& aUrl, TInt& aStatus );
+
+    /**
+     * TDesC8& SendCacheLogo()
+     * sends the logo which is cached
+     */
+    IMPORT_C TDesC8& SendCacheLogo();
+
+    
+    
+    /**
+     * void FetchLogoDataL(CIRIsdsPreset* aPreset)
+     * API is used to download logo from isds/internet
+     * called in the API SendRequestL(CIRIsdsPreset* aPreset)
+     */
+    void FetchLogoDataL( CIRIsdsPreset* aPreset );
+
+    /**
+     * void FetchLogoDataL()
+     * API is used to download logo from isds/internet
+     * called in the API SendRequestL()
+     */
+    void FetchLogoDataL( CIRIsdsPreset* aPreset,
+                         MLogoDownloadObserver* aLogoHandle, TInt aNPVReq );
+
+    /**
+     * void ManagePresetArrayIndexL()
+     * To update the iPresetArray current index
+     */
+    void ManagePresetArrayIndexL();
+
+    /**
+     * void ManageCachePresetArrayIndexL()
+     * To update the iCachePresetArray current index
+     */
+    void ManageCachePresetArrayIndexL();
+
+    /**
+     * void CacheError()
+     * Called from cachemgmt in case of an error
+     * callback API from MIRCacheObserver
+     */
+    void CacheError();
+
+    /**
+     * void CacheFailed()
+     * Called from cachemgmt in case of cache failure
+     * callback API from MIRCacheObserver
+     */
+    void CacheFailed();
+
+    /**
+     * void CacheInvalid()
+     * Called from cachemgmt in case cache is invalid
+     * callback API from MIRCacheObserver
+     */
+    void CacheInvalid();
+
+    /**
+     * void CachedStructureL()
+     * Called from cachemgmt data retrival is successful
+     *@param aChoice,it gives the data type of the cache
+     * callback API from MIRCacheObserver
+     */
+    void CachedStructureL( TInt aChoice );
+
+    /**
+     *  ReleaseResources();
+     *  Releases the resources held by logo download engine
+     */
+    void ReleaseResources();
+	
+	//from MIRActiveNetworkObserver
+	/**
+	 * Notified by network controller when network is active
+	 * to reissue the request  
+	 * NotifyActiveNetworkObserversL()
+	 */	
+	 void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
+
+    /**
+     * Notifies all observers whose network request is active
+     * to reset the pending request status  
+     * ResetPendingRequests()
+     */
+    void ResetPendingRequests( TBool aValue );
+
+private:
+    
+    /**
+     * void ConstructL()
+     * 2nd phase construction
+     */
+    void ConstructL();
+
+    /**
+     * CIRLogoDownloadEngine()
+     * Standard C++ constructor
+     */
+    CIRLogoDownloadEngine();
+
+    /**
+     * void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue) const
+     * to set the headers of the http transaction
+     */
+    void SetHeaderL( RHTTPHeaders aHeaders, TInt aHdrField,
+                     const TDesC8& aHdrValue ) const;
+
+    /**
+     * void IssueLogoDownloadRequest()
+     * submits the transaction for to download the logo
+     */
+    void IssueLogoDownloadRequestL();
+
+    /**
+     * void CheckCacheForLogoL()
+     * checks the logo in the cache
+     */
+    void CheckCacheForLogoL( TInt aValue );
+
+    /**
+     * void MHFRunL()
+     * from MHTTPTransactionCallback
+     */
+    void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
+
+    /**
+     * TInt MHFRunError()
+     * //from MHTTPTransactionCallback
+     */
+    TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction,
+                      const THTTPEvent& aEvent );
+
+    /**
+     * void ReleaseData()
+     * from MHTTPDataSupplier
+     */
+    void ReleaseData();
+
+    /**
+     * TBool GetNextDataPart()
+     * from MHTTPDataSupplier
+     */
+    TBool GetNextDataPart( TPtrC8& aDataPart );
+
+    /**
+     * TInt Reset()
+     * from MHTTPDataSupplier
+     */
+    TInt Reset();
+
+    /**
+     * TInt OverallDataSize()
+     * from MHTTPDataSupplier
+     */
+    TInt OverallDataSize();
+
+    /**
+     *  CIRLogoDownloadEngine::ExtractResponseHeadersL()
+     *  Used to Extract the response headers.
+     *  @param aTransaction HTTP Transaction object
+     */
+    void ExtractResponseHeadersL( const RHTTPTransaction& aTransaction );
+
+    /**
+     *  CIRLogoDownloadEngine::HttpHeaderReceived()
+     *  indicate that an HTTP header is received.
+     *  @param aHeaderData Reference to the Header Info
+     */
+    virtual void HttpHeaderReceived( const TDesC8 &aHeaderData );
+
+    /**
+     * CIRLogoDownloadEngine::ExtractHeaderValue()
+     * Used to build the CIRHttpResponseData
+     */
+    void ExtractHeaderValue( const TDesC8& aHeaderData,
+                    const TDesC8& aHeaderName, const TDesC8& aDelimeter,
+                    TDes8& aHolder ) const;
+
+    /**
+     * CIRLogoDownloadEngine::HttpDateHeaderReceived()
+     * Used to build the CIRHttpResponseData members
+     */
+    void HttpDateHeaderReceived( const TDesC8 &aHeader, const TTime& aTime );
+
+private:
+    
+    /**
+     * pointer to the logo observer object
+     */
+    MLogoDownloadObserver* iLogoHandle;
+
+    /**
+     * pointer to the logo observer object
+     */
+    MLogoDownloadObserver* iTempLogoHandle;
+
+    /**
+     * pointer to the logo observer object
+     */
+    MLogoDownloadObserver* iCacheTempLogoHandle;
+
+    /**
+     * pointer to the preset object
+     * temporary preset in the logo downloading usecase
+     */
+    CIRIsdsPreset* iTempPreset;
+
+    /**
+     * pointer to the preset object
+     * temporary preset in the cache checking usecase
+     */
+    CIRIsdsPreset* iCacheTempPreset;
+
+    /**
+     * pointer to the preset object
+     * preset used to conver CIRPreset to CIRIsdsPreset
+     */
+    CIRIsdsPreset* iCopyPreset;
+
+    /**
+     * Network controller handle pointer
+     */
+    CIRNetworkController *iIRNetworkControllerHandle;
+
+    /**
+     * Preset Array for downloading logo
+     */
+    CArrayPtrFlat<CIRIsdsPreset>* iPresetArray;
+
+    /**
+     * Preset Array for checking cache
+     */
+    CArrayPtrFlat<CIRIsdsPreset>* iCachePresetArray;
+
+    /**
+     * MLogoDownloadObserver array for downloading logo
+     */
+    CArrayPtrFlat<MLogoDownloadObserver>* iObserverArray;
+
+    /**
+     * MLogoDownloadObserver array for checking cache
+     */
+    CArrayPtrFlat<MLogoDownloadObserver>* iCacheObserverArray;
+
+    /**
+     * To keep track whether the req came for Favorites or NPV(downloading logo)
+     */
+    CArrayFixFlat<TInt>* iReqFromArray;
+
+    /**
+     * To keep track whether the req came for Favorites or NPV(checking cache)
+     */
+    CArrayFixFlat<TInt>* iCacheReqFromArray;
+
+    /**
+     * Separate session for the logo downloading
+     */
+    RHTTPSession iLogoSession;
+
+    /**
+     * http transaction
+     */
+    RHTTPTransaction iTransaction;
+
+    /**
+     * for the transactions with cache mgmt
+     */
+    CIRCacheMgmt *iCache;
+
+    /**
+     * Pointer to Response header data
+     */
+    CIRHttpResponseData* iResponseHeaders;
+
+    /**
+     * boolean for to know the status of the downloading logo
+     */
+    TBool iRunning;
+
+    /**
+     * body of the transaction request
+     */
+    TDesC8* iReqBody;
+
+    /**
+     * body of the transaction response
+     */
+    HBufC8* iRespBody;
+
+    /**
+     * size of the response body
+     */
+    TInt iRespBodySize;
+
+    /**
+     * state of the transaction
+     */
+    TState iState;
+
+    /**
+     * status, from which the preset has modified
+     */
+    TBool iPresetModifiedStatus;
+
+    /**
+     * iPresetArray position
+     */
+    TInt iPresetArrayPos;
+
+    /**
+     * position of the iReqFromArray
+     */
+    TInt iReqFromArrayPos;
+
+    /**
+     * position of the iObserverArray
+     */
+    TInt iObserverArrayPos;
+
+    /**
+     * position of the iCachePresetArray
+     */
+    TInt iCachePresetArrayPos;
+
+    /**
+     * position of the iCacheReqFromArray
+     */
+    TInt iCacheReqFromArrayPos;
+
+    /**
+     * position of the iCacheObserverArray
+     */
+    TInt iCacheObserverArrayPos;
+
+    /**
+     * status of cache request
+     */
+    TInt iCacheReqFrom;
+
+    /**
+     * temporary variable for the status of request
+     */
+    TInt iTempReqFrom;
+
+    /**
+     * boolean to verify first time or not
+     */
+    TBool iFirstTime;
+
+    /**
+     * ETrue if logo is available in cache
+     */
+    TBool iLogoCached;
+
+    /**
+     * boolean for forcibly getting the logo from cache
+     */
+    TBool iForceGet;
+
+    /**
+     * boolean for to track whether the cache request has made or not
+     */
+    TBool iCacheReqMade;
+
+    /**
+     * response from the cache for the availability of logo(CacheNotValid,NotCached,CacheUseable)
+     */
+    TInt iResult;
+
+    /**
+     * status on cache checking
+     */
+    TBool iCheckingCache;
+
+    /**
+     * integer for the status of sending the logo
+     */
+    TInt iSendingLogo;
+
+    /**
+     * Using for temporarily till the isds provides urls
+     */
+    TInt iImageIndex;
+
+    /**
+     * this is used while making a conditional GET request
+     */
+    TTime iLastModifiedTime;
+
+    /**
+     * this is used while making a conditional GET request
+     */
+    TBuf8<KMAXHEADERLENGTHS> iETag;
+
+    /**
+     * this is used to track whether the request is conditional GET or non-conditional GET
+     */
+    TBool iIsConditionalGET;
+
+    /**
+     * Status of the logo download in the network up and down scenarios
+     */
+    TBool iLogoRequestPending;
+
+    /**
+     * status of the response code
+     */
+    TInt iRespCode;
+    };
+
+#endif // IRLOGODOWNLOADENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/inc/mlogodownloadobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef MLOGODOWNLOADOBSERVER_H
+#define MLOGODOWNLOADOBSERVER_H
+
+#include <e32def.h>
+
+#include "irisdspreset.h"
+
+class CIRIsdsPreset;
+
+/**
+ * MLogoDownloadObserver
+ * passes id of a preset which has downloaded the logo.
+ * An instance of this class must be provided while calling 
+ * the API SendRequestL() of CIRLogoDownloadEngine.  
+ * The call of the API SendRequestL() is from NowPlayingView.
+ */
+class MLogoDownloadObserver
+    {
+public:
+    
+    /**
+     * MLogoDownloadObserver::PresetLogoDownloadedL()
+     * called back when a preset's logo has downloaded
+     * @param CIRIsdsPreset*, preset with downloaded logo
+     */
+    virtual void PresetLogoDownloadedL( CIRIsdsPreset* aPreset )=0;
+
+    /**
+     * MLogoDownloadObserver::PresetLogoDownloadError()
+     * called back when a preset's logo has not downloaded
+     * @param CIRIsdsPreset*, preset with no logo data
+     */
+    virtual void PresetLogoDownloadError( CIRIsdsPreset* aPreset )=0;
+    };
+
+#endif // MLOGODOWNLOADOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/src/irdataprovider.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,495 @@
+/*
+* 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:
+*
+*/
+#ifdef REQUEST_ZIP_RESPONSE
+#include <ezgzip.h>
+#include <bautils.h>
+#include <f32file.h>
+#endif
+
+#include "irdataprovider.h"
+#include "irdataproviderobserver.h"
+#include "irdebug.h"
+#include "irhttpdataprovider.h"
+#include "irhttprequestdata.h"
+#include "irsettings.h"
+
+#ifdef REQUEST_ZIP_RESPONSE
+_LIT( KGzXmlFile, "iSdsResponse.xml.gz" );
+#endif
+_LIT( KXmlFile, "iSdsResponse.xml" );
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::NewL()
+//  Creates instance of CIRDataProvider.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRDataProvider *CIRDataProvider::NewL(
+                                          MIRDataProviderObserver &aObserver )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::NewL - Entering" );
+    CIRDataProvider *self = NewLC( aObserver );
+    CleanupStack::Pop(self);
+    IRLOG_DEBUG( "CIRDataProvider::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::NewL()
+//  Creates instance of CIRDataProvider.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRDataProvider *CIRDataProvider::NewL(
+                  MIRDataProviderObserver &aObserver, const TDesC &aFileName )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::NewL(..., &aFileName) - Entering" );
+    CIRDataProvider *self = NewLC( aObserver, aFileName );
+    CleanupStack::Pop(self);
+    IRLOG_DEBUG( "CIRDataProvider::NewL(..., &aFileName) - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::~CIRDataProvider()
+//  Destructs an instance of CIRDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRDataProvider::~CIRDataProvider()
+    {
+    IRLOG_DEBUG( "CIRDataProvider::~CIRDataProvider() - Entering" );
+
+    if ( iHttpDataProvider )
+        {
+        iHttpDataProvider->CancelTransaction();
+        delete iHttpDataProvider;
+        }
+
+    if ( iIRSettings )
+        {
+        iIRSettings->Close();
+        }
+
+    if ( iDataProviderTimer )
+        {
+        iDataProviderTimer->Cancel();
+        delete iDataProviderTimer;
+        }
+
+    if ( iResponseHeaders )
+        {
+        delete iResponseHeaders;
+        }
+    
+    iFile.Close();
+    iFsSession.Close(); // Close the file server session
+    IRLOG_DEBUG( "CIRDataProvider::~CIRDataProvider() - Exiting" );
+    }
+
+// General functions exported ( These are the API`s exposed )( HTTP )
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::IRHttpIssueRequest(TDesC8& aUri)
+//  Used to issue an Http request
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRDataProvider::IRHttpIssueRequestL(
+     CIRHttpRequestData &aRequestObject )
+    {
+    IRHttpCancelRequest();
+    IRLOG_DEBUG( "CIRDataProvider::IRHttpIssueRequestL - Entering" );
+    IRRDEBUG2("CIRDATAPROVIDER::IRHTTPISSUEREQUESTL",KNullDesC);
+    CIRHttpResponseData* newResponseHeaders = new ( ELeave ) CIRHttpResponseData;
+    delete iResponseHeaders;
+    iResponseHeaders = newResponseHeaders;
+
+    // Create or replace the file used to store xml response from iSDS
+#ifdef REQUEST_ZIP_RESPONSE
+    User::LeaveIfError( iFile.Replace( iFsSession, iXmlGzFilePath, EFileWrite ) );
+#else
+    User::LeaveIfError( iFile.Replace( iFsSession, iXmlFilePath, EFileWrite ) );
+#endif
+    
+    iHttpDataProvider->CancelTransaction();
+
+    TInt err = iHttpDataProvider->IssueHttpRequestL( aRequestObject );
+    // Cancel the timer if active
+    iDataProviderTimer->Cancel();
+    // Start the timer for timeout
+    iDataProviderTimer->After( iTimeOut );
+    if ( err == KErrCouldNotConnect )
+        {
+        // If error in IssueHttpRequest then close the open file
+        iFile.Close();
+        iDataProviderTimer->Cancel();
+        iDataProviderObserver.IRHttpGeneralError( err );
+        // Cancel any possibly pending transactions
+        iHttpDataProvider->CancelTransaction();
+        }
+
+    IRLOG_DEBUG( "CIRDataProvider::IRHttpIssueRequestL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::IRHttpCancelRequest()
+//  Used to cancel a request
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRDataProvider::IRHttpCancelRequest()
+    {
+    IRLOG_DEBUG( "CIRDataProvider::IRHttpCancelRequest - Entering" );
+    // Cancel the timer if active
+    iDataProviderTimer->Cancel();
+    // Cancel any possibly pending transactions
+    iHttpDataProvider->CancelTransaction();
+    // Close the file handle used to store the xml response
+    iFile.Close();
+    IRLOG_DEBUG( "CIRDataProvider::IRHttpCancelRequest - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::ReleaseResources()
+//  Used to release the resources held by the IRHttpDataProvider
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRDataProvider::ReleaseResources()
+    {
+    IRLOG_DEBUG( "CIRDataProvider::ReleaseResources - Entering" );
+    // Release the resources held by the IRHttpDataProvider
+    iHttpDataProvider->ReleaseResources();
+    IRLOG_DEBUG( "CIRDataProvider::ReleaseResources - Exiting" );
+    }
+
+
+//These are the callback functions used by CIRHttpDataProvider to
+//provide the CIRDataProvider with the data after processing the
+//HTTP request.
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpEventComplete()
+//  Used to Indicate to the observer that the request event has completed
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpEventComplete()
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpEventComplete - Entering" );
+    iFile.Close();
+    iDataProviderTimer->Cancel();
+    
+#ifdef REQUEST_ZIP_RESPONSE
+    // unzip the gz file
+    TRAP_IGNORE( UnzipFileL( iXmlFilePath ) );
+    // delete the original gz file
+    BaflUtils::DeleteFile( iFsSession, iXmlGzFilePath );
+#endif
+    
+    // Need to take a member to a local variable, as the IRHttpDataReceived 
+    // may initiate an IRHttpIssueRequestL() call, causing the headers 
+    // to be replaced with empty ones, and causing crashes.
+    CIRHttpResponseData* currentHeaders = iResponseHeaders;
+    // prevents the destructor to delete in case something streange happens.
+    iResponseHeaders = NULL;
+    iDataProviderObserver.IRHttpDataReceived( iXmlFilePath, *currentHeaders );
+
+    delete currentHeaders;
+    IRLOG_DEBUG( "CIRDataProvider::HttpEventComplete - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::ExtractHeaderValue()
+//  
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::ExtractHeaderValue( const TDesC8& aHeaderData,
+                                          const TDesC8& aHeaderName, 
+                                          const TDesC8& aDelimeter,
+                                          TDes8& aHolder ) const
+    {
+    IRLOG_DEBUG( "CIRDataProvider::ExtractHeaderValue - Entering" );
+    TInt position = aHeaderData.Find( aHeaderName );
+    if ( position >= 0 )
+        {
+        TPtrC8 headerValue = aHeaderData.Mid( position );
+        TInt delimeterPosition = headerValue.Find( aDelimeter );
+        if ( delimeterPosition != KErrNotFound )
+            {
+            delimeterPosition++;
+            TPtrC8 value = headerValue.Mid( delimeterPosition );
+            aHolder.Copy( value );
+            aHolder.TrimAll();
+            }
+        }
+    IRLOG_DEBUG( "CIRDataProvider::ExtractHeaderValue - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpHeaderReceived()
+//  Used by CIRHttpDataProvider to indicate that an HTTP header is received.
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpHeaderReceived( const TDesC8& aHeaderData )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpHeaderReceived - Entering." );
+    _LIT8(KDelim,":");
+    _LIT8(KContentType,"Content-Type");
+    ExtractHeaderValue( aHeaderData, KContentType, KDelim,
+                        iResponseHeaders-> iContentType );
+    _LIT8(KMaxAge,"max-age");
+    _LIT8(KDelimEqual,"=");
+    ExtractHeaderValue( aHeaderData, KMaxAge, KDelimEqual,
+                        iResponseHeaders-> iMaxAge );
+    _LIT8(KContentLength,"Content-Length");
+    ExtractHeaderValue( aHeaderData, KContentLength, KDelim,
+                        iResponseHeaders-> iContentLength );
+    _LIT8(KExpires,"Expires");
+    ExtractHeaderValue( aHeaderData, KExpires, KDelim,
+                        iResponseHeaders->iExpires );
+    IRLOG_DEBUG( "CIRDataProvider::HttpHeaderReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpDateHeaderReceived()
+//  Used by CIRHttpDataProvider to indicate that an HTTP header is received.
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpDateHeaderReceived( const TDesC8 &aHeader,
+                                              const TTime& aTime )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpDateHeaderReceived - Entering." );
+    _LIT8(KDate,"Date");
+    _LIT8(KLastModified,"Last-Modified");
+    TInt position = aHeader.Find( KDate );
+    if ( position != KErrNotFound )
+        {
+        iResponseHeaders->iDate = aTime;
+        //find the difference between device time and response time
+        //and storing the offset
+        SetOffsetSeconds( aTime );
+        return;
+        }
+    position = aHeader.Find( KLastModified );
+    if ( position != KErrNotFound )
+        {
+        iResponseHeaders->iLastModified = aTime;
+        }
+    IRLOG_DEBUG( "CIRDataProvider::HttpDateHeaderReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpBodyReceived()
+//  Used by CIRHttpDataProvider to indicate that an HTTP response body
+//  is received.
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpBodyReceived( const TDesC8 &aBodyData )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpBodyReceived - Entering" );
+    TInt FileWritePos = 0;
+    iFile.Seek( ESeekEnd, FileWritePos );
+    iFile.Write( FileWritePos, aBodyData );
+    IRLOG_DEBUG( "CIRDataProvider::HttpBodyReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpTransactionError()
+//  Used by CIRHttpDataProvider to indicate that a HTTP Transaction error
+//  has occured.
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpTransactionError( TInt aErrCode )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpTransactionError - Entering" );
+    iFile.Close();
+    iDataProviderTimer->Cancel();
+    iDataProviderObserver.IRHttpGeneralError( aErrCode );
+    // Cancel any possibly pending transactions
+    iHttpDataProvider->CancelTransaction();
+    IRLOG_DEBUG( "CIRDataProvider::HttpTransactionError - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::HttpResponseCodeRecieved()
+//  Used by CIRHttpDataProvider to indicate to the iSDS Client that a
+//  304 Not Changed response received
+//  Note: Implemented in version 0.2
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::HttpResponseCodeRecieved( TInt aResponseCode )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::HttpResponseCodeRecieved - Entering" );
+    iDataProviderObserver.IRHttpResponseCodeReceived( aResponseCode, *iResponseHeaders );
+    IRLOG_DEBUG( "CIRDataProvider::HttpResponseCodeRecieved- Exiting" );
+    }
+
+// constructor support
+// don't export these, because used only by functions in this DLL
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::TimerExpired()
+//  Called to indicate expiry of timer
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::TimerExpired()
+    {
+    IRLOG_INFO( "CIRDataProvider::TimerExpired - Entering" );
+    IRHttpCancelRequest();
+    HttpTransactionError( KDataProviderTimeout );
+    IRLOG_INFO( "CIRDataProvider::TimerExpired - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::CIRDataProvider()
+//  Default Constructor
+// ---------------------------------------------------------------------------
+//
+CIRDataProvider::CIRDataProvider( MIRDataProviderObserver &aObserver ):
+    iDataProviderObserver( aObserver ) // first-phase C++ constructor
+    {
+    IRLOG_INFO( "CIRDataProvider::CIRDataProvider" );
+    // Definition not required
+    }
+
+// ---------------------------------------------------------------------------
+//  void CIRDataProvider::ConstructL()
+//  2nd Phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRDataProvider::ConstructL - Entering" );
+#ifdef REQUEST_ZIP_RESPONSE
+    ConstructL( KGzXmlFile );
+#else
+    ConstructL(KXmlFile);
+#endif
+    
+    iHttpDataProvider->iSetNonUAProfUserAgent = EFalse;
+    IRLOG_DEBUG( "CIRDataProvider::ConstructL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+//  void CIRDataProvider::ConstructL(TDesC& aFilePath)
+//  2nd Phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::ConstructL( const TDesC &aFileName )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::ConstructL(const TDesC &aFileName) - Entering" );
+    iHttpDataProvider = CIRHttpDataProvider::NewL( *this );
+    iDataProviderTimer = CIRDataProviderTimer::NewL( EPriorityHigh,  *this );
+    User::LeaveIfError( iFsSession.Connect() );
+    iIRSettings = CIRSettings::OpenL();
+#ifdef REQUEST_ZIP_RESPONSE
+    iXmlGzFilePath = iIRSettings->PrivatePath();
+    iXmlFilePath = iXmlGzFilePath;
+    iXmlGzFilePath.Append( aFileName );
+    iXmlFilePath.Append( KXmlFile );
+#else
+    iXmlFilePath = iIRSettings->PrivatePath();
+    iXmlFilePath.Append( aFileName );
+#endif
+    
+    iTimeOut = iIRSettings->GetTimeOut();
+    iHttpDataProvider->iSetNonUAProfUserAgent = ETrue;
+    IRLOG_DEBUG( "CIRDataProvider::ConstructL(const TDesC &aFileName) - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
+//  Creates instance of CIRDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRDataProvider *CIRDataProvider::NewLC( MIRDataProviderObserver &aObserver )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::NewLC - Entering." );
+    CIRDataProvider *self = new( ELeave )CIRDataProvider( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRDataProvider::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::NewLC(MIRDataProviderObserver& aObserver)
+//  Creates instance of CIRDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRDataProvider *CIRDataProvider::NewLC( MIRDataProviderObserver &aObserver,
+    const TDesC &aFileName )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::NewLC - Entering." );
+    CIRDataProvider *self = new( ELeave )CIRDataProvider( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL( aFileName );
+    IRLOG_DEBUG( "CIRDataProvider::NewLC - Exiting." );
+    return self;
+    }
+
+EXPORT_C CIRHttpDataProvider* CIRDataProvider::GetHttpDataProvider()
+{
+IRLOG_DEBUG( "CIRDataProvider::GetHttpDataProvider" );
+	return iHttpDataProvider;
+}
+
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::SetOffsetSeconds()
+//  Stores the offset between device time and response header in settings
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::SetOffsetSeconds( const TTime& aTime )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::SetOffsetSeconds - Entering" );
+    TTime currenttime;
+    //calculates the current time
+    currenttime.UniversalTime();
+    //finds offset from isds response
+    TTimeIntervalSeconds offsetseconds;
+    //Find offset from isds response
+    TInt err = currenttime.SecondsFrom( aTime, offsetseconds );
+    if ( err )
+        {
+        //if error offsetseconds is set to zero
+        offsetseconds = 0;
+        }
+    //storing the offset value in setting
+    TRAP_IGNORE( iIRSettings->SetTimeCorrectionL(offsetseconds.Int()) )
+    IRLOG_DEBUG( "CIRDataProvider::SetOffsetSeconds - Exiting." );
+    }
+
+#ifdef REQUEST_ZIP_RESPONSE
+// ---------------------------------------------------------------------------
+//  CIRDataProvider::UnzipFileL
+// ---------------------------------------------------------------------------
+//
+void CIRDataProvider::UnzipFileL( const TDesC& aOutputFile )
+    {
+    IRLOG_DEBUG( "CIRDataProvider::UnzipFileL - Enter." );
+    RFile outputFile;
+    CleanupClosePushL( outputFile );
+    User::LeaveIfError( outputFile.Replace( iFsSession, aOutputFile, 
+                        EFileStream | EFileWrite | EFileShareExclusive ) );
+    CEZGZipToFile* gZip = 
+        CEZGZipToFile::NewLC( iFsSession, iXmlGzFilePath, outputFile );
+
+    while ( gZip->InflateL() )
+        {
+        // unzip the gz file, quit when finish
+        }
+    CleanupStack::PopAndDestroy( gZip );
+    CleanupStack::PopAndDestroy( &outputFile );
+    IRLOG_DEBUG( "CIRDataProvider::UnzipFileL - Exit." );
+    }
+#endif
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/src/irdataprovidertimer.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* 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:
+*
+*/
+
+
+#include "irdataprovidertimer.h"
+#include "irdebug.h"
+
+// ---------------------------------------------------------------------------
+// CIRDataProviderTimer::NewL()
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+CIRDataProviderTimer *CIRDataProviderTimer::NewL( const TInt aPriority,
+                                     MIRDataProviderTimeoutNotifier &aNotify )
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::NewL - Entering" );
+    CIRDataProviderTimer *self = CIRDataProviderTimer::NewLC( aPriority, 
+                                                              aNotify );
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRDataProviderTimer::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRDataProviderTimer::NewLC()
+// ---------------------------------------------------------------------------
+//    
+CIRDataProviderTimer *CIRDataProviderTimer::NewLC( const TInt aPriority, 
+                                     MIRDataProviderTimeoutNotifier &aNotify )
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::NewLC - Entering" );
+    CIRDataProviderTimer *self = new( ELeave ) CIRDataProviderTimer( 
+                                                         aPriority, aNotify );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRDataProviderTimer::NewLC - Exiting" );
+    return self;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CIRDataProviderTimer::~CIRDataProviderTimer()
+// Default C++ destructor
+// ---------------------------------------------------------------------------
+//    
+CIRDataProviderTimer::~CIRDataProviderTimer()
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::~CIRDataProviderTimer" );
+    // Implementation not required
+    }
+
+// ---------------------------------------------------------------------------
+// Derived from CTimer
+// CIRDataProviderTimer::RunL()
+// ---------------------------------------------------------------------------
+//  
+void CIRDataProviderTimer::RunL()
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::RunL - Entering" );
+    if ( iStatus == KErrNone )
+        {
+        iNotify.TimerExpired();
+        }
+    else
+        {
+        User::Leave( iStatus.Int() );
+        }
+    IRLOG_DEBUG( "CIRDataProviderTimer::RunL - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// Derived from CTimer
+// CIRDataProviderTimer::RunError()
+// ---------------------------------------------------------------------------
+//    
+TInt CIRDataProviderTimer::RunError( TInt /*aError*/ )
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::RunError" );
+        return KErrNone;
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRDataProviderTimer::CIRDataProviderTimer()
+// ---------------------------------------------------------------------------
+//        
+CIRDataProviderTimer::CIRDataProviderTimer( const TInt aPriority, 
+                                     MIRDataProviderTimeoutNotifier &aNotify )
+ : CTimer( aPriority ),
+   iNotify( aNotify )
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::CIRDataProviderTimer" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRDataProviderTimer::ConstructL()
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//    
+void CIRDataProviderTimer::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRDataProviderTimer::ConstructL - Entering" );
+    CTimer::ConstructL();
+    CActiveScheduler::Add( this );
+    IRLOG_DEBUG( "CIRDataProviderTimer::ConstructL - Exiting" );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/src/irhttpdataprovider.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1037 @@
+/*
+* 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:
+*
+*/
+
+
+#include <httpstringconstants.h>
+#include <rhttpheaders.h>
+#include <mmfcontrollerpluginresolver.h> //to get the supported MIME types
+#ifdef ENABLE_USAGE_REPORT_TEST
+#include <bautils.h>
+#include "irreportsettings.h"
+#endif
+
+#include "irdataprovider.h"
+#include "irdebug.h"
+#include "irhttpdataprovider.h"
+#include "irhttppost.h"
+#include "irhttprequestdata.h"
+#include "irnetworkcontroller.h"
+#include "irdatatransferobserver.h"
+#include "irlogodownloadengine.h"
+#include "irfavoritesdb.h"
+#include "irsettings.h"
+
+//Added for ALR/SNAP
+const TInt KBufflengthMaxLength = 255;
+const TInt KWapProfileMaxLength = 20;
+const TInt KNokiaIrAppAcceptMaxLength = 25;
+const TInt KSize = 1024;
+const TInt KMaxSize = 2048;
+const TInt KBufSize = 10;
+const TUid KUidHelixController        = { 0x101F8514 }; // Helix Video controller UID
+const TInt KLogbufferLenth = KLogBufferSize/2 - 1;
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::CIRHttpDataProvider(MIRHttpDataProviderObserver&
+// aObserver):iObserver(aObserver),iRunning(EFalse)
+// Creates instance of CIRHttpDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRHttpDataProvider::CIRHttpDataProvider( MIRHttpDataProviderObserver
+    &aObserver ): iRunning( EFalse ), iObserver( aObserver )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::CIRHttpDataProvider" );
+    // Definition not required
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::~CIRHttpDataProvider()
+// Destructs instance of CIRHttpDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRHttpDataProvider::~CIRHttpDataProvider()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::~CIRHttpDataProvider - Entering" );
+    // remove E32USER-CBase-66
+#ifdef _DEBUG
+    TRAP_IGNORE( iHttpSession.Close() );
+#else
+    iHttpSession.Close();
+#endif
+    delete iLogMessage;
+    if ( iIRNetworkControllerHandle )
+        {
+        iIRNetworkControllerHandle->Close();
+        }
+    if(iLogoDownloadEngine)
+    	{
+	    delete iLogoDownloadEngine;
+	    iLogoDownloadEngine = NULL;
+    	}
+    IRLOG_DEBUG( "CIRHttpDataProvider::~CIRHttpDataProvider - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::NewL()
+// Creates instance of CIRHttpDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRHttpDataProvider *CIRHttpDataProvider::NewL( 
+                                      MIRHttpDataProviderObserver &aObserver )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::NewL - Entering" );
+    CIRHttpDataProvider *self = NewLC( aObserver );
+    CleanupStack::Pop(self);
+    IRLOG_DEBUG( "CIRHttpDataProvider::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::NewLC()
+// Creates instance of CIRHttpDataProvider.
+// ---------------------------------------------------------------------------
+//
+CIRHttpDataProvider *CIRHttpDataProvider::NewLC( 
+                                      MIRHttpDataProviderObserver &aObserver )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::NewLC - Entering" );
+    CIRHttpDataProvider *self = new( ELeave )CIRHttpDataProvider( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRHttpDataProvider::NewLC - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::ConstructL()
+// 2nd phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::ConstructL - Entering" );
+    iFirstTime = ETrue;
+    iIRNetworkControllerHandle = CIRNetworkController::OpenL();
+    iLogMessage = CIRHttpPost::NewL(iHttpTransaction);
+    iLogoDownloadEngine = CIRLogoDownloadEngine::NewL();
+    IRLOG_DEBUG( "CIRHttpDataProvider::ConstructL - Exiting" );
+    }
+
+EXPORT_C CIRLogoDownloadEngine* CIRHttpDataProvider::GetLogoDownloadEngine()
+{
+IRLOG_DEBUG( "CIRHttpDataProvider::GetLogoDownloadEngine" );
+	return iLogoDownloadEngine;
+}
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::CancelTransactionL()
+// Cancel the issued Http transaction
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::CancelTransaction()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::CancelTransaction  - Entering" );
+    // Make sure that logfile is closed
+    CloseLogFile ();
+    if ( !iRunning )
+        {
+        return ;
+        }
+    // Close() also cancels transaction (Cancel() can also be used but
+    // resources allocated by transaction must be still freed with Close())
+    iHttpTransaction.Close();
+    // Not running anymore
+    iRunning = EFalse;
+    IRLOG_DEBUG( "CIRHttpDataProvider::CancelTransaction - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::CloseLogFile()
+// Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::CloseLogFile ()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::CloseLogFile  - Entering" );
+    if ( iLogMessage )
+        {
+        iLogMessage->CloseLogFile();
+        }
+    IRLOG_DEBUG( "CIRHttpDataProvider::CloseLogFile  - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::IssueHttpRequestL()
+// Used to issue the request.
+// ---------------------------------------------------------------------------
+//
+TInt CIRHttpDataProvider::IssueHttpRequestL( CIRHttpRequestData &aRequestInfo )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - Entering" );
+    iNotModified = EFalse;
+    
+    if ( !( iIRNetworkControllerHandle->GetNetworkStatus() ) )
+        {
+        // Error Network connection inactive
+        return KErrCouldNotConnect;
+        }
+    if ( iFirstTime )
+        {
+        InitializeHttpDataProviderL();
+        iIRNetworkControllerHandle->InitializeHttpSessionL( iHttpSession,
+                            MIRDataTransferTracker::EIRTransferCategoryIsds );
+        iFirstTime = EFalse;
+        }
+    // Parse string to URI (as defined in RFC2396)
+    TUriParser8 uri;
+    uri.Parse( aRequestInfo.iUri );
+    // Get request method string
+    RStringF method;
+    switch ( aRequestInfo.iMethod )
+        {
+        case EIRHttpGET:
+            {
+            method = iHttpSession.StringPool().StringF( HTTP::EGET,
+                                                   RHTTPSession::GetTable() );
+            }
+            break;
+        case EIRHttpPOST:
+            {
+            method = iHttpSession.StringPool().StringF( HTTP::EPOST,
+                                                   RHTTPSession::GetTable() );
+            }
+            break;
+        default:
+            {
+            }
+            break;
+        }
+    CleanupClosePushL( method );
+
+    IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - Opening transaction" );
+    // Open transaction with previous method and parsed uri. This class will
+    // receive transaction events in MHFRunL and MHFRunError.
+    iHttpTransaction = iHttpSession.OpenTransactionL( uri,  *this, method );
+
+#ifdef ENABLE_USAGE_REPORT_TEST
+    RFs iFs;
+    User::LeaveIfError(iFs.Connect());
+    
+    TTime timeStamp;
+    //timeStamp.UniversalTime();
+    timeStamp.HomeTime();
+    TDateTime dateTime =  timeStamp.DateTime();
+    
+    _LIT(KFormatTime,"-%d-%d-%d %d.%d.%d.xml.gz\n");
+    TBuf<32>    sendTime;
+    sendTime.Format(KFormatTime,dateTime.Year(),TInt(dateTime.Month()+1),dateTime.Day()+1,
+                                dateTime.Hour(),dateTime.Minute(),dateTime.Second());
+
+    _LIT( KDstFilePath, "c:\\data\\IR_Log\\");
+    TFileName dstFileName(KDstFilePath);
+    dstFileName.Append(KGZipLogFileName);
+    dstFileName.Append(sendTime);
+    
+    iFs.MkDirAll(dstFileName);
+    
+    if ( aRequestInfo.iMethod == EIRHttpPOST )
+        {
+        CIRSettings * settings = CIRSettings::OpenL();
+        if ( NULL != settings )
+            {
+            TFileName filePath = settings->PrivatePath();
+            filePath.Append( KGZipLogFileName );                   
+
+            BaflUtils::CopyFile( iFs, filePath, dstFileName );
+            settings->Close();
+            }
+        }
+#endif
+    
+    if ( aRequestInfo.iMethod == EIRHttpPOST )
+        {
+        IRLOG_DEBUG( "CIRHttpDataProvider::IssueHttpRequestL - POST method" );
+        // Close the LogFile
+        iLogMessage->CloseLogFile ();
+        iLogMessage->SetTransaction( iHttpTransaction );
+        TInt FileSize(KErrNone);
+        TRAPD(err, iLogMessage->GetFileToPostL(&FileSize));
+        if ( err )
+            {
+            // failed to open the file to be posted hence cancel the request
+            CleanupStack::PopAndDestroy( &method );
+            iHttpTransaction.Close();
+            return KErrCouldNotConnect;
+            }
+        TBuf8<KBufflengthMaxLength> bufflength;
+        _LIT8(KFormat,"%d");
+        bufflength.Format(KFormat,FileSize);
+        aRequestInfo.iContentType.Copy(KPostContentType);
+        RHTTPRequest LogRequest;
+        LogRequest = iHttpTransaction.Request();
+        LogRequest.SetBody((MHTTPDataSupplier&) *iLogMessage);
+        RHTTPHeaders header = iHttpTransaction.Request().GetHeaderCollection();
+        SetHeaderL(header,HTTP::EContentType,aRequestInfo.iContentType );
+        SetHeaderL(header,HTTP::EContentLength,bufflength);
+        }
+    
+     // Setup the headers for the HTTP request
+    BuildHeadersL(aRequestInfo);
+  
+    // Submit the transaction. After this the framework will give transaction
+    // events via MHFRunL and MHFRunError.
+    iHttpTransaction.SubmitL();
+   
+#ifdef ENABLE_USAGE_REPORT_TEST  
+    if ( aRequestInfo.iMethod == EIRHttpPOST )
+        {
+        _LIT( KSentPrefix, "X__");
+        TFileName sentLogFileName(KDstFilePath);
+        sentLogFileName.Append(KSentPrefix);
+        sentLogFileName.Append(KGZipLogFileName);
+        sentLogFileName.Append(sendTime);
+        BaflUtils::RenameFile(iFs, dstFileName, sentLogFileName);      
+        }
+    iFs.Close();
+#endif    
+    
+    CleanupStack::PopAndDestroy( &method );
+    iRunning = ETrue;
+    IRLOG_INFO( "CIRHttpDataProvider::IssueHttpRequestL - Submitted HTTP request" );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::SetHttpContentType()
+// Set the Http content type
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::SetHttpContentType( const TDesC &aContentType,
+                                              const TDesC &aCharSet )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::SetHttpContentType - Entering" );
+    iContentType.Copy( aContentType );
+    iCharSet.Copy( aCharSet );
+    IRLOG_DEBUG( "CIRHttpDataProvider::SetHttpContentType - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::InitializeHttpDataProviderL()
+// Initialize the data provider component
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::InitializeHttpDataProviderL()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::InitializeHttpDataProviderL - Entering" );
+    iHttpSession.Close();
+    TRAPD( LeaveValue, iHttpSession.OpenL() );
+    if ( LeaveValue != KErrNone )
+        {
+        // Most common error; no access point configured, and session creation
+        // leaves with KErrNotFound.
+        // Load a string from the resource file and add the error code to string
+        User::Leave( LeaveValue );
+        }
+    // Set the HTTP connection properties
+    RStringPool strP = iHttpSession.StringPool();
+    RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo();
+    // RSocketServ Handle
+    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketServ,
+                    RHTTPSession::GetTable() ), THTTPHdrVal(
+                    iIRNetworkControllerHandle->GetIRSocketServer().Handle() ) );
+    // RConnection Handle
+    TInt connPtr = REINTERPRET_CAST( TInt, &( iIRNetworkControllerHandle->GetIRConnection() ) );
+
+    connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketConnection,
+                    RHTTPSession::GetTable() ), THTTPHdrVal( connPtr ) );
+    // HTTP Version ( Specify that i am using HTTP/1.1
+    connInfo.SetPropertyL( strP.StringF( HTTP::EVersion,
+                    RHTTPSession::GetTable() ), THTTPHdrVal( strP.StringF(
+                    HTTP::EHttp11, RHTTPSession::GetTable() ) ) );
+
+    RStringF temp = strP.OpenFStringL( KAccept );
+    CleanupClosePushL( temp );
+    connInfo.SetPropertyL( strP.StringF( HTTP::EAccept,
+                    RHTTPSession::GetTable() ), THTTPHdrVal( temp ) );
+
+    CleanupStack::PopAndDestroy( &temp );
+    iContentType.Copy( KDefaultContentType );
+    iCharSet.Copy( KDefaultCharSet );
+
+    IRLOG_DEBUG( "CIRHttpDataProvider::InitializeHttpDataProviderL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::MHFRunL()
+// Inherited from MHTTPTransactionCallback
+// Called by framework to pass transaction events.
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::MHFRunL( RHTTPTransaction aTransaction,
+    const THTTPEvent &aEvent )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunL - Entering." );
+    
+    switch ( aEvent.iStatus )
+        {
+        case THTTPEvent::EGotResponseHeaders:
+            {
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - EGotResponseHeaders" );
+            // HTTP response headers have been received. Use
+            // aTransaction.Response() to get the response. However, it's not
+            // necessary to do anything with the response when this event occurs.
+            // Get HTTP status code from header (e.g. 200)
+            RHTTPResponse resp = aTransaction.Response();
+            iStatusCode = resp.StatusCode();
+            // Get status text (e.g. "OK")
+            iStatusText.Copy(
+                    (const unsigned short int*)resp.StatusText().DesC().Ptr(),
+                    iStatusText.MaxLength() );
+            // Extract header field names and value
+            ExtractResponseHeadersL( aTransaction );
+            // Validate the status code
+            ValidateStatusCode( iStatusCode );
+            }
+            break;
+        case THTTPEvent::EGotResponseBodyData:
+            {
+            // Part  of response's body data received. Use
+            // aTransaction.Response().Body()->GetNextDataPart() to get the actual
+            // body data.
+            // Get the body data supplier
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - EGotResponseBodyData" );
+            MHTTPDataSupplier *body = aTransaction.Response().Body();
+            TPtrC8 dataChunk;
+            body->GetNextDataPart( dataChunk );
+            iObserver.HttpBodyReceived( dataChunk );
+            // To release the body data.
+            body->ReleaseData();
+            }
+            break;
+        case THTTPEvent::ESucceeded:
+            {
+            IRLOG_INFO( "CIRHTTPDATAPROVIDER::MHFRUNL - ESucceeded" );
+            // Transaction can be closed now. It's not needed anymore.
+            aTransaction.Close();
+            iRunning = EFalse;
+            iObserver.HttpEventComplete();
+            }
+            break;
+        case THTTPEvent::EFailed:
+            {
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - EFailed" );
+            IRLOG_INFO2( "CIRHttpDataProvider::MHFRunL aEvent.iStatus= %d", aEvent.iStatus );
+            IRLOG_INFO2( "CIRHttpDataProvider::MHFRunL iStatusCode= %d", iStatusCode );
+            // Transaction completed with failure.
+            aTransaction.Close();
+            iRunning = EFalse;
+            iObserver.HttpTransactionError( iStatusCode );
+            }
+            break;
+       case THTTPEvent::ENotifyNewRequestBodyPart:
+            {
+            iLogMessage->ReleaseData();
+            }
+            break;
+        case KServiceUnavailable:
+            {
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - KServiceUnavailable" );
+            aTransaction.Close();
+            iRunning = EFalse;
+            iObserver.HttpTransactionError( KServiceUnavailable );
+            }
+            break;
+        case KDndTimedOut:
+            {
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - KDndTimedOut" );
+            // Just close the transaction on errors
+            aTransaction.Close();
+            iRunning = EFalse;
+            iObserver.HttpTransactionError( KDndTimedOut );
+            }
+            break;      
+        default:
+            // There are more events in THTTPEvent,
+            // Which is needed can be implemented incase required
+            // by the HTTP Data Provider
+            {
+            IRLOG_INFO( "CIRHttpDataProvider::MHFRunL - default" );
+            if ( aEvent.iStatus < 0 )
+                {
+                IRRDEBUG2( "CIRHttpDataProvider::MHFRunL aEvent.iStatus= %d", aEvent.iStatus );
+                // Just close the transaction on errors
+                aTransaction.Close();
+                iRunning = EFalse;
+                iObserver.HttpTransactionError( aEvent.iStatus );
+                }
+            // Other events are not errors
+            // (e.g. permanent and temporary redirections)
+            // ignore such errors
+            }
+            break;
+        }
+    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::MHFRunError()
+// Inherited from MHTTPTransactionCallback
+// Called by framework to pass transaction errors
+// ---------------------------------------------------------------------------
+//
+TInt CIRHttpDataProvider::MHFRunError( TInt /* aError*/,
+    RHTTPTransaction /*aTransaction*/, const THTTPEvent & /*aEvent*/ )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunError - Entering" );
+    // Handle error and return KErrNone.
+    IRLOG_DEBUG( "CIRHttpDataProvider::MHFRunError - Exiting." );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::ExtractResponseHeadersL()
+// Used to Extract the response headers.
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::ExtractResponseHeadersL(
+                                        const RHTTPTransaction& aTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Entering" );
+    RHTTPResponse response = aTransaction.Response();
+    RHTTPHeaders respHeader = response.GetHeaderCollection();
+    THTTPHdrFieldIter iterator = respHeader.Fields();
+    RStringPool httpStringPool = aTransaction.Session().StringPool();
+    iterator.First();
+    HBufC8 *headerField = HBufC8::NewLC( KMaxHeaderNameLength +
+                                         KMaxHeaderValueLength );
+    HBufC8 *fieldValBuf = HBufC8::NewLC( KMaxHeaderValueLength );
+    while ( iterator.AtEnd() == EFalse )
+        {
+        RStringTokenF fieldName = iterator();
+        RStringF fieldNameStr = httpStringPool.StringF( fieldName );
+        THTTPHdrVal fieldVal;
+        if ( respHeader.GetField( fieldNameStr, 0, fieldVal ) == KErrNone )
+            {
+            const TDesC8 &fieldNameDesC = fieldNameStr.DesC();
+            headerField->Des().Copy(
+                            fieldNameDesC.Left( KMaxHeaderNameLength ) );
+            fieldValBuf->Des().Zero();
+            switch ( fieldVal.Type() )
+                {
+                // the value is an integer
+                //lint restore -e747:Significant prototype
+                //coercion (arg. no. 1) int to long long  :
+                case THTTPHdrVal::KTIntVal:
+                    fieldValBuf->Des().Num( fieldVal.Int() );
+                    break;
+                    // the value is a case-insensitive string
+                case THTTPHdrVal::KStrFVal:
+                    {
+                    RStringF fieldValStr = httpStringPool.StringF(
+                                                            fieldVal.StrF() );
+                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
+                    fieldValBuf->Des().Copy( fieldValDesC.Left(
+                                                    KMaxHeaderValueLength ) );
+                    }
+                    break;
+                    // the value is a case-sensitive string
+                case THTTPHdrVal::KStrVal:
+                    {
+                    RString fieldValStr = httpStringPool.String(
+                                    fieldVal.Str() );
+                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
+                    fieldValBuf->Des().Copy( fieldValDesC.Left(
+                                    KMaxHeaderValueLength ) );
+                    }
+                    break;
+                    // the value is a date/time
+                case THTTPHdrVal::KDateVal:
+                    {
+                    TDateTime date = fieldVal.DateTime();
+                    TTime t( date );
+                    if ( !iSetNonUAProfUserAgent )
+                        {
+                        iObserver.HttpDateHeaderReceived( *headerField, t );
+                        }
+                    }
+                    break;
+                    // the value is type is unknown
+                default:
+                    break;
+                }
+            // Display HTTP header field name and value
+            headerField->Des().Append( KDPColon );
+            headerField->Des().Append( *fieldValBuf );
+            iObserver.HttpHeaderReceived( *headerField );
+            }
+        ++iterator;
+        }
+    
+    CleanupStack::PopAndDestroy( fieldValBuf );
+    CleanupStack::PopAndDestroy( headerField );
+    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::SetHeaderL()
+// Used to set the Http header
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::SetHeaderL( RHTTPHeaders aHeaders,
+                         TInt aHeaderField, const TDesC8 &aHeaderValue ) const
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::SetHeaderL - Entering" );
+    RStringF valStr = iHttpSession.StringPool().OpenFStringL( aHeaderValue );
+    CleanupClosePushL( valStr );
+    THTTPHdrVal val( valStr );
+    aHeaders.SetFieldL( iHttpSession.StringPool().StringF( aHeaderField,
+                                            RHTTPSession::GetTable() ), val );
+    CleanupStack::PopAndDestroy( &valStr );
+    IRLOG_DEBUG( "CIRHttpDataProvider::SetHeaderL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::BuildHeadersL()
+//  Build the headers for the request
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::BuildHeadersL(const CIRHttpRequestData &aRequestInfo)
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - Entering" );
+    RBuf logstr;
+    logstr.CreateL(KMaxSize);
+    logstr.CleanupClosePushL();
+     // Set headers for request; user agent and accepted content type
+    RHTTPHeaders header = iHttpTransaction.Request().GetHeaderCollection();
+
+    SetHeaderL( header, HTTP::EAccept, KAccept );
+     logstr.Copy(KAccept);
+    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAccept = %S", &logstr );
+
+    // Set the User-Agent header to UAProf string
+    SetHeaderL( header, HTTP::EUserAgent,
+                iIRNetworkControllerHandle->GetUAProfString()->Des() );
+       logstr.Copy(iIRNetworkControllerHandle->GetUAProfString()->Des());
+    IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - HTTP::EUserAgent =");		   
+    TInt logstrLenth = logstr.Length();
+    TBuf<KLogbufferLenth> tempStr;
+    TInt index = 0;
+    while( logstrLenth > 0 )
+      {
+      if( logstrLenth > KLogbufferLenth )
+          {
+          tempStr.Copy( &logstr[index], KLogbufferLenth );
+          }
+      else
+          {
+          tempStr.Copy( &logstr[index], logstrLenth );
+          }
+      IRLOG_DEBUG2( "%S", &tempStr ); 
+      index += KLogbufferLenth;
+      logstrLenth -= KLogbufferLenth;
+      }  
+    // Set the Accept Character set header
+    SetHeaderL( header, HTTP::EAcceptCharset, KAcceptCharset );
+   logstr.Copy(KAcceptCharset);
+    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptCharset = %S", &logstr );
+
+    // Set the Accept-Language header as specified in aRequestInfo
+    if ( aRequestInfo.iAcceptLanguage.Length() != 0 )
+        {
+        SetHeaderL( header, HTTP::EAcceptLanguage,
+                        aRequestInfo.iAcceptLanguage );
+        logstr.Copy(aRequestInfo.iAcceptLanguage);
+	    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptLanguage = %S", &logstr );
+        }
+    // If not specified then set the default accept language as "en"
+    else
+        {
+        SetHeaderL( header, HTTP::EAcceptLanguage, KAcceptLanguage );
+        logstr.Copy(KAcceptLanguage);
+        IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptLanguage = %S", &logstr );
+        }
+
+#ifdef REQUEST_ZIP_RESPONSE
+    // Add Accept-Encoding: gzip HTTP request header. The server will use compression to improve data
+	// transfer speed.
+    SetHeaderL( header, HTTP::EAcceptEncoding, KAcceptEncoding );
+    logstr.Copy(KAcceptEncoding);
+    IRLOG_DEBUG2( "CIRHttpDataProvider::BuildHeadersL - HTTP::EAcceptEncoding = %S", &logstr );
+#endif
+
+    // Set the If-Modified-Since header if required
+    if ( aRequestInfo.isIfModifiedSet )
+        {
+        THTTPHdrVal val( aRequestInfo.iIfModifiedSince );
+        header.SetFieldL( iHttpSession.StringPool().StringF(
+                    HTTP::EIfModifiedSince, RHTTPSession::GetTable() ), val );
+        }
+
+    // Set the x-wap-profile header
+
+    TBuf8<KWapProfileMaxLength> xWapProfile;
+    _LIT(KXWapProfile,"x-wap-profile");
+    xWapProfile.Copy( KXWapProfile );
+    RStringF xWapProfileString = iHttpSession.StringPool().OpenFStringL(
+                    xWapProfile );
+    RStringF xWapProfileValueString = iHttpSession.StringPool().OpenFStringL(
+                    iIRNetworkControllerHandle->GetWapProfString()->Des() );
+   logstr.Copy(iIRNetworkControllerHandle->GetWapProfString()->Des());
+   IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - x-wap-profile =");   
+   logstrLenth = logstr.Length();
+   index = 0;
+   while( logstrLenth > 0 )
+      {
+      if( logstrLenth > KLogbufferLenth )
+          {
+          tempStr.Copy( &logstr[index], KLogbufferLenth );
+          }
+      else
+          {
+          tempStr.Copy( &logstr[index], logstrLenth );
+          }
+      IRLOG_DEBUG2( "%S", &tempStr ); 
+      index += KLogbufferLenth;
+      logstrLenth -= KLogbufferLenth;
+      }  
+   
+    THTTPHdrVal xWapProfileHeader( xWapProfileValueString );
+    header.SetFieldL( xWapProfileString, xWapProfileHeader );
+    xWapProfileString.Close();
+    xWapProfileValueString.Close();
+   
+    //this piece of code is to get the MIME types supported by a device
+    TInt i,ii,j;
+    CMMFControllerPluginSelectionParameters *cs = 
+                             CMMFControllerPluginSelectionParameters::NewLC();
+    CMMFFormatSelectionParameters * fs = 
+                                       CMMFFormatSelectionParameters::NewLC();
+    cs->SetRequiredPlayFormatSupportL( *fs );
+    cs->SetRequiredRecordFormatSupportL( *fs );
+
+    RMMFControllerImplInfoArray controllers;
+    CleanupResetAndDestroyPushL( controllers );
+    cs->ListImplementationsL( controllers );
+
+    TInt contrCount = controllers.Count();
+    RBuf8 audioMIMEs;
+	CleanupClosePushL (audioMIMEs);
+    audioMIMEs.CreateL( KSize );
+    RBuf audioBuf;
+	CleanupClosePushL (audioBuf);
+    audioBuf.CreateL( KBufSize );
+    _LIT(KAudio,"audio");
+    audioBuf.Copy( KAudio );
+    for ( i = 0; i < controllers.Count(); i++ )
+        {
+        if( KUidHelixController == controllers[i]->Uid() )
+            {
+            //supported play formats
+            const RMMFFormatImplInfoArray &pf = controllers[i]->PlayFormats();
+            TInt pfCount = pf.Count();
+            for ( ii = 0; ii < pf.Count(); ii++ )
+                {
+                RBuf z;
+                RBuf z1;
+                TBool first;
+                //file extensions
+                const CDesC8Array &fe = pf[ii]->SupportedFileExtensions();
+                first = TRUE;
+                z.CreateL(KSize);
+                z.CleanupClosePushL();
+                z1.CreateL(KSize);
+                z1.CleanupClosePushL();
+                z1.Zero();
+                for ( j = 0; j < fe.Count(); j++ )
+                    {
+                    _LIT(KNone,", ");
+                    if ( !first )
+                        z1.Append( KNone );
+                    first = FALSE;
+                    z.Copy( fe[j] );
+                    z1.Append( z );
+                    };
+    
+                //MIME types
+                const CDesC8Array &mt = pf[ii]->SupportedMimeTypes();
+                first = TRUE;
+                z1.Zero();
+                TInt tempD = 0;
+                for ( j = 0; j < mt.Count(); j++ )
+                    {
+                    z.Copy( mt[j] );
+                    TInt res = z.Find( audioBuf );
+                    if ( res != KErrNotFound )
+                        {
+                        if ( !first )
+                            {
+                            _LIT(KNone,", ");
+                            z1.Append( KNone );
+                            }
+                        first = FALSE;
+                        z1.Append( z );
+                        audioMIMEs.Append( z );
+                        if ( j == mt.Count() && ii == pf.Count() && 
+                             i == controllers.Count() )
+                            {
+                            //do nothing
+                            }
+                        else
+                            {
+                            _LIT(KComma,",");
+                            audioMIMEs.Append( KComma );
+                            }
+                        tempD++;
+                        }
+                    };
+                CleanupStack::PopAndDestroy(2);
+                };// for play formats
+            }
+        };
+    
+    // Set the X-Nokia-iRAPP-Accept header
+    TBuf8<KNokiaIrAppAcceptMaxLength> xNokiaIrAppAccept;
+    _LIT(KXNokiaIrAppAccept,"X-Nokia-iRAPP-Accept");
+    xNokiaIrAppAccept.Copy( KXNokiaIrAppAccept );
+    RStringF xNokiaIrAppAcceptString = 
+                  iHttpSession.StringPool().OpenFStringL( xNokiaIrAppAccept );
+    RStringF xNokiaIrAppAcceptValueString =
+                         iHttpSession.StringPool().OpenFStringL( audioMIMEs );
+   logstr.Copy(audioMIMEs);
+   IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - X-Nokia-iRAPP-Accept =" );
+   logstrLenth = logstr.Length();
+   index = 0;
+   while( logstrLenth > 0 )
+      {
+      if( logstrLenth > KLogbufferLenth )
+          {
+          tempStr.Copy( &logstr[index], KLogbufferLenth );
+          }
+      else
+          {
+          tempStr.Copy( &logstr[index], logstrLenth );
+          }
+      IRLOG_DEBUG2( "%S", &tempStr ); 
+      index += KLogbufferLenth;
+      logstrLenth -= KLogbufferLenth;
+      }     
+    THTTPHdrVal xNokiaIrAppAcceptHeader( xNokiaIrAppAcceptValueString );
+    header.SetFieldL(xNokiaIrAppAcceptString, xNokiaIrAppAcceptHeader);
+    xNokiaIrAppAcceptString.Close();
+    xNokiaIrAppAcceptValueString.Close();
+ 
+    CleanupStack::PopAndDestroy( 3 );  // audioMIMEs + audioBuf + RMMFControllerImplInfoArray controllers;
+    CleanupStack::PopAndDestroy( fs );
+    CleanupStack::PopAndDestroy( cs );
+    
+   
+    CleanupStack::PopAndDestroy(&logstr);
+    IRLOG_DEBUG( "CIRHttpDataProvider::BuildHeadersL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::ValidateStatusCode()
+// Validate the status code returned
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::ValidateStatusCode( TInt aStatusCode )
+    { 
+    IRLOG_DEBUG( "CIRHttpDataProvider::ValidateStatusCode- Entering" );
+    // Callbacks will be provided as and when the call handling in UI is ready
+    switch ( aStatusCode )
+        {
+        case KOk:
+            {
+            }
+            break;
+        case KCreated:
+            {
+            }
+            break;
+        case KAccepted:
+            {
+            }
+            break;
+        case KNonAuthoritativeInformation:
+            {
+            }
+            break;
+        case KNoContent:
+            {
+            }
+            break;
+        case KResetContent:
+            {
+            }
+            break;
+        case KPartialContent:
+            {
+            }
+            break;
+        // Redirection 3xx status codes
+        case KMultipleChoices:
+            {
+            }
+            break;
+        case KMovedPermanently:
+            {
+            }
+            break;
+        case KFound:
+            {
+            }
+            break;
+        case KSeeOther:
+            {
+            }
+            break;
+        case KNotModified:
+            {
+            iNotModified = ETrue;
+            iObserver.HttpResponseCodeRecieved( KNotModified );
+            }
+            break;
+        case KUseProxy:
+            {
+            }
+            break;
+        // This status code is not used as per RFC 2616 
+        // const TInt KUnused = 306
+        case KTemporaryRedirect:
+            {
+            }
+            break;
+        // Client Error 4xx status codes
+        case KBadRequest:
+            {
+            }
+            break;
+        case KUnauthorized:
+            {
+            }
+            break;
+        case KPaymentRequired:
+            {
+            }
+            break;
+        case KForbidden:
+            {
+            }
+            break;
+        case KNotFound:
+            {
+            iObserver.HttpResponseCodeRecieved( KNotFound );
+            }
+            break;
+        case KMethodNotAllowed:
+            {
+            }
+            break;
+        case KNotAcceptable:
+            {
+            }
+            break;
+        case KProxyAuthenticationRequired:
+            {
+            }
+            break;
+        case KRequestTimeout:
+            {
+            }
+            break;
+        case KConflict:
+            {
+            }
+            break;
+        case KGone:
+            {
+            }
+            break;
+        case KLengthRequired:
+            {
+            }
+            break;
+        case KPreconditionFailed:
+            {
+            }
+            break;
+        case KRequestEntityTooLarge:
+            {
+            }
+            break;
+        case KRequestURITooLong:
+            {
+            }
+            break;
+        case KUnsupportedMediaType:
+            {
+            }
+            break;
+        case KRequestedRangeNotSatisfiable:
+            {
+            }
+            break;
+        case KExpectationFailed:
+            {
+            }
+            break;
+        // Server Error 5xx status codes
+        case KInternalServerError:
+            {
+            }
+            break;
+        case KNotImplemented:
+            {
+            }
+            break;
+        case KBadGateway:
+            {
+            }
+            break;
+        case KServiceUnavailable:
+            {
+            }
+            break;
+        case KGatewayTimeout:
+            {
+            }
+            break;
+        case KHTTPVersionNotSupported:
+            {
+            }
+            break;
+        default:
+            break;
+        } // End of switch(aStatusCode)
+    IRLOG_DEBUG( "CIRHttpDataProvider::ValidateStatusCode - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHttpDataProvider::ReleaseResources()
+// Used to free all resources
+// ---------------------------------------------------------------------------
+//
+void CIRHttpDataProvider::ReleaseResources()
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::ReleaseResources - Entering" );
+	iLogoDownloadEngine->ReleaseResources();
+    CancelTransaction();
+    iHttpSession.Close();
+    iFirstTime = ETrue;
+    IRLOG_DEBUG( "CIRHttpDataProvider::ReleaseResources - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/src/irhttppost.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,243 @@
+/*
+* 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:
+*
+*/
+
+
+#include <coemain.h>
+
+#include "irdebug.h"
+#include "irhttppost.h"
+#include "irsettings.h"
+#include "irreportsettings.h"
+
+// Maximum data part size.
+const TInt KMaxSubmitSize = 1024;
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::NewL()
+// First phase constructor
+//----------------------------------------------------------------------------
+//
+CIRHttpPost* CIRHttpPost::NewL( const RHTTPTransaction& aHttpTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::NewL - Entering" );
+    CIRHttpPost* self = new ( ELeave ) CIRHttpPost( aHttpTransaction );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRHttpPost::NewL - Exiting" );
+    return self;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::ConstructL()
+// 2nd phase constructor
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::ConstructL - Entering" );
+    iSettings = CIRSettings::OpenL();
+    IRLOG_DEBUG( "CIRHttpPost::ConstructL - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetDataPartFromFileL()
+// Read one data part from browse log file.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::GetDataPartFromFileL( TDes8& aDataPart )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Entering" );
+    
+    // Count data size to be read
+    TInt offset = KMaxSubmitSize;
+    if ( iStartPos + offset > iTotalsize )
+        {
+        offset = iRemainingLength ;
+        }
+
+    // Read data part from file
+    User::LeaveIfError( iLogFile.Read( iStartPos, aDataPart, offset ) );
+    
+    // Count remaining data size
+    iStartPos += offset;
+    iRemainingLength -= offset;
+
+    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::CIRHttpPost()
+// C++ constructor.
+//----------------------------------------------------------------------------
+//
+CIRHttpPost::CIRHttpPost( const RHTTPTransaction& aHttpTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Entering" );
+    iTransaction = aHttpTransaction;
+    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::~CIRHttpPost()
+// Destructor.
+//----------------------------------------------------------------------------
+//
+CIRHttpPost::~CIRHttpPost()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Entering" );
+    iPartPostBuffer.Close();
+    iLogFile.Close();
+    if ( iSettings )
+        {
+        iSettings->Close();
+        }
+    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Exit" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::CloseLogFile ()
+// Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::CloseLogFile()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Entering" );
+    iLogFile.Close();
+    IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetNextDataPart()
+// Obtains a data part from the supplier.
+//----------------------------------------------------------------------------
+//        
+TBool CIRHttpPost::GetNextDataPart( TPtrC8& aDataPart )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Entering" );
+    TBool retVal( EFalse ); // Default: several data parts
+
+    // Get data part from browse log file
+    iPartPostBuffer.Delete( 0, iPartPostBuffer.Length() );
+    TRAPD( err, GetDataPartFromFileL( iPartPostBuffer ) )
+    if ( KErrNone == err )
+        {
+        // Set data part.
+        aDataPart.Set( iPartPostBuffer );
+        if ( iRemainingLength <= 0 )
+            {
+            // Last data part.
+            retVal = ETrue;
+            iLogFile.Close();
+            }
+        }
+    else
+        {
+        // Last data part.
+        iRemainingLength = 0;
+        retVal = ETrue;
+        iLogFile.Close();
+        }
+
+    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Exiting" );
+    return retVal;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::ReleaseData()
+// Releases the current data part being held at the data supplier.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::ReleaseData()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Entering" );
+    if ( iRemainingLength > 0 )
+        {
+        TRAP_IGNORE( iTransaction.NotifyNewRequestBodyPartL() )
+        }
+    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::OverallDataSize()
+// Obtains the overall size of the data being supplied.
+//----------------------------------------------------------------------------
+//
+TInt CIRHttpPost::OverallDataSize()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Entering" );
+    TInt retVal( KErrNotFound );
+    if ( iTotalsize > 0 )
+        {
+        retVal = iTotalsize;
+        }
+    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Exiting" );
+    return retVal;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::Reset()
+// Resets the data supplier.
+//----------------------------------------------------------------------------
+//
+TInt CIRHttpPost::Reset()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::Reset - Entering" );
+    iStartPos = 0;
+    iRemainingLength = iTotalsize;
+    IRLOG_DEBUG( "CIRHttpPost::Reset - Exiting" );
+    return KErrNone;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetFileToPostL()
+// Gets browse log file size.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::GetFileToPostL(TInt *aFileSize)
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Entering" );
+
+    TFileName filePath = iSettings->PrivatePath();
+    filePath.Append( KGZipLogFileName );
+    
+    iPartPostBuffer.Close();
+    iPartPostBuffer.CreateL( KMaxSubmitSize );
+
+    User::LeaveIfError(
+    	iLogFile.Open( CCoeEnv::Static()->FsSession(), filePath, EFileRead ) );
+    User::LeaveIfError( iLogFile.Size( iTotalsize ) );
+    *aFileSize = iTotalsize;
+    
+    Reset();
+
+    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Exiting." );
+    }
+    
+//----------------------------------------------------------------------------
+// CIRHttpPost::SetTransaction()
+// Set the transaction.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::SetTransaction( const RHTTPTransaction& aHttpTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Entering." );
+    iTransaction = aHttpTransaction;
+    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Exiting." );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irdataprovider/src/irlogodownloadengine.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1590 @@
+/*
+* 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:  Engine to fetch the logos 
+*
+*/
+
+
+#include <aknnotewrappers.h> 
+
+#include "irlogodownloadengine.h"
+#include "irnetworkcontroller.h"
+#include "ircachemgmt.h"
+#include "irhttprequestdata.h"
+#include "irdebug.h"
+#include "irdataproviderconstants.h"
+#include "iractivenetworkobserver.h"
+
+
+_LIT(KLogoX, "?x=");
+_LIT(KLogoY, "&y=");
+const TInt KPresetsArrayMaxLength = 50;
+const TInt KLogoSize = 59;
+const TInt KParameterSize = 12;
+const TInt KTen = 10;
+const TInt KCacheAvailable = 4;
+const TInt KLogo = 4;
+const TInt KStatusOK = 200;
+const TInt KStatusMultipleChoices = 300;
+const TInt KStatusNotModified = 304;
+const TInt KStatusGatewayTimeout = 504;
+
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::NewL()
+// Creates instance of CIRLogoDownloadEngine.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRLogoDownloadEngine* CIRLogoDownloadEngine::NewL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::NewL - Entering" );
+    CIRLogoDownloadEngine* self = new ( ELeave ) CIRLogoDownloadEngine();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CIRLogoDownloadEngine()
+// Standard C++ constructor
+// ---------------------------------------------------------------------------
+//
+CIRLogoDownloadEngine::CIRLogoDownloadEngine()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CIRLogoDownloadEngine " );
+    //code here, if needed
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::~CIRLogoDownloadEngine()
+// Destructs instance of CIRLogoDownloadEngine.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRLogoDownloadEngine::~CIRLogoDownloadEngine()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::~CIRLogoDownloadEngine - Entering" );
+    if ( iReqBody )
+        {
+        delete iReqBody;
+        iReqBody = NULL;
+        }
+    if ( iRespBody )
+        {
+        delete iRespBody;
+        iRespBody = NULL;
+        }
+    CancelTransaction();
+    // remove E32USER-CBase-66
+#ifdef _DEBUG
+    TRAP_IGNORE( iLogoSession.Close() );
+#else
+    iLogoSession.Close();
+#endif
+    
+    if ( iCopyPreset )
+        {
+        delete iCopyPreset;
+        }
+    if ( iCacheTempPreset )
+        {
+        delete iCacheTempPreset;
+        }
+    if ( iTempPreset )
+        {
+        delete iTempPreset;
+        }
+    if ( iPresetArray )
+        {
+        iPresetArray->ResetAndDestroy();
+        }
+    delete iPresetArray;
+    if ( iObserverArray )
+        {
+        delete iObserverArray;
+        iObserverArray = NULL;
+        }
+    if ( iReqFromArray )
+        {
+        delete iReqFromArray;
+        iReqFromArray = NULL;
+        }
+    if ( iCachePresetArray )
+        {
+        iCachePresetArray->ResetAndDestroy();
+        }
+    delete iCachePresetArray;
+    if ( iCacheObserverArray )
+        {
+        delete iCacheObserverArray;
+        iCacheObserverArray = NULL;
+        }
+    if ( iCacheReqFromArray )
+        {
+        delete iCacheReqFromArray;
+        iCacheReqFromArray = NULL;
+        }
+    if ( iIRNetworkControllerHandle )
+        {
+        iIRNetworkControllerHandle->DeleteActiveNetworkObserver( *this );
+        iIRNetworkControllerHandle->Close();
+        }
+    if ( iCache )
+        {
+        iCache->RemoveObserver( this );
+        iCache->Close();
+        }
+    if ( iResponseHeaders )
+        {
+        delete iResponseHeaders;
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::~CIRLogoDownloadEngine - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ConstructL()
+// 2nd phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ConstructL - Entering" );
+    iPresetArray = new( ELeave ) CArrayPtrFlat<CIRIsdsPreset>(
+                                                     KPresetsArrayMaxLength );
+    iObserverArray = new( ELeave ) CArrayPtrFlat<MLogoDownloadObserver>(
+                                                     KPresetsArrayMaxLength );
+    iReqFromArray = new( ELeave ) CArrayFixFlat<TInt>(
+                                                     KPresetsArrayMaxLength );
+    iCachePresetArray = new( ELeave ) CArrayPtrFlat<CIRIsdsPreset>(
+                                                     KPresetsArrayMaxLength );
+    iCacheObserverArray = new( ELeave ) CArrayPtrFlat<MLogoDownloadObserver>( 
+                                                     KPresetsArrayMaxLength );
+    iCacheReqFromArray = new( ELeave ) CArrayFixFlat<TInt>(
+                                                     KPresetsArrayMaxLength );
+    iPresetArrayPos = 0;
+    iReqFromArrayPos = 0;
+    iObserverArrayPos = 0;
+    iCachePresetArrayPos = 0;
+    iCacheReqFromArrayPos = 0;
+    iCacheObserverArrayPos = 0;
+    iImageIndex = 0; //using temporarily till the isds provides urls
+
+    iPresetModifiedStatus = EFalse;
+    iFirstTime = ETrue;
+    iIRNetworkControllerHandle = CIRNetworkController::OpenL();
+    iIRNetworkControllerHandle->RegisterActiveNetworkObserverL( *this );
+    iCache = CIRCacheMgmt::OpenL( *this );
+    iCache->AddObserverL( this );
+    iResponseHeaders = new ( ELeave ) CIRHttpResponseData;
+    //change to use the new session for logo downloading
+    TRAPD( LeaveValue, iLogoSession.OpenL() );
+    if ( LeaveValue != KErrNone )
+        {
+        // Most common error; no access point configured, and session creation
+        // leaves with KErrNotFound.
+        // Load a string from the resource file and add the error code to string
+        User::Leave( LeaveValue );
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ConstructL - Exiting" );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::IsRunning()
+// To know the status of downloading logo
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRLogoDownloadEngine::IsRunning() const
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::IsRunning" );
+    return iRunning;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::SetHeaderL()
+// to set the headers of the http transaction
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::SetHeaderL( RHTTPHeaders aHeaders,
+                               TInt aHdrField, const TDesC8& aHdrValue ) const
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SetHeaderL - Entering" );
+    RStringF valStr = iLogoSession.StringPool().OpenFStringL( aHdrValue );
+    CleanupClosePushL( valStr );
+    THTTPHdrVal val( valStr );
+    aHeaders.SetFieldL( iLogoSession.StringPool().StringF( aHdrField,
+                                            RHTTPSession::GetTable() ), val );
+    CleanupStack::PopAndDestroy( &valStr ); // valStr
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SetHeaderL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::SendRequestL()
+// API is called from the SearchResultsView for to download logo 
+// while doing Add to Favorites
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLogoDownloadEngine::SendRequestL( CIRIsdsPreset* aPreset,
+                                                  TInt aXValue, TInt aYValue )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Entering" );
+    if ( !iCheckingCache )
+        {
+        ++iImageIndex;
+        iCheckingCache = ETrue;
+        iCacheReqFrom = 0;
+        if ( iCacheTempPreset )
+            {
+            delete iCacheTempPreset;
+            }
+        iCacheTempPreset = NULL;
+        iCacheTempPreset = CIRIsdsPreset::NewL();
+        *iCacheTempPreset = *aPreset;
+
+        if ( iCacheTempPreset->GetImgUrl().Length() != 0 )
+            {
+            if ( ( aXValue > 0 ) && ( aYValue > 0 ) )
+                {
+                //Append the parameters(width,height) of the logo size to imgUrl
+                TInt size = iCacheTempPreset->GetImgUrl().Length()
+                                + KParameterSize;
+                RBuf urlWithSize;
+                CleanupClosePushL(urlWithSize);
+                urlWithSize.CreateL( size );
+                urlWithSize.Copy( iCacheTempPreset->GetImgUrl() );
+                urlWithSize.Append( KLogoX );
+                urlWithSize.AppendNum( aXValue );
+                urlWithSize.Append( KLogoY );
+                urlWithSize.AppendNum( aYValue );
+
+                //set the imgUrl with parameters to the preset
+                iCacheTempPreset->SetImgUrlL( urlWithSize );
+                CleanupStack::PopAndDestroy();
+                }
+            //This method checks whether the logo is available
+            // for the request made
+            iForceGet = EFalse;
+            CheckCacheForLogoL( 0 );
+            }
+        else
+            {
+            //imgUrl doesnt exist in the Preset
+            iCheckingCache = EFalse;
+            return;
+            }
+
+        iCheckingCache = EFalse;
+        if ( !iLogoCached )
+            {
+            FetchLogoDataL( iCacheTempPreset );
+            }
+        }
+    else
+        {
+        CIRIsdsPreset* tempPreset;
+        tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL(tempPreset);
+        *tempPreset = *aPreset;
+        if ( tempPreset->GetImgUrl().Length() != 0 )
+            {
+            if ( ( aXValue > 0 ) && ( aYValue > 0 ) )
+                {
+                //Append the parameters(width,height) of the logo size to imgUrl
+                TInt size = tempPreset->GetImgUrl().Length() + KParameterSize;
+                RBuf urlWithSize;
+                CleanupClosePushL(urlWithSize);
+                urlWithSize.CreateL( size );
+                urlWithSize.Copy( tempPreset->GetImgUrl() );
+                urlWithSize.Append( KLogoX );
+                urlWithSize.AppendNum( aXValue );
+                urlWithSize.Append( KLogoY );
+                urlWithSize.AppendNum( aYValue );
+
+                //set the imgUrl with parameters to the preset
+                tempPreset->SetImgUrlL( urlWithSize );
+                CleanupStack::PopAndDestroy();
+                }
+            }
+        iCachePresetArray->AppendL( tempPreset );
+        iCacheReqFromArray->AppendL( 0 );
+        CleanupStack::PopAndDestroy();
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Exiting" );
+    }
+
+
+EXPORT_C TBool CIRLogoDownloadEngine::IsLogoCachedL( 
+                          CIRIsdsPreset* aPreset, TInt aXValue, TInt aYValue )
+{
+    TInt cached = 0;
+    
+    if(iCacheTempPreset)
+    {
+        delete iCacheTempPreset;
+        iCacheTempPreset = NULL;
+    }
+    
+    iCacheTempPreset = CIRIsdsPreset::NewL();
+    *iCacheTempPreset = *aPreset;
+    iCacheReqMade = EFalse;
+    
+    if (iCacheTempPreset->GetImgUrl().Length() != 0)
+    {
+        if ((aXValue > 0) && (aYValue > 0))
+        {
+            //Append the parameters(width,height) of the logo size to imgUrl
+            TInt size = iCacheTempPreset->GetImgUrl().Length() + KParameterSize;
+            RBuf urlWithSize;
+            CleanupClosePushL(urlWithSize);
+            urlWithSize.CreateL(size);
+            urlWithSize.Copy(iCacheTempPreset->GetImgUrl());
+            urlWithSize.Append(KLogoX);
+            urlWithSize.AppendNum(aXValue);
+            urlWithSize.Append(KLogoY);
+            urlWithSize.AppendNum(aYValue);
+
+            //set the imgUrl with parameters to the preset
+            iCacheTempPreset->SetImgUrlL(urlWithSize);
+            CleanupStack::PopAndDestroy();
+        }
+    }
+    
+    iCache->CheckCacheL(KLogo,iCacheTempPreset->GetImgUrl(),EFalse,cached);
+    
+    return (CIRCacheMgmt::ECacheUseable == cached)?ETrue:EFalse;     
+}
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::SendRequestL()
+// API is called from several views for to download logo 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLogoDownloadEngine::SendRequestL( CIRIsdsPreset* aPreset,
+                                    MLogoDownloadObserver* aLogoHandle, 
+                                    TInt aNPVReq, TInt aXValue, TInt aYValue )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Entering" );
+    if ( aPreset->GetChannelType() == 0 )
+        {
+        aLogoHandle->PresetLogoDownloadedL( aPreset );
+        }
+    else if ( !iCheckingCache )
+        {
+        ++iImageIndex;
+        iCheckingCache = ETrue;
+        if ( aNPVReq == 2 )
+            {
+            iCacheReqFrom = 2;
+            }
+        else
+            {
+            iCacheReqFrom = 1;
+            }
+
+        if ( iCacheTempPreset )
+            {
+            delete iCacheTempPreset;
+            iCacheTempPreset = NULL;
+            }
+        iCacheTempPreset = CIRIsdsPreset::NewL();
+        *iCacheTempPreset = *aPreset;
+        iCacheTempLogoHandle = aLogoHandle;
+
+        if ( iCacheTempPreset->GetImgUrl().Length() != 0 )
+            {
+            if ( ( aXValue > 0 ) && ( aYValue > 0 ) )
+                {
+                //Append the parameters(width,height) of the logo size to imgUrl
+                TInt size = iCacheTempPreset->GetImgUrl().Length()
+                                + KParameterSize;
+                RBuf urlWithSize;
+                CleanupClosePushL(urlWithSize);
+                urlWithSize.CreateL( size );
+                urlWithSize.Copy( iCacheTempPreset->GetImgUrl() );
+                urlWithSize.Append( KLogoX );
+                urlWithSize.AppendNum( aXValue );
+                urlWithSize.Append( KLogoY );
+                urlWithSize.AppendNum( aYValue );
+
+                //set the imgUrl with parameters to the preset
+                iCacheTempPreset->SetImgUrlL( urlWithSize );
+                CleanupStack::PopAndDestroy();
+                }
+            if ( iCacheReqFrom == 1 || iCacheReqFrom == 2 )
+                {
+                //This method checks whether the logo is available
+                // for the request made
+                iForceGet = EFalse;
+                CheckCacheForLogoL( 0 );
+                }
+/*            else if(iCacheReqFrom==2)
+                {
+                //the request has come from NowPlayingView(NPV)
+                //dont check for logo availability in cache
+                //download the logo freshly
+                iLogoCached=EFalse;                                
+                }
+*/            }
+        else
+            {
+            //imgUrl doesnt exist in the Preset
+            iCheckingCache = EFalse;
+            return;
+            }
+
+        iCheckingCache = EFalse;
+        if ( !iLogoCached )
+            {
+            FetchLogoDataL( iCacheTempPreset, aLogoHandle, iCacheReqFrom );
+            }
+        }
+    else
+        {
+        CIRIsdsPreset* tempPreset;
+        tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL(tempPreset);
+        *tempPreset = *aPreset;
+        if ( tempPreset->GetImgUrl().Length() != 0 )
+            {
+            if ( ( aXValue > 0 ) && ( aYValue > 0 ) )
+                {
+                //Append the parameters(width,height) of the logo size to imgUrl
+                TInt size = tempPreset->GetImgUrl().Length() + KParameterSize;
+                RBuf urlWithSize;
+                CleanupClosePushL(urlWithSize);
+                urlWithSize.CreateL( size );
+                urlWithSize.Copy( tempPreset->GetImgUrl() );
+                urlWithSize.Append( KLogoX );
+                urlWithSize.AppendNum( aXValue );
+                urlWithSize.Append( KLogoY );
+                urlWithSize.AppendNum( aYValue );
+
+                //set the imgUrl with parameters to the preset
+                tempPreset->SetImgUrlL( urlWithSize );
+                CleanupStack::PopAndDestroy();
+                }
+            }
+        iCachePresetArray->AppendL( tempPreset );
+        iCacheObserverArray->AppendL( aLogoHandle );
+        if ( aNPVReq == 2 )
+            {
+            iCacheReqFromArray->AppendL( 2 );
+            }
+        else
+            {
+            iCacheReqFromArray->AppendL( 1 );
+            }
+        CleanupStack::PopAndDestroy();
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendRequestL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::GetCacheLogoL()
+// takes the url as a parameter and returns the logo data which is in cache
+// this API is called form the search results for to display logo on the view
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLogoDownloadEngine::GetCacheLogoL( const TDesC& aUrl,
+                                                               TInt& aStatus )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::GetCacheLogoL - Entering" );
+    iSendingLogo = 2;
+    iResult = 0;
+    iForceGet = EFalse;
+    //2 means, this API is called for the search results view
+    iCacheReqMade = ETrue;
+    iCache->CheckCacheL( KLogo, aUrl, iForceGet, iResult );
+    aStatus = iResult;
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::GetCacheLogoL - Exiting" );
+
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::SendCacheLogo()
+// sends the logo which is cached
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TDesC8& CIRLogoDownloadEngine::SendCacheLogo()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendCacheLogo" );
+    return iCache->iLogoData;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::FetchLogoDataL()
+// API is used to download logo from isds/internet
+// called in the API SendRequestL(CIRIsdsPreset* aPreset)
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::FetchLogoDataL( CIRIsdsPreset* aPreset )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Entering" );
+    if ( !iRunning )
+        {
+        //which means the request came from SearchView 
+        // while doing Add to Favorite
+        iTempReqFrom = 0;
+        if ( iReqBody )
+            {
+            delete iReqBody;
+            iReqBody = NULL;
+            }
+        if ( iRespBody )
+            {
+            delete iRespBody;
+            iRespBody = NULL;
+            }
+        if ( iTempPreset )
+            {
+            delete iTempPreset;
+            iTempPreset = NULL;
+            }
+        iTempPreset = CIRIsdsPreset::NewL();
+        *iTempPreset = *aPreset;
+        if ( iTempPreset->GetImgUrl().Length() != 0 )
+            {
+            IssueLogoDownloadRequestL();
+            }
+        else /*ImgUrl doesnt exist in the iTempPreset*/
+            {
+            //simply ignore it
+            }
+        }
+    else
+        {
+        CIRIsdsPreset* tempPreset;
+        tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL( tempPreset );
+        *tempPreset = *aPreset;
+        iPresetArray->AppendL( tempPreset );
+        CleanupStack::Pop( tempPreset );
+        iReqFromArray->AppendL( 0 );
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Exiting" );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::FetchLogoDataL()
+// API is used to download logo from isds/internet
+// called in the API SendRequestL())
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::FetchLogoDataL( CIRIsdsPreset* aPreset,
+                            MLogoDownloadObserver* aLogoHandle, TInt aNPVReq )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Entering" );
+    if ( !iRunning )
+        {
+        if ( aNPVReq == 2 )
+            {
+            //which means the request came from NowPlayingView
+            iTempReqFrom = 2;
+            }
+        else
+            {
+            //which means the request came from other than NowPlayingView
+            iTempReqFrom = 1;
+            }
+
+        iTempLogoHandle = aLogoHandle;
+        if ( iReqBody )
+            {
+            delete iReqBody;
+            iReqBody = NULL;
+            }
+        if ( iRespBody )
+            {
+            delete iRespBody;
+            iRespBody = NULL;
+            }
+        if ( iTempPreset )
+            {
+            delete iTempPreset;
+            iTempPreset = NULL;
+            }
+        iTempPreset = CIRIsdsPreset::NewL();
+        *iTempPreset = *aPreset;
+        if ( iTempPreset->GetImgUrl().Length() != 0 )
+            {
+            IssueLogoDownloadRequestL();
+            }
+        else /*ImgUrl doesnt exist in the iTempPreset*/
+            {
+            //simply ignore it
+            }
+        }
+    else
+        {
+        CIRIsdsPreset* tempPreset;
+        tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL( tempPreset );
+        *tempPreset = *aPreset;
+        iPresetArray->AppendL( tempPreset );
+        CleanupStack::Pop( tempPreset );
+        iObserverArray->AppendL( aLogoHandle );
+        if ( aNPVReq == 2 )
+            {
+            iReqFromArray->AppendL( 2 );
+            }
+        else
+            {
+            iReqFromArray->AppendL( 1 );
+            }
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::FetchLogoDataL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CheckCacheForLogoL()
+// Checks the cache whether the logo is available or not
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::CheckCacheForLogoL( TInt aValue )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CheckCacheForLogoL - Entering" );
+    iSendingLogo = aValue;
+    iResult = 0;
+    //0 means, this API is called for the usecase of checking cache
+    if ( iSendingLogo == 0 )
+        {
+        iCacheReqMade = ETrue;
+        iCache->CheckCacheL( KLogo, iCacheTempPreset->GetImgUrl(), iForceGet,
+                        iResult );
+        }
+    //1 means, this API is called for the usecase of downloading logo
+    else if ( iSendingLogo == 1 )
+        {
+        iCacheReqMade = ETrue;
+        iCache->CheckCacheL( KLogo, iTempPreset->GetImgUrl(), iForceGet,
+                        iResult );
+        }
+    if ( ( iResult == 0 ) )//not available in the cache
+        {
+        iLogoCached = EFalse;
+        iIsConditionalGET = EFalse;
+        }
+    else if ( iResult == -1 )//cache is stale/not useable
+        {
+        iLogoCached = EFalse;
+        iIsConditionalGET = ETrue;
+        }
+    else if ( iResult == 1 )//cache is useable
+        {
+        iLogoCached = ETrue;
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CheckCacheForLogoL - Exiting" );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::IssueLogoDownloadRequest()
+// submits the transaction for to download the logo
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::IssueLogoDownloadRequestL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::IssueLogoDownloadRequestL - Entering" );
+    //This piece of code is for selecting the access point which is already
+    //set at the begining of the application.  To download the logo the same
+    //accesse point will be used.
+    if ( !iIRNetworkControllerHandle->GetNetworkStatus() )
+        {
+        iIRNetworkControllerHandle->ChooseAccessPointL();
+        iLogoRequestPending = ETrue;
+        }
+    else
+        {
+        if ( iFirstTime )
+            {
+            iLogoSession.Close();
+            TRAPD( LeaveValue, iLogoSession.OpenL() );
+            if ( LeaveValue != KErrNone )
+                {
+                // Most common error; no access point configured, and session 
+                // creation leaves with KErrNotFound. Load a string from the 
+                // resource file and add the error code to string
+                User::Leave( LeaveValue );
+                }
+            // Set the HTTP connection properties
+            RStringPool strP = iLogoSession.StringPool();
+            RHTTPConnectionInfo connInfo = iLogoSession.ConnectionInfo();
+            // RSocketServ Handle
+            connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketServ, RHTTPSession::GetTable() ),
+                                   THTTPHdrVal( iIRNetworkControllerHandle->GetIRSocketServer().Handle() ) );
+            
+            // RConnection Handle
+            TInt connPtr = REINTERPRET_CAST( TInt, &( iIRNetworkControllerHandle->GetIRConnection() ) );
+            connInfo.SetPropertyL( strP.StringF( HTTP::EHttpSocketConnection, RHTTPSession::GetTable() ),
+                                   THTTPHdrVal( connPtr ) );
+            
+            // HTTP Version ( Specify that i am using HTTP/1.1
+            connInfo.SetPropertyL( strP.StringF( HTTP::EVersion, RHTTPSession::GetTable() ), 
+                                   THTTPHdrVal( strP.StringF( HTTP::EHttp11, RHTTPSession::GetTable() ) ) );
+
+            // Set RHttpSession into NetworkController for logo byte counter
+            iIRNetworkControllerHandle->RegisterLogoDataTransferTrackerL(
+                                                               iLogoSession );
+
+            iFirstTime = EFalse;
+            }
+
+        HBufC8* buffertmp = HBufC8::NewLC( iTempPreset->GetImgUrl().Length()
+                        + 1 );
+        TPtr8 buffertmpPtr( buffertmp->Des() );
+        buffertmpPtr.Copy( iTempPreset->GetImgUrl() );
+
+        TUriParser8 uri;
+        uri.Parse( buffertmpPtr );
+        RStringF method = iLogoSession.StringPool().StringF( HTTP::EGET,
+                                                   RHTTPSession::GetTable() );
+        iTransaction = iLogoSession.OpenTransactionL( uri, *this, method );
+        RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
+        // Set the User-Agent header to UAProf string
+        SetHeaderL( hdr, HTTP::EUserAgent,
+                    iIRNetworkControllerHandle->GetUAProfString()->Des() );
+        // If KAccept include "image/jpeg", we can't get correct content of 
+		// png file from server 
+        _LIT8(KAccept,"image/png,image/gif");
+        SetHeaderL( hdr, HTTP::EAccept, KAccept );
+        SetHeaderL( hdr, HTTP::EAcceptLanguage, KAcceptLanguage );
+
+        if ( iIsConditionalGET )
+            {
+            RStringF valStr = iLogoSession.StringPool().OpenFStringL( iETag );
+            CleanupClosePushL( valStr );
+            THTTPHdrVal val( valStr );
+            hdr.SetFieldL( iLogoSession.StringPool().StringF(HTTP::EIfNoneMatch, RHTTPSession::GetTable() ),
+                           val );
+            CleanupStack::PopAndDestroy( &valStr ); // valStr
+            }
+        CleanupStack::PopAndDestroy( buffertmp ); // buffertmp
+
+        //setting the member variable to zero
+        iRespBodySize = 0;
+        iTransaction.SubmitL();
+
+        iRunning = ETrue;
+        iLogoRequestPending = ETrue;
+        iState = ESendingEvent;
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::IssueLogoDownloadRequestL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CancelTransaction()
+// cancels the current transaction
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRLogoDownloadEngine::CancelTransaction()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CancelTransaction - Entering" );
+    if ( !iRunning )
+        {
+        return;
+        }
+    iTransaction.Close();
+    iRunning = EFalse;
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CancelTransaction - Exiting" );
+    }
+
+
+// ----------------------------------------------------------------------------------
+// CIRLogoDownloadEngine::SendPresetWithLogoL()
+// sends the preset with logo to the requestors
+// ----------------------------------------------------------------------------------
+//
+EXPORT_C void CIRLogoDownloadEngine::SendPresetWithLogoL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendPresetWithLogoL - Entering" );
+    //Logo has downloaded, so update the status of the variable iLogoRequestPending
+    iLogoRequestPending = EFalse;
+    //Remove the imgUrl with parameters from the Preset
+    //now set imgUrl without parameters in to the Preset
+    TInt sizeImgUrlWithPar = iTempPreset->GetImgUrl().Length();
+    TBool hasParameters = EFalse;
+    RBuf urlWithPar;
+    CleanupClosePushL(urlWithPar);
+    urlWithPar.CreateL( sizeImgUrlWithPar );
+    urlWithPar.Copy( iTempPreset->GetImgUrl() );
+    RBuf tempBuf;
+    CleanupClosePushL(tempBuf);
+    tempBuf.CreateL( sizeImgUrlWithPar );
+
+    TLex urlLex( urlWithPar );
+    for ( ; !urlLex.Eos(); )
+        {
+        tempBuf.Zero();
+        while ( urlLex.Peek() != '?' && !urlLex.Eos() )
+            {
+            tempBuf.Append( urlLex.Get() );
+            }
+        if ( urlLex.Peek() == '?' )
+            {
+            hasParameters = ETrue;
+            }
+        urlLex.Inc();
+        }
+
+    RBuf imgUrl;
+    CleanupClosePushL(imgUrl);
+    if ( hasParameters )
+        {
+        //let say urlWithPar has the value http://www.logos.com/images/test.pngx=100&y=100
+        //now the tempBuf contains the value  x=100&y=100
+        TInt sizeUrlParameters = tempBuf.Length();
+        sizeUrlParameters++; // now this integer contains the size of x=100&y=100 
+        TInt sizeImgUrl = sizeImgUrlWithPar - sizeUrlParameters;
+
+        //Create a buffer to store the imgUrl without parameters
+        imgUrl.CreateL( sizeImgUrl );
+        imgUrl.Copy( urlWithPar.Left( sizeImgUrl ) );
+        iTempPreset->SetImgUrlL( imgUrl );
+        }
+    else
+        {
+        //nothing to be done
+        //the imgUrl present in the preset is correct, no need to change anything
+        }
+
+    //set the downloaded logo to the preset with the API SetLogoData()
+    iTempPreset->SetLogoDataL( *iRespBody );
+    //which means the request came from SearchView while doing Add to Favorite
+    if ( iTempReqFrom == 0 )
+        {
+        iPresetModifiedStatus = ETrue;
+        }
+    //which menas the request came from a view other than NowPlayingView
+    else if ( iTempReqFrom == 1 )
+        {
+        iTempLogoHandle->PresetLogoDownloadedL( iTempPreset );
+        }
+    //which menas the request came from NowPlayingView
+    else if ( iTempReqFrom == 2 )
+        {
+        //(1)logo has downloaded freshly
+        //(2)send the logo to the NPV through PresetLogoDownloadedL
+        //(3)check whether the preset exists in favdb; if so replace that with new logo
+        iTempLogoHandle->PresetLogoDownloadedL( iTempPreset );
+        //iFavDb->ReplacePresetL(*iTempPreset)
+        }
+
+    iTempPreset->SetImgUrlL( urlWithPar );
+    //Cache the newly downloaded logo
+    iCache->CacheLogoL( *iRespBody, iTempPreset->GetImgUrl(),
+                    *iResponseHeaders );
+
+    CleanupStack::PopAndDestroy(3);
+
+    iRunning = EFalse;
+    iState = EIdle;
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::SendPresetWithLogoL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::MHFRunL())
+// callback API from MHTTPTransactionCallback
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::MHFRunL( RHTTPTransaction aTransaction,
+                                     const THTTPEvent& aEvent )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunL - Entering" );
+    switch ( aEvent.iStatus )
+        {
+        case THTTPEvent::EGotResponseHeaders:
+            {
+            RHTTPResponse resp = aTransaction.Response();
+            TInt status = resp.StatusCode();
+            iRespCode = status;
+            ExtractResponseHeadersL( aTransaction );
+            if ( status >= KStatusOK && status < KStatusMultipleChoices )
+                {
+                THTTPHdrVal headerValue( 0 );
+                RHTTPHeaders headers = resp.GetHeaderCollection();
+                TInt error = headers.GetField( iLogoSession.StringPool().StringF(
+                                HTTP::EContentLength,
+                                RHTTPSession::GetTable() ), 0, headerValue );
+                iRespBodySize = 0;
+                if ( KErrNone == error )
+                    {
+                    iRespBodySize = headerValue.Int();
+                    }
+                iRespBody = HBufC8::NewL( iRespBodySize + 1 );
+                }
+            //304 means, the content has not modified
+            else if ( status == KStatusNotModified )
+                {
+                if ( iIsConditionalGET )
+                    {
+                    iIsConditionalGET = EFalse;
+                    iRunning = EFalse;
+                    //update the trust period 
+                    //no problem if it leaves
+                    TRAP_IGNORE( iCache->UpdateTrustPeriodL( KLogo, iTempPreset->GetImgUrl(), *iResponseHeaders))
+                    //do a forced get because the data is notmodifed in isds and 
+                    //trustable
+                    iForceGet = ETrue;
+                    CheckCacheForLogoL( 1 );
+                    }
+                }
+            else if ( status == KStatusGatewayTimeout )
+                {
+                //implementation, if needed
+                CancelTransaction();
+                if ( iTempReqFrom == 0 )
+                    {
+                    //do nothing
+                    }
+                else
+                    {
+                    iTempLogoHandle->PresetLogoDownloadError( iTempPreset );
+                    }
+                ManagePresetArrayIndexL();
+                }
+            }
+            break;
+        case THTTPEvent::EGotResponseBodyData:
+            {
+            MHTTPDataSupplier* body = aTransaction.Response().Body();
+            TPtrC8 dataChunk;
+            body->GetNextDataPart( dataChunk );
+            if ( iRespBodySize > 0 )
+                {
+                iRespBody->Des().Append( (const TDesC8&)dataChunk );
+                }
+            else if ( iRespBody )
+                {
+                //which means the body of the response has come
+                //but in the response headers Content-Length is missing
+                //for this usecase realloc the iRespBody with the data received
+                HBufC8* buffertmp = HBufC8::NewLC( dataChunk.Length() + 1 );
+                TPtr8 buffertmpPtr( buffertmp->Des() );
+                buffertmpPtr.Copy( (const TDesC8&)dataChunk );
+
+                TInt tempSize;
+                tempSize = iRespBody->Length() + dataChunk.Length();
+
+                iRespBody = iRespBody->ReAllocL( tempSize );
+                TPtr8 ibufferPtr( iRespBody->Des() );
+                ibufferPtr.Append( buffertmpPtr );
+
+                CleanupStack::PopAndDestroy( buffertmp ); // buffertmp        
+                }
+            body->ReleaseData();
+            }
+            break;
+        case THTTPEvent::EResponseComplete:
+            {
+            //No implementation
+            }
+            break;
+        case THTTPEvent::ESucceeded:
+            {
+            iTransaction.Close();
+            if ( iIsConditionalGET )
+                {
+                iIsConditionalGET = EFalse;
+                }
+
+            iRunning = EFalse;
+            //set the downloaded logo in the preset and send it back to the requestor
+            SendPresetWithLogoL();
+            ManagePresetArrayIndexL();
+            }
+            break;
+
+        case THTTPEvent::EFailed:
+            {
+            aTransaction.Close();
+            iRunning = EFalse;
+            iState = EIdle;
+            //304 means, the content has not modified
+            if ( iRespCode == KStatusNotModified )
+                {
+                //do nothing;
+                }
+            else
+                {
+                if ( iTempReqFrom == 0 )
+                    {
+                    //do nothing
+                    }
+                else
+                    {
+                    iTempLogoHandle->PresetLogoDownloadError( iTempPreset );
+                    }
+                }
+            ManagePresetArrayIndexL();
+            }
+            break;
+        default:
+
+            if ( aEvent.iStatus < 0 )
+                {
+                aTransaction.Close();
+                iRunning = EFalse;
+                iState = EIdle;
+                if ( iTempReqFrom == 0 )
+                    {
+                    //do nothing
+                    }
+                else
+                    {
+                    iTempLogoHandle->PresetLogoDownloadError( iTempPreset );
+                    }
+                ManagePresetArrayIndexL();
+                }
+            break;
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::MHFRunError()
+// callback API from MHTTPTransactionCallback
+// ---------------------------------------------------------------------------
+//
+TInt CIRLogoDownloadEngine::MHFRunError( TInt /*aError*/,
+                RHTTPTransaction aTransaction, const THTTPEvent& /*aEvent*/)
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunError - Entering" );
+    aTransaction.Close();
+    iRunning = EFalse;
+    iState = EIdle;
+    if ( iIsConditionalGET )
+        {
+        iIsConditionalGET = EFalse;
+        }
+    if ( iTempReqFrom == 0 )
+        {
+        //do nothing
+        }
+    else
+        {
+        iTempLogoHandle->PresetLogoDownloadError( iTempPreset );
+        }
+    TRAP_IGNORE(ManagePresetArrayIndexL())
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::MHFRunError - Exiting" );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::GetNextDataPart(TPtrC8& aDataPart)
+// callback API from MHTTPDataSupplier
+// ---------------------------------------------------------------------------
+TBool CIRLogoDownloadEngine::GetNextDataPart( TPtrC8& aDataPart )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::GetNextDataPart - Entering" );
+    aDataPart.Length();
+    iReqBody->Length();
+    aDataPart.Set( *iReqBody );
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::GetNextDataPart - Exiting" );
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ReleaseData()
+// callback API from MHTTPDataSupplier
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::ReleaseData()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseData" );
+    //No implementaion
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::Reset()
+// callback API from MHTTPDataSupplier
+// ---------------------------------------------------------------------------
+TInt CIRLogoDownloadEngine::Reset()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::Reset" );
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------
+// CIRLogoDownloadEngine::OverallDataSize()
+// callback API from MHTTPDataSupplier
+// --------------------------------------------------------------------
+TInt CIRLogoDownloadEngine::OverallDataSize()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::OverallDataSize" );
+    return iReqBody->Length();
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ExtractResponseHeadersL()
+// Used to Extract the response headers.
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::ExtractResponseHeadersL(
+                                        const RHTTPTransaction& aTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpDataProvider::ExtractResponseHeadersL - Entering" );
+    RHTTPResponse response = aTransaction.Response();
+    RHTTPHeaders respHeader = response.GetHeaderCollection();
+    THTTPHdrFieldIter iterator = respHeader.Fields();
+    RStringPool httpStringPool = aTransaction.Session().StringPool();
+    iterator.First();
+    HBufC8 *headerField = HBufC8::NewLC( KMaxHeaderNameLength
+                    + KMaxHeaderValueLength );
+    HBufC8 *fieldValBuf = HBufC8::NewLC( KMaxHeaderValueLength );
+    while ( iterator.AtEnd() == EFalse )
+        {
+        RStringTokenF fieldName = iterator();
+        RStringF fieldNameStr = httpStringPool.StringF( fieldName );
+        THTTPHdrVal fieldVal;
+        if ( respHeader.GetField( fieldNameStr, 0, fieldVal ) == KErrNone )
+            {
+            const TDesC8 &fieldNameDesC = fieldNameStr.DesC();
+            headerField->Des().Copy(
+                            fieldNameDesC.Left( KMaxHeaderNameLength ) );
+            fieldValBuf->Des().Zero();
+            switch ( fieldVal.Type() )
+                {
+                // the value is an integer
+                //lint restore -e747:Significant prototype
+                //coercion (arg. no. 1) int to long long  :
+                case THTTPHdrVal::KTIntVal:
+                    fieldValBuf->Des().Num( fieldVal.Int() );
+                    break;
+                    // the value is a case-insensitive string
+                case THTTPHdrVal::KStrFVal:
+                    {
+                    RStringF fieldValStr = httpStringPool.StringF(
+                                    fieldVal.StrF() );
+                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
+                    fieldValBuf->Des().Copy( fieldValDesC.Left(
+                                    KMaxHeaderValueLength ) );
+                    }
+                    break;
+                    // the value is a case-sensitive string
+                case THTTPHdrVal::KStrVal:
+                    {
+                    RString fieldValStr = httpStringPool.String(
+                                    fieldVal.Str() );
+                    const TDesC8 &fieldValDesC = fieldValStr.DesC();
+                    fieldValBuf->Des().Copy( fieldValDesC.Left(
+                                    KMaxHeaderValueLength ) );
+                    }
+                    break;
+                    // the value is a date/time
+                case THTTPHdrVal::KDateVal:
+                    {
+                    TDateTime date = fieldVal.DateTime();
+                    TTime t( date );
+                    // if ( iSetNonUAProfUserAgent )
+                    //     {
+                    HttpDateHeaderReceived( *headerField, t );
+                    //     }
+                    }
+                    break;
+                    // the value is type is unknown
+                default:
+                    break;
+                }
+            // Display HTTP header field name and value
+            headerField->Des().Append( KDPColon );
+            headerField->Des().Append( *fieldValBuf );
+            HttpHeaderReceived( *headerField );
+            }
+        ++iterator;
+        }
+
+    CleanupStack::PopAndDestroy( fieldValBuf );
+    CleanupStack::PopAndDestroy( headerField );
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractResponseHeadersL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRLogoDownloadEngine::HttpHeaderReceived()
+//  indicate that an HTTP header is received.
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::HttpHeaderReceived( const TDesC8& aHeaderData )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpHeaderReceived - Entering." );
+    _LIT8(KDelim,":");
+    _LIT8(KContentType,"Content-Type");
+    ExtractHeaderValue( aHeaderData, KContentType, KDelim,
+                        iResponseHeaders-> iContentType );
+    _LIT8(KMaxAge,"max-age");
+    _LIT8(KDelimEqual,"=");
+    ExtractHeaderValue( aHeaderData, KMaxAge, KDelimEqual,
+                        iResponseHeaders-> iMaxAge );
+    _LIT8(KContentLength,"Content-Length");
+    ExtractHeaderValue( aHeaderData, KContentLength, KDelim,
+                        iResponseHeaders-> iContentLength );
+    _LIT8(KExpires,"Expires");
+    ExtractHeaderValue( aHeaderData, KExpires, KDelim,
+                        iResponseHeaders->iExpires );
+    _LIT8(KETag,"ETag");
+    ExtractHeaderValue( aHeaderData, KETag, KDelim, iResponseHeaders->iETag );
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpHeaderReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRLogoDownloadEngine::ExtractHeaderValue()
+//  Used to build the CIRHttpResponseData
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::ExtractHeaderValue( const TDesC8& aHeaderData,
+                const TDesC8& aHeaderName, const TDesC8& aDelimeter,
+                TDes8& aHolder ) const
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractHeaderValue - Entering" );
+    TInt position = aHeaderData.Find( aHeaderName );
+    if ( position >= 0 )
+        {
+        TPtrC8 headerValue = aHeaderData.Mid( position );
+        TInt delimeterPosition = headerValue.Find( aDelimeter );
+        if ( delimeterPosition != KErrNotFound )
+            {
+            delimeterPosition++;
+            TPtrC8 value = headerValue.Mid( delimeterPosition );
+            aHolder.Copy( value );
+            aHolder.TrimAll();
+            }
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ExtractHeaderValue - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRLogoDownloadEngine::HttpDateHeaderReceived()
+//  Used to build the CIRHttpResponseData members
+// ---------------------------------------------------------------------------
+//
+void CIRLogoDownloadEngine::HttpDateHeaderReceived( const TDesC8 &aHeader,
+                                                    const TTime& aTime )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpDateHeaderReceived - Entering." );
+    _LIT8(KDate,"Date");
+    _LIT8(KLastModified,"Last-Modified");
+    TInt position = aHeader.Find( KDate );
+    if ( position != KErrNotFound )
+        {
+        iResponseHeaders->iDate = aTime;
+        return;
+        }
+    position = aHeader.Find( KLastModified );
+    if ( position != KErrNotFound )
+        {
+        iResponseHeaders->iLastModified = aTime;
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::HttpDateHeaderReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ManagePresetArrayIndexL()
+// To make another download request if exists in the queue
+// To update the iPresetArray current index
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::ManagePresetArrayIndexL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ManagePresetArrayIndexL - Entering" );
+    TInt PresetArrayLength = iPresetArray->Count();
+    if ( ( PresetArrayLength > 0 ) && ( iPresetArrayPos < PresetArrayLength ) )
+        {
+        CIRIsdsPreset* tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL( tempPreset );
+        *tempPreset = *( iPresetArray->At( iPresetArrayPos ) );
+        if ( iReqFromArrayPos < iReqFromArray->Count() && 
+             iReqFromArray->At(iReqFromArrayPos ) == 0 )
+            {
+            FetchLogoDataL( tempPreset );
+            }
+        else if ( iObserverArrayPos < iObserverArray->Count() )
+            {
+            FetchLogoDataL( tempPreset,
+                            iObserverArray->At( iObserverArrayPos ),
+                            iReqFromArray->At( iReqFromArrayPos ) );
+            ++iObserverArrayPos;
+            }
+        ++iPresetArrayPos;
+        ++iReqFromArrayPos;
+        // delete tempPreset;
+        CleanupStack::PopAndDestroy( tempPreset );
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ManagePresetArrayIndexL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ManageCachePresetArrayIndexL()
+// To make another download request if exists in the queue
+// To update the iCachePresetArray current index
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::ManageCachePresetArrayIndexL()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ManageCachePresetArrayIndexL - Exiting" );
+    TInt CachePresetArrayLength = iCachePresetArray->Count();
+    if ( ( CachePresetArrayLength > 0 ) && 
+         ( iCachePresetArrayPos < CachePresetArrayLength ) )
+        {
+        CIRIsdsPreset* tempPreset;
+        tempPreset = CIRIsdsPreset::NewL();
+        CleanupStack::PushL( tempPreset );
+        *tempPreset = *( iCachePresetArray->At( iCachePresetArrayPos ) );
+
+        if ( iCacheReqFromArrayPos < iCacheReqFromArray->Count() &&
+             iCacheReqFromArray->At( iCacheReqFromArrayPos ) == 0 )
+            {
+            SendRequestL( tempPreset, KLogoSize, KLogoSize );
+            }
+        else if ( iCacheObserverArrayPos < iCacheObserverArray->Count() )
+            {
+            SendRequestL( tempPreset, 
+                          iCacheObserverArray->At( iCacheObserverArrayPos ), 
+                          iCacheReqFromArray->At( iCacheReqFromArrayPos ) );
+            ++iCacheObserverArrayPos;
+            }
+        ++iCachePresetArrayPos;
+        ++iCacheReqFromArrayPos;
+        // delete tempPreset;
+        CleanupStack::PopAndDestroy( tempPreset );
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ManageCachePresetArrayIndexL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CacheError()
+// Called from cachemgmt in case of an error
+// callback API from MIRCacheObserver
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::CacheError()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheError" );
+
+    //code here, if needed
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CacheFailed()
+// Called from cachemgmt in case of cache failure
+// callback API from MIRCacheObserver
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::CacheFailed()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheFailed" );
+    //code here, if needed
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CacheInvalid()
+// Called from cachemgmt in case cache is invalid
+// callback API from MIRCacheObserver
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::CacheInvalid()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheInvalid - Entering" );
+    iETag = iCache->iETag;
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CacheInvalid - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::CachedStructureL(TInt aChoice)
+// Called from cachemgmt data retrival is successful
+// callback API from MIRCacheObserver
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::CachedStructureL( TInt aChoice )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CachedStructureL - Entering" );
+    if ( iCacheReqMade )
+        {
+        iCacheReqMade = EFalse;
+        if ( aChoice == KCacheAvailable )
+            {
+
+            TInt sizeImgUrlWithPmts = 0;
+            //Remove the imgUrl with parameters from the Preset
+            //now set imgUrl without parameters in to the Preset
+            if ( iSendingLogo == 0 )
+                {
+                sizeImgUrlWithPmts = iCacheTempPreset->GetImgUrl().Length();
+                }
+            else if ( iSendingLogo == 1 )
+                {
+                sizeImgUrlWithPmts = iTempPreset->GetImgUrl().Length();
+                }
+            else if ( iSendingLogo == 2 )
+                {
+                sizeImgUrlWithPmts = KTen;
+                }
+            TBool hasParameters = EFalse;
+            RBuf urlWithPar;
+            CleanupClosePushL(urlWithPar);
+            urlWithPar.CreateL( sizeImgUrlWithPmts );
+            if ( iSendingLogo == 0 )
+                {
+                urlWithPar.Copy( iCacheTempPreset->GetImgUrl() );
+                }
+            else if ( iSendingLogo == 1 )
+                {
+                urlWithPar.Copy( iTempPreset->GetImgUrl() );
+                }
+            else if ( iSendingLogo == 2 )
+                {
+                _LIT(KNone,"");
+                urlWithPar.Copy( KNone );
+                }
+
+            RBuf tempBuf;
+            CleanupClosePushL(tempBuf);
+            tempBuf.CreateL( sizeImgUrlWithPmts );
+
+            TLex urlLex( urlWithPar );
+            for ( ; !urlLex.Eos(); )
+                {
+                tempBuf.Zero();
+                while ( urlLex.Peek() != '?' && !urlLex.Eos() )
+                    {
+                    tempBuf.Append( urlLex.Get() );
+                    }
+                if ( urlLex.Peek() == '?' )
+                    {
+                    hasParameters = ETrue;
+                    }
+                urlLex.Inc();
+                }
+
+            RBuf imgUrl;
+            CleanupClosePushL(imgUrl);
+            if ( hasParameters )
+                {
+                //let say urlWithPar has the value http://www.logos.com/images/test.pngx=100&y=100
+                //now the tempBuf contains the value  x=100&y=100
+                TInt sizeUrlParameters = tempBuf.Length();
+                sizeUrlParameters++; // now this integer contains the size of x=100&y=100 
+                TInt sizeImgUrl = sizeImgUrlWithPmts - sizeUrlParameters;
+
+                //Create a buffer to store the imgUrl without parameters
+                imgUrl.CreateL( sizeImgUrl );
+                imgUrl.Copy( urlWithPar.Left( sizeImgUrl ) );
+                if ( iSendingLogo == 0 )
+                    {
+                    iCacheTempPreset->SetImgUrlL( imgUrl );
+                    }
+                else if ( iSendingLogo == 1 )
+                    {
+                    iTempPreset->SetImgUrlL( imgUrl );
+                    }
+                }
+            else
+                {
+                //nothing to be done
+                //the imgUrl present in the preset is correct, no need to change anything
+                }
+
+            if ( iSendingLogo == 0 )
+                {
+                //logo is available in the cache
+                if ( aChoice == KCacheAvailable )
+                    {
+                    iCacheTempPreset->SetLogoDataL( iCache->iLogoData );
+                    }
+                if ( iCacheReqFrom == 0 )
+                    {
+                    iPresetModifiedStatus = ETrue;
+                    }
+                else
+                    {
+                    iCacheTempLogoHandle->PresetLogoDownloadedL(
+                                    iCacheTempPreset );
+                    }
+
+                ManageCachePresetArrayIndexL();
+                }
+            else if ( iSendingLogo == 1 )
+                {
+                //logo is available in the cache
+                if ( aChoice == KCacheAvailable )
+                    {
+                    iTempPreset->SetLogoDataL( iCache->iLogoData );
+                    }
+                if ( iTempReqFrom == 0 )
+                    {
+                    iPresetModifiedStatus = ETrue;
+                    }
+                else
+                    {
+                    iTempLogoHandle->PresetLogoDownloadedL( iTempPreset );
+                    }
+
+                ManagePresetArrayIndexL();
+                }
+            //logo request from the search results (while displaying logo)
+            else if ( iSendingLogo == 2 )
+                {
+                //code here, if needed
+                }
+            //close all the buffers
+            CleanupStack::PopAndDestroy(3);
+            }
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::CachedStructureL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRLogoDownloadEngine::ReleaseResources()
+// Releases the resources held by logo download engine
+// Used to close the Http Session if already open
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::ReleaseResources()
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseResources - Entering" );
+    CancelTransaction();
+    iLogoSession.Close();
+    iFirstTime = ETrue;
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::ReleaseResources - Exiting" );
+    }
+
+// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+// Notified by network controller when network is active, to reissue 
+// the request NotifyActiveNetworkObserversL()
+// ---------------------------------------------------------------------------
+
+void CIRLogoDownloadEngine::NotifyActiveNetworkObserversL(
+                                                      TIRNetworkEvent aEvent )
+    {
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::NotifyActiveNetworkObserversL - Entering" );
+    switch ( aEvent )
+        {
+        case ENetworkConnectionDisconnected:
+            {
+            ReleaseResources();
+            }
+            break;
+        case ENetworkConnectionEstablished:
+            {
+            if ( iLogoRequestPending )
+                {
+                IssueLogoDownloadRequestL();
+                } 
+            }
+        }
+    IRLOG_DEBUG( "CIRLogoDownloadEngine::NotifyActiveNetworkObserversL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Notified by network controller when user cancels network connection, 
+// to reset the pending requests  
+// ResetPendingRequests()
+// ---------------------------------------------------------------------------
+void CIRLogoDownloadEngine::ResetPendingRequests( TBool /*aValue*/)
+    {
+    // nothing to do
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/bmarm/irfavoritesdbu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,28 @@
+EXPORTS
+	_ZN14CIRFavoritesDb10AddPresetLER13CIRIsdsPresetRii @ 1  NONAME
+	_ZN14CIRFavoritesDb10AddPresetLERK7TDesC16S2_Rii @ 2  NONAME
+	_ZN14CIRFavoritesDb10PresetByIdEi @ 3  NONAME
+	_ZN14CIRFavoritesDb11AddObserverERK17MPSPresetObserver @ 4  NONAME
+	_ZN14CIRFavoritesDb12GetAllPresetEv @ 5  NONAME
+	_ZN14CIRFavoritesDb12SearchPresetEii @ 6  NONAME
+	_ZN14CIRFavoritesDb13DeletePresetLEi @ 7  NONAME
+	_ZN14CIRFavoritesDb13GetMoveStatusEv @ 8  NONAME
+	_ZN14CIRFavoritesDb13GetNextPresetEi @ 9  NONAME
+	_ZN14CIRFavoritesDb13PresetByIndexEi @ 10  NONAME
+	_ZN14CIRFavoritesDb13SetMoveStatusEi @ 11  NONAME
+	_ZN14CIRFavoritesDb14MaxPresetCountEv @ 12  NONAME
+	_ZN14CIRFavoritesDb14RemoveObserverERK17MPSPresetObserver @ 13  NONAME
+	_ZN14CIRFavoritesDb14ReplacePresetLER13CIRIsdsPreset @ 14  NONAME
+	_ZN14CIRFavoritesDb16SwapPresetsInDbLEiiii @ 15  NONAME
+	_ZN14CIRFavoritesDb17GetPreviousPresetEi @ 16  NONAME
+	_ZN14CIRFavoritesDb20HandlePresetChangedLEi4TUidN17MPSPresetObserver9TPSReasonE @ 17  NONAME
+	_ZN14CIRFavoritesDb22MakePresetUserDefinedLEii @ 18  NONAME
+	_ZN14CIRFavoritesDb25ReplaceUserDefinedPresetLER13CIRIsdsPreset @ 19  NONAME
+	_ZN14CIRFavoritesDb4NewLEv @ 20  NONAME
+	_ZNK14CIRFavoritesDb16EmptyPresetCountEv @ 21  NONAME
+	_ZNK14CIRFavoritesDb7PresetsEv @ 22  NONAME
+	_ZThn4_N14CIRFavoritesDb20HandlePresetChangedLEi4TUidN17MPSPresetObserver9TPSReasonE @ 23  NONAME ; #<thunk>#
+	_ZN14CIRFavoritesDb19GetAllSortedPresetsEv @ 24  NONAME
+	_ZN14CIRFavoritesDb20IncreasePlayedTimesLERK13CIRIsdsPreset @ 25  NONAME
+        _ZN14CIRFavoritesDb13RenamePresetLERK13CIRIsdsPresetRK7TDesC16 @ 26 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/bwinscw/irfavoritesdbu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,26 @@
+EXPORTS
+	?AddObserver@CIRFavoritesDb@@QAEHABVMPSPresetObserver@@@Z @ 1  NONAME ; int CIRFavoritesDb::AddObserver(class MPSPresetObserver const &)
+	?AddPresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@AAHH@Z @ 2  NONAME ; void CIRFavoritesDb::AddPresetL(class CIRIsdsPreset &, int &, int)
+	?AddPresetL@CIRFavoritesDb@@QAEXABVTDesC16@@0AAHH@Z @ 3  NONAME ; void CIRFavoritesDb::AddPresetL(class TDesC16 const &, class TDesC16 const &, int &, int)
+	?DeletePresetL@CIRFavoritesDb@@QAEXH@Z @ 4  NONAME ; void CIRFavoritesDb::DeletePresetL(int)
+	?EmptyPresetCount@CIRFavoritesDb@@QBEHXZ @ 5  NONAME ; int CIRFavoritesDb::EmptyPresetCount(void) const
+	?GetAllPreset@CIRFavoritesDb@@QAEXXZ @ 6  NONAME ; void CIRFavoritesDb::GetAllPreset(void)
+	?GetMoveStatus@CIRFavoritesDb@@QAEHXZ @ 7  NONAME ; int CIRFavoritesDb::GetMoveStatus(void)
+	?GetNextPreset@CIRFavoritesDb@@QAEHH@Z @ 8  NONAME ; int CIRFavoritesDb::GetNextPreset(int)
+	?GetPreviousPreset@CIRFavoritesDb@@QAEHH@Z @ 9  NONAME ; int CIRFavoritesDb::GetPreviousPreset(int)
+	?HandlePresetChangedL@CIRFavoritesDb@@EAEXHVTUid@@W4TPSReason@MPSPresetObserver@@@Z @ 10  NONAME ; void CIRFavoritesDb::HandlePresetChangedL(int, class TUid, enum MPSPresetObserver::TPSReason)
+	?MakePresetUserDefinedL@CIRFavoritesDb@@QAEXHH@Z @ 11  NONAME ; void CIRFavoritesDb::MakePresetUserDefinedL(int, int)
+	?MaxPresetCount@CIRFavoritesDb@@QAEHXZ @ 12  NONAME ; int CIRFavoritesDb::MaxPresetCount(void)
+	?NewL@CIRFavoritesDb@@SAPAV1@XZ @ 13  NONAME ; class CIRFavoritesDb * CIRFavoritesDb::NewL(void)
+	?PresetById@CIRFavoritesDb@@QAEPAVCIRPreset@@H@Z @ 14  NONAME ; class CIRPreset * CIRFavoritesDb::PresetById(int)
+	?PresetByIndex@CIRFavoritesDb@@QAEPAVCIRPreset@@H@Z @ 15  NONAME ; class CIRPreset * CIRFavoritesDb::PresetByIndex(int)
+	?Presets@CIRFavoritesDb@@QBEABV?$RPointerArray@VCIRPreset@@@@XZ @ 16  NONAME ; class RPointerArray<class CIRPreset> const & CIRFavoritesDb::Presets(void) const
+	?RemoveObserver@CIRFavoritesDb@@QAEXABVMPSPresetObserver@@@Z @ 17  NONAME ; void CIRFavoritesDb::RemoveObserver(class MPSPresetObserver const &)
+	?ReplacePresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@@Z @ 18  NONAME ; void CIRFavoritesDb::ReplacePresetL(class CIRIsdsPreset &)
+	?ReplaceUserDefinedPresetL@CIRFavoritesDb@@QAEXAAVCIRIsdsPreset@@@Z @ 19  NONAME ; void CIRFavoritesDb::ReplaceUserDefinedPresetL(class CIRIsdsPreset &)
+	?SearchPreset@CIRFavoritesDb@@QAEHHH@Z @ 20  NONAME ; int CIRFavoritesDb::SearchPreset(int, int)
+	?SetMoveStatus@CIRFavoritesDb@@QAEXH@Z @ 21  NONAME ; void CIRFavoritesDb::SetMoveStatus(int)
+	?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 &)
+        ?RenamePresetL@CIRFavoritesDb@@QAEHABVCIRIsdsPreset@@ABVTDesC16@@@Z @ 25  NONAME ; int CIRFavoritesDb::RenamePresetL(class CIRIsdsPreset const &, class TDesC16 const &)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+PRJ_MMPFILES
+irfavoritesdb.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/group/irfavoritesdb.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include 		<platform_paths.hrh>
+TARGET        irfavoritesdb.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x2000B4A0
+
+PAGED
+
+SOURCEPATH        ../src
+
+SOURCE		irfavoritesdb.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../irsettings/inc
+USERINCLUDE     ../../ircommon/inc
+USERINCLUDE     ../../irpresetplugin/inc
+USERINCLUDE     ../../irxmlparser/inc
+USERINCLUDE     ../../../presetserver/include
+USERINCLUDE     ../../../presetserver/clientinc
+USERINCLUDE     ../../../presetserver/serverinc
+
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+
+SMPSAFE
+
+LIBRARY             estor.lib
+LIBRARY             euser.lib
+LIBRARY             irdatastructures.lib
+LIBRARY             irsettings.lib
+LIBRARY             psclient100.lib
+LIBRARY             irxmlparser.lib
+
+LIBRARY        flogger.lib
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY		CAP_GENERAL_DLL
+
+#if defined( WINSCW )
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/inc/irfavoritesdb.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,309 @@
+/*
+* 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  IRFAVORITESDB_H
+#define  IRFAVORITESDB_H
+
+#include "pspresetobserver.h"
+#include "psserv.h"
+
+class CIRIsdsPreset;
+class CIRPreset;
+class CPSPresetNotifier;
+
+
+//typedefed to array of pointer array
+typedef RPointerArray<CIRPreset> RIRPresetArray;
+
+//this class is an handle to the presetclient
+//provides apis to access the presetserver functionalities
+
+NONSHARABLE_CLASS( CIRFavoritesDb ) : public CBase, 
+                                      public MPSPresetObserver
+    {
+public:
+    /**CIRFavoritesDb::NewL()
+    *standard symbian 1st phase constructor
+    *@return CIRFavoritesDb* ,db instance
+    */
+    IMPORT_C static CIRFavoritesDb* NewL();
+
+
+    /**CIRFavoritesDb::~CIRFavoritesDb()
+    *standard c++ destructor
+    */
+    ~CIRFavoritesDb();
+
+
+    /**CIRFavoritesDb::AddPresetL()
+    *exported function to add a preset
+    *@param CIRIsdsPreset& the isds preset,TInt index(not in use for 3.2)
+    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
+    */
+   IMPORT_C void AddPresetL( CIRIsdsPreset& aPreset,
+                             TInt& aIndex, TBool aIsLogoAvialable = EFalse );
+
+
+    /**CIRFavoritesDb::AddPresetL()
+    *exported,overloaded function to add a preset manually
+    *@param TDesC name,TDesC url of the preset,
+    *@param TInt,TIntindex and id not in use for 3.2
+    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
+    */
+    IMPORT_C void AddPresetL( const TDesC& aName, const TDesC& aURl,
+        TInt& aReturn, TBool aIsLogoAvialable = EFalse );
+
+
+    /**CIRFavoritesDb::DeletePresetL()
+    *exported, function to delete a preset
+    *@param TInt is the id of the preset to be deleted
+    *@return KerrNone on success,
+    */
+   IMPORT_C void DeletePresetL( TInt aUniqId );
+
+
+    /**CIRFavoritesDb::GetAllPresetL()
+    *exported,function to get the list of saved presets in the array iFavPresetList
+    */
+   IMPORT_C void GetAllPreset();
+
+    /*
+     * get all presets sorted by played times
+     */
+    IMPORT_C const RIRPresetArray& GetAllSortedPresets();
+    
+    /**CIRFavoritesDb::SearchPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset to search.
+    *@return the index number of the preset being searched(if found) 
+    *@else KErrNotFound
+    */
+   IMPORT_C  TInt SearchPreset( const TInt aUniqPresetId,
+                              const TInt aIsdsPresetId );
+
+
+    /**CIRFavoritesDb::GetPreviousPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset .
+    *@return the index number of the previous preset
+    */
+   IMPORT_C TInt GetPreviousPreset( TInt aIndex );
+
+
+    /**CIRFavoritesDb::GetNextPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset .
+    *@return the index number of the next preset
+    */
+   IMPORT_C TInt GetNextPreset(TInt aIndex);
+
+
+
+    /**CIRFavoritesDb::SwapPresetsInDbL()
+    *returns the previous preset for a given presetId
+    *@param TInt,TInt,TInt,TIntswaps the presets between two
+    *channelIds for given channel Indices
+    *@return TInt system wode error code
+    **/
+   IMPORT_C void SwapPresetsInDbL( TInt aChannelIdFrom,TInt aChannelIdTo,
+               TInt aChannelIndexFro,TInt aChannelIndexTo );
+
+
+    /**CIRFavoritesDb::ReplacePresetL()
+    *replaces a preset with a new preset
+    *@param CIRIsdsPreset instance
+    *for presetSync
+    *@return TInt system wode error code
+    **/
+   IMPORT_C void ReplacePresetL( CIRIsdsPreset& aNewPreset );
+
+
+   /**CIRFavoritesDb::ReplaceUserDefinedPresetL()
+    *replaces a userdefined preset with a new userdefined preset
+    *@param CIRIsdsPreset instance
+    *for presetSync
+    *@return TInt system wide error code
+    **/
+   IMPORT_C void ReplaceUserDefinedPresetL( CIRIsdsPreset& aNewPreset );
+   
+
+    /**CIRFavoritesDb::MakePresetUserDefinedL()
+    *for a favorite preset that has been removed from the isds.
+    *it is made a user defined preset by changing the type to 0.
+    *index value is preseved so that the relative positions in the saved
+    *stations view remains the same.
+    *@param TInt,TInt
+    *@return TInt
+    **/
+   IMPORT_C void MakePresetUserDefinedL( TInt aChannelId,
+                                         TInt aUserDefinedChannelId );
+
+    /**
+    *const RVRPresetArray& CVRPresetHandler::Presets() const
+    * @return RIRPresetArray& an array containing all Internet Radio presets.
+    */
+    IMPORT_C const RIRPresetArray& Presets() const;
+    /**
+    *TInt CIRFavoritesDb::EmptyPresetCount() const
+    *Returns the number of empty presets
+    *@return TInt the number of empty presets
+    */
+    IMPORT_C TInt EmptyPresetCount() const;
+
+   /**
+    *TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
+    *Adds an observer that is notified upon changes in presets.
+    *@param MPSPresetObserver&
+    */
+    IMPORT_C TInt AddObserver( const MPSPresetObserver& aObserver );
+
+   /**
+    *TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
+    *Removes an observer for a preset.
+    */
+    IMPORT_C void RemoveObserver(const MPSPresetObserver& aObserver );
+
+    /**CIRFavoritesDb::MaxPresetCount()
+    *returns the maximum number of presets that 
+    *can be stored in the favorites list
+    *@return TInt maximum number of presets 
+    *that can be stored in the favorites list
+    **/
+    IMPORT_C TInt MaxPresetCount();
+    
+    /** CIRFavoritesDb::SetMoveStatus(TBool aStatus)
+    * @aStatus, sets the status of the Move functionality progression
+    **/
+    IMPORT_C void SetMoveStatus( TBool aStatus );
+    
+    /** CIRFavoritesDb::GetMoveStatus()
+    * returns the status of the Move functionality
+    **/
+    IMPORT_C TBool GetMoveStatus();
+
+    /*
+     * Increase the played times of a channel if it has been in the favorites
+     * return : KErrNone if success
+     *          KErrNotFound if the preset is not in the favorites
+     */
+    IMPORT_C TInt IncreasePlayedTimesL( const CIRIsdsPreset &aIsdsPreset );
+    
+    /**CIRFavoritesDb::RenamePresetL()
+    *renames a preset with a new name
+    *@param CIRIsdsPreset instance
+    *@param a new name
+    **/
+    IMPORT_C TInt RenamePresetL( const CIRIsdsPreset &aIsdsPreset, 
+                                      const TDesC &aNewName );
+                                      
+private:
+    /**CIRFavoritesDb::HandlePresetChangedL()
+    *function to notify a change in saved presets
+    *@param TInt,TUid,TPSReason the id of the preset,the id of the
+    *preset handler i.e CIRPreset,the reason of change.
+    */
+    void HandlePresetChangedL( TInt aId, TUid aDataHandler, 
+                               MPSPresetObserver::TPSReason aReason );
+
+      
+    /**CIRFavoritesDb::MovePresetL()
+    *moves a preset to destination index
+    *@param TInt,TInt,the preset id ,the destination index
+    **/
+    void MovePresetL( const TInt aId, const TInt aDestinationIndex );
+
+
+    /**CIRFavoritesDb::ConstructL()
+    *Standard 2nd phase construction
+    **/
+    void ConstructL();
+
+
+    /**CIRFavoritesDb::SortByIndex()
+    *sorts the preset list by index
+    **/
+    void SortByIndex();
+
+    /**
+    *TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
+    *returns the index of the preset whose id is aId
+    *@return TInt the index of the preset whose id is aId
+    */
+    TInt MatchingPresetId( TInt aId );
+
+
+    /**
+    *TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
+    *creates a preset by the index aIndex
+    *@param TInt aIndex,index of the new preset
+    *@return CIRPreset*
+    */
+    CIRPreset* CreatePresetL( TInt aIndex );
+
+    /*
+     * Search a user defined preset by name and url
+     */
+    TInt SearchUserDefinedPreset( const TDesC &aName, const TDesC &aUrl );
+    
+public:
+    /**
+     *CIRFavoritesDb::PresetByIndex(TInt aIndex)
+     * Returns a preset by its id.
+     * @param   aId     Id of the preset.
+     * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
+     */
+    CIRPreset* PresetByIndex( TInt aIndex );
+
+
+    /**
+    * CIRFavoritesDb::PresetById(TInt aIndex)
+    * Returns a preset by its id.
+    * @param   aId     Id of the preset.
+    * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
+    */
+    IMPORT_C CIRPreset* PresetById( TInt aId );
+
+
+    /**the preset list accessible to ui*/
+    /** Internet Radio presets currently stored in the preset server. */
+    RIRPresetArray iFavPresetList;
+private:
+
+    /** Session with the preset server. */
+    RPSServ iServ;
+    
+    /** Notifier that informs about changes in presets. */
+    CPSPresetNotifier* iNotifier;
+    /** Observers to notify when presets change. */
+    RPointerArray<MPSPresetObserver> iObservers;
+
+    /** The maximum number of supported presets. */
+    TInt iMaxPresetCount;
+
+    /**type of presets(source)*/
+    enum TChannelType
+        {
+        EUserDefined,/**added by user*/
+        EIsdsPreset,/**fetched from isds*/
+        };
+    
+    /** iMoveStatus, to know the status of the Move funcitionality */
+    TBool iMoveStatus;
+};
+
+#endif  //end IRFAVORITESDB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfavoritesdb/src/irfavoritesdb.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,914 @@
+/*
+* 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 "pspresetnotifier.h"
+#include "pstransaction.h"
+#include "irdebug.h"
+#include "irfavoritesdb.h"
+#include "irisdspreset.h"
+#include "irpreset.h"
+#include "irsettings.h"
+
+const TInt KNullId = 0;
+const TInt KNineteen = 19;
+
+namespace PresetHandler
+    {
+//-------------------------------------------------------------------------------
+//TInt OrderByIndex( const CIRPresetImpl& aPreset1, const CIRPresetImpl& aPreset2 )
+//-------------------------------------------------------------------------------
+//
+    //Sort algorithm
+    // Orders presets by their index.
+    //
+    TInt OrderByIndex( const CIRPreset& aPreset1, const CIRPreset& aPreset2 )
+        {
+        if ( aPreset1.Index() < aPreset2.Index() )
+            {
+            return -1;
+            }
+        else if ( aPreset1.Index() > aPreset2.Index() )
+            {
+            return 1;
+            }
+        else
+            {
+            return 0;
+            }
+        }
+    
+    TInt OrderByPlayedTimes( const CIRPreset& aPreset1, 
+                             const CIRPreset& aPreset2 )
+        {
+        int difference = aPreset1.GetPlayedTimes() - aPreset2.GetPlayedTimes();
+        if ( difference > 0 )
+            {
+            return -1;
+            }
+        else if ( difference == 0 )
+            {
+            return aPreset1.Name().Compare( aPreset2.Name() );
+            }
+        else 
+            {
+            return 1;
+            }
+        }
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::NewL()
+// standard symbian 1st phase constructor
+//---------------------------------------------------------------------------
+//
+EXPORT_C CIRFavoritesDb* CIRFavoritesDb::NewL()
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::NewL" );
+    CIRFavoritesDb* self = new ( ELeave ) CIRFavoritesDb;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRFavoritesDb::NewL - Exiting." );
+    return self;
+    }
+
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::~CIRFavoritesDb()
+// standard c++ destructor
+//---------------------------------------------------------------------------
+//
+CIRFavoritesDb::~CIRFavoritesDb()
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb" );
+    delete iNotifier;
+    iObservers.Close();
+    //resets the preset array
+    iFavPresetList.ResetAndDestroy();
+    iFavPresetList.Close();
+    iServ.Close();
+
+	IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb - Exiting." );
+    }
+
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::AddPresetL()
+// exported function to add a preset
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::AddPresetL( CIRIsdsPreset& aPreset,
+        TInt& aRetVal, TBool /*aIsLogoAvialable*/ )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL" );
+    iMoveStatus = EFalse;
+    SortByIndex() ;//sorted by index
+    TBool presetSaved = EFalse;
+
+    // Check the existence of preset before checking if the list is full 
+    // to avoid KErrNoMemory for a preset that exists in the list.
+    TInt searchResult = 0;
+    if ( aPreset.GetChannelType() == 0 )
+        {
+        searchResult = SearchUserDefinedPreset( aPreset.GetName(), 
+                                                aPreset.GetChannelUrlAtL(0) );
+        //we don't allow user to add presets with the same name
+        if ( searchResult >= 0 )
+            {
+            ReplaceUserDefinedPresetL( aPreset );
+            aRetVal = KErrAlreadyExists;
+            return;
+            }
+        }
+    else
+        {
+        searchResult = SearchPreset( aPreset.GetId(), KNullId );
+        if( KErrNotFound !=  searchResult)
+        {
+            //Eventhough the preset exists in the favorites db, replace the
+            //same with the new preset i.e. aPreset.  Because the db should 
+            //contain the updated values of the preset.
+            ReplacePresetL(aPreset);
+            
+            aRetVal = KErrAlreadyExists;
+
+            return;
+        }
+    }
+
+    if ( EmptyPresetCount() <= 0 )
+        {
+         //max limit reached no more processing
+        aRetVal = KErrNoMemory;
+        return;
+        }
+    
+    // Found the next empty place or replace
+    for ( TInt j = 0; j < MaxPresetCount() && !presetSaved; j++ )
+        {
+        CIRPreset* preset = PresetByIndex( j );
+        TBool presetExisted = preset ? ETrue : EFalse;//presetExisted=1 if preset exists
+
+        if ( !preset )
+            {
+            preset = CreatePresetL( j );//create if preset==NULL
+            }
+
+        if ( !presetExisted )//crete if preset did not exists
+            {
+            //open a transaction with the preset server
+            CPSTransaction* transaction = preset->CreateTransactionLC();
+            //Convert to Plugnized Preset
+            //That is accepted by the preset server
+            preset->CIRIsdsPresetToCIRPresetImplL( aPreset );
+            //setname of CPSPresetInterface is called
+            preset->SetNameL( aPreset.GetName() );
+            transaction->CommitL();
+            CleanupStack::PopAndDestroy( transaction );
+            //added to check multiple insertion
+            presetSaved = ETrue;
+            }
+        }
+
+    aRetVal = KErrNone;
+    IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::AddPresetL()
+// exported,overloaded function to add a preset manually
+// converts the minimum data(name ,url) into an preset
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::AddPresetL( const TDesC& aName,
+    const TDesC& aURl,TInt& aReturn, TBool /*aIsLogoAvialable*/ )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int)" );
+    iMoveStatus = EFalse;
+    CIRIsdsPreset* saveItem;
+    saveItem = CIRIsdsPreset::NewLC();
+    saveItem->SetNameL( aName );
+    //only one url is saved for manually added channel
+    saveItem->SetUrlCount( 1 );
+    saveItem->SetChannelType( EUserDefined );
+    _LIT( KNotAvailable, "NA" );
+    //bitrate set to zero so that it is accessible to all 
+    //kinds of bitrate settings
+    saveItem->SetUrlL( KNotAvailable, aURl, 0 );
+    AddPresetL( *saveItem, aReturn );
+    CleanupStack::PopAndDestroy( saveItem );
+    IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int) - Exiting." );
+    }
+
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::DeletePresetL()
+// exported, function to delete a preset
+//---------------------------------------------------------------------------
+//
+
+EXPORT_C void CIRFavoritesDb::DeletePresetL( TInt aId )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL" );
+    iMoveStatus = EFalse;
+    iServ.DeletePresetL( aId );
+    TInt count = iFavPresetList.Count();
+    //when we delete one preset in the server's db, we also
+    //need to delete it in the favorite list. 
+    for( TInt i=0; i<count; i++ )
+    {      
+        if( aId == iFavPresetList[i]->Id())
+        {
+            //before Remove, the memory should be freed ahead. 
+            delete iFavPresetList[i];
+            iFavPresetList.Remove(i);          
+            break;
+        }
+    }
+    IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::GetAllPresetL()
+// exported,function to get the list of saved presets in 
+// the array iFavPresetList
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::GetAllPreset()
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL" );
+    //sort the array according to the index values
+    SortByIndex();
+    IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::GetAllSortedPresets()
+// get all presets sorted by played times
+//---------------------------------------------------------------------------
+//
+EXPORT_C const RIRPresetArray& CIRFavoritesDb::GetAllSortedPresets()
+    {
+    iFavPresetList.Sort( 
+            TLinearOrder<CIRPreset>( PresetHandler::OrderByPlayedTimes ) );
+    return iFavPresetList;
+    }
+    
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::SwapPresetsInDbL()
+// returns the previous preset for a given presetId
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::SwapPresetsInDbL( TInt aChannelIdFrom,
+    TInt /*aChannelIdTo*/, TInt /*aChannelIndexFro*/, TInt aChannelIndexTo )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL" );
+    MovePresetL( aChannelIdFrom, aChannelIndexTo );
+    IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::MovePresetL()
+// moves a preset to destination index
+//---------------------------------------------------------------------------
+//
+ void CIRFavoritesDb::MovePresetL( const TInt aId, 
+                                   const TInt aDestinationIndex )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL" );
+    ASSERT( aDestinationIndex >= 0 && 
+            aDestinationIndex < iFavPresetList.Count() );
+    if( aDestinationIndex < 0 || aDestinationIndex >= iFavPresetList.Count() )
+        {
+        User::Leave( KErrArgument );
+        }
+    
+    TInt fakeIndex = iFavPresetList[aDestinationIndex]->Index();
+    SetMoveStatus( ETrue );
+    iServ.MovePresetL( aId, fakeIndex );
+    IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL - Exiting." );
+    }
+    
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::SetMoveStatus()
+// sets the status of Move functionality
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::SetMoveStatus( TBool aStatus )
+    {
+    iMoveStatus = aStatus;
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::GetMoveStatus()
+// returns the status of the Move functionality
+//---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRFavoritesDb::GetMoveStatus()
+    {
+    return iMoveStatus;
+    }
+    
+    
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::SearchPreset()
+// exported, function to find out if a preset exists in the favorites list
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::SearchPreset( const TInt aIsdsPresetId,
+                              const TInt aUniqPresetId )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset" );
+    TInt count = iFavPresetList.Count();
+    TInt iter;
+    //for isds presets
+    if( aIsdsPresetId != KNullId )
+        {
+        for( iter = 0; iter < count; iter++ )
+            {
+            if( iFavPresetList[iter]->GetId() == aIsdsPresetId )
+                {
+                IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (1)." );
+                return iter;
+                }
+            }
+        }
+    if( aUniqPresetId != KNullId )
+    //for manually added presets
+        {
+        for( iter = 0; iter < count; iter++)
+            {
+            if( aUniqPresetId == iFavPresetList[iter]->Id() )
+                {
+                IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (2)." );
+                return iter;
+                }
+            }
+        }
+    // both the parameters are null implies 
+    //that the preset is a non saved station
+    IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (3)." );
+    return KErrNotFound;
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::GetPreviousPreset()
+// exported, function to find out if a preset exists in the favorites list
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::GetNextPreset( TInt aIndex )
+    {
+    if ( aIndex == ( iFavPresetList.Count() - 1 )|| aIndex == KNineteen )
+        {
+        return 0;
+        }
+    else
+        {
+        return aIndex+1;
+        }
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::GetNextPreset()
+// exported, function to find out if a preset exists in the favorites list
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::GetPreviousPreset( TInt aIndex )
+    {
+    if ( aIndex==0 )
+        {
+        TInt val = ( iFavPresetList.Count() - 1 );
+        return val;
+        }
+    else
+        {
+        return aIndex-1;
+        }
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::ReplacePresetL()
+// replaces a preset with a new preset
+// for presetSync
+//---------------------------------------------------------------------------
+//
+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();
+            //change the preset data and commit
+            //update 'name' only if this station has not been renamed before
+            if ( preset->GetRenamed() )
+                {
+                aNewPreset.SetNameL( preset->Name() );
+                }
+            preset->CIRIsdsPresetToCIRPresetImplL( aNewPreset );
+            preset->SetChannelType( EIsdsPreset );
+            transaction->CommitL();
+            CleanupStack::PopAndDestroy( transaction );
+            }
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::ReplaceUserDefinedPresetL()
+// replaces a userdefined preset with a new userdefiend preset
+// for presetSync
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::ReplaceUserDefinedPresetL( 
+                                   CIRIsdsPreset& aNewPreset )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL" );
+    iMoveStatus = EFalse;
+    TInt index = SearchUserDefinedPreset( aNewPreset.GetName(), 
+                                    aNewPreset.GetChannelUrlAtL(0) );
+    
+    if ( index >= 0 && index < iFavPresetList.Count() )
+        {
+        CIRPreset* preset = iFavPresetList[index];
+        if ( preset )
+            {
+            CPSTransaction* transaction = preset->CreateTransactionLC();
+            /**
+             * change the preset data and commit
+             */
+            preset->CIRIsdsPresetToCIRPresetImplL( aNewPreset );
+            preset->SetChannelType( EUserDefined );
+            preset->SetNameL( aNewPreset.GetName() );
+            preset->SetDescriptionL( aNewPreset.GetShortDescription() );
+            transaction->CommitL();
+            CleanupStack::PopAndDestroy( transaction );
+            }
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL - Exiting." );    
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::MakePresetUserDefinedL()
+// for a favorite preset that has been removed from the isds.
+// it is made a user defined preset by changing the type to 0.
+// index value is preseved so that the relative positions in the saved
+// stations view remains the same.
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::MakePresetUserDefinedL( TInt aChannelId,
+    TInt /*aUserDefinedChannelId*/ )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL" );
+    iMoveStatus = EFalse;
+    //to match the function signature
+    TInt index = SearchPreset( aChannelId, KNullId );
+    CIRPreset* preset;
+    //actual index
+    if ( index >= 0 )
+        {
+        ASSERT( index >= 0 || index < iFavPresetList.Count() );
+        index = iFavPresetList[index]->Index();
+        preset = PresetByIndex(index);
+        if( preset )
+            {
+            CPSTransaction* transaction = preset->CreateTransactionLC();
+            //convert the flag to user defined and commit
+            preset->SetChannelType( EUserDefined );
+            //assign null id
+            preset->SetId( KNullId );
+
+            //make logo as null;;;; added for 2.0
+            _LIT8( KEmpty, "" );
+            RBuf8 tempLogo;
+            CleanupClosePushL(tempLogo);
+            tempLogo.CreateL( KEmpty );
+            preset->SetLogoDataL( tempLogo );
+            _LIT( KEmptyString, "" );
+            RBuf tempString;
+            CleanupClosePushL(tempString);
+            tempString.CreateL( KEmptyString );
+            //set imgurl to null
+            preset->SetImgUrlL( tempString );
+            //set genre to null
+            preset->SetGenreInfoL( tempString,tempString );
+            //set language to null
+            preset->SetLangL( tempString );
+            //set country to null
+            preset->SetCountryNameL( tempString );
+            //set musicStoreEnabled filed to "no";;;;added for 2.0
+            _LIT( KNo, "no" );
+            RBuf tempMusicStoreEnabled;
+            CleanupClosePushL(tempMusicStoreEnabled);
+            tempMusicStoreEnabled.CreateL( KNo );
+            preset->SetMusicStoreStatusL( tempMusicStoreEnabled );
+            CleanupStack::PopAndDestroy(3);
+            
+            transaction->CommitL();
+            CleanupStack::PopAndDestroy( transaction );
+            }
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// const RVRPresetArray& CVRPresetHandler::Presets() const
+// RIRPresetArray& an array containing all Internet Radio presets.
+//---------------------------------------------------------------------------
+//
+EXPORT_C const RIRPresetArray& CIRFavoritesDb::Presets() const
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::Presets" );
+    //sort by 
+    return iFavPresetList;
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::IncreasePlayedTimesL()
+// Increase the played times of a channel if it has been in the favorites.
+// return : KErrNone if success
+//          KErrNotFound if the preset is not in the favorites
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::IncreasePlayedTimesL(
+                           const CIRIsdsPreset &aIsdsPreset )
+    {
+    //step 1 : search the preset in favorites
+    SortByIndex();
+    TInt index = 0;
+    if ( aIsdsPreset.GetChannelType() == 0 )
+        {
+        index = SearchUserDefinedPreset( aIsdsPreset.GetName(), 
+                    aIsdsPreset.GetChannelUrlAtL(0) );
+        }
+    else
+        {
+        index = SearchPreset( aIsdsPreset.GetId(), KNullId );
+        }
+    
+    if ( KErrNotFound == index )
+        {
+        return KErrNotFound;
+        }
+    
+    //step 2 : update the played times of the preset
+    CIRPreset *irPreset = iFavPresetList[index];
+    //open a transaction with the preset server
+    CPSTransaction* transaction = irPreset->CreateTransactionLC();
+    irPreset->SetPlayedTimes( irPreset->GetPlayedTimes() + 1 );
+    transaction->CommitL();
+    CleanupStack::PopAndDestroy( transaction );
+    return KErrNone;
+    }
+    
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::RenamePresetL()
+// renames a preset with a new name
+//---------------------------------------------------------------------------
+//
+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
+//---------------------------------------------------------------------------
+//
+void CIRFavoritesDb::ConstructL()
+	{
+	IRLOG_DEBUG( "CIRFavoritesDb::ConstructL" );
+	//cenrep handle
+    CIRSettings *settings = CIRSettings::OpenL();
+    iMaxPresetCount=settings->MaxPresetCount();
+    settings->Close();
+    
+	User::LeaveIfError( iServ.Connect() );
+	//a session to the client of the preset server
+    iServ.GetPresetsL( iFavPresetList, KIRPreset );
+    //notifier
+    iNotifier = CPSPresetNotifier::NewL( iServ, *this );
+    
+    //initialization of the list for UI use
+    //iFavPresetList=new(ELeave)CArrayPtrFlat<CIRPreset>(KGranularity)
+    iMoveStatus = EFalse;
+    IRLOG_DEBUG( "CIRFavoritesDb::ConstructL - Exiting." );
+    }
+
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::SortByIndex()
+// sorts the preset list by index
+//---------------------------------------------------------------------------
+//
+void CIRFavoritesDb::SortByIndex()
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex" );
+    //The sort order is determined by an algorithm supplied by the caller
+    //and packaged as a TLinerOrder<T>
+    iFavPresetList.Sort( TLinearOrder<CIRPreset>( PresetHandler::OrderByIndex ) );
+    IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+// EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
+// returns the maximum number of presets that can be stored in the favorites list
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::MaxPresetCount" );
+    return iMaxPresetCount;
+    }
+
+//---------------------------------------------------------------------------
+// TInt CIRFavoritesDb::EmptyPresetCount() const
+// Returns the number of empty presets
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::EmptyPresetCount() const
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::EmptyPresetCount" );
+    return iMaxPresetCount - iFavPresetList.Count();
+    }
+
+//---------------------------------------------------------------------------
+// TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
+// Adds an observer that is notified upon changes in presets.
+//---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRFavoritesDb::AddObserver( 
+                                const MPSPresetObserver& aObserver )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::AddObserver" );
+    return iObservers.InsertInAddressOrder( &aObserver );
+    }
+
+
+//---------------------------------------------------------------------------
+// TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
+// Removes an observer for a preset.
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::RemoveObserver(
+                    const MPSPresetObserver& aObserver )
+    {
+    TInt idx = iObservers.FindInAddressOrder( &aObserver );
+    if ( idx >= 0 )
+        {
+        iObservers.Remove( idx );
+        iObservers.Compress();
+        }
+    }
+
+//---------------------------------------------------------------------------
+//TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
+//---------------------------------------------------------------------------
+//
+TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
+    {
+    TInt indx = KErrNotFound;
+    SortByIndex() ;
+    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
+        {
+          if ( iFavPresetList[i]->Id() == aId )
+            {
+            indx = iFavPresetList[i]->Index();
+          /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
+          non-switch break used*/
+            break;
+          /*lint -restore */
+            }
+        }
+    return indx;
+    }
+
+//---------------------------------------------------------------------------
+// TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
+// creates a preset by the index aIndex
+//---------------------------------------------------------------------------
+//
+CIRPreset* CIRFavoritesDb::CreatePresetL( TInt aIndex )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL" );
+    CIRPreset* preset = static_cast<CIRPreset*>( iServ.CreatePresetL(
+                            aIndex, KIRPreset) );
+    CleanupStack::PushL( preset );
+    iFavPresetList.AppendL( preset );
+    CleanupStack::Pop( preset );
+    IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL - Exiting." );
+    return preset;
+    }
+
+//---------------------------------------------------------------------------
+// TInt CIRFavoritesDb::SearchUserDefinedPreset
+// Search a user defined preset by name and url
+//---------------------------------------------------------------------------
+//
+TInt CIRFavoritesDb::SearchUserDefinedPreset( const TDesC &aName, 
+                                              const TDesC &aUrl )
+    {
+    TInt count = iFavPresetList.Count();
+    for ( TInt index = 0; index < count; ++index )
+        {
+        CIRPreset *preset = iFavPresetList[index];
+        const TDesC &name = preset->Name();
+        TInt urlCount = preset->GetUrlCount();
+        if( preset->GetUrlCount()>0 )
+            {
+            const TDesC &url = preset->GetChannelUrlAt( 0 );
+            if ( preset->GetChannelType() == 0 &&
+                 name == aName &&
+                 url  == aUrl )
+                {
+                return index;
+                }
+            }
+        else
+            {
+            if ( preset->GetChannelType() == 0 &&
+                 name == aName &&
+                 aUrl == KNullDesC )
+                {
+                return index;
+                }                
+            }
+        }
+    return KErrNotFound;
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::PresetByIndex(TInt aIndex)
+// Returns a preset by its id.
+//---------------------------------------------------------------------------
+//
+EXPORT_C CIRPreset* CIRFavoritesDb::PresetByIndex( TInt aIndex )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex" );
+
+    CIRPreset* preset = NULL;
+
+    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
+        {
+        if ( iFavPresetList[i]->Index() == aIndex )
+            {
+            preset = iFavPresetList[i];
+            /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
+            break;
+            /*lint -restore*/
+            }
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex - Exiting." );
+    return preset;
+    }
+
+//---------------------------------------------------------------------------
+// CIRFavoritesDb::PresetById(TInt aIndex)
+// Returns a preset by its id.
+//---------------------------------------------------------------------------
+//
+EXPORT_C CIRPreset* CIRFavoritesDb::PresetById( TInt aId )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::PresetById" );
+
+    CIRPreset* preset = NULL;
+
+    for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
+        {
+        if ( iFavPresetList[i]->Id() == aId )
+            {
+            preset = iFavPresetList[i];
+            /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
+            non-switch break used*/
+            break;
+            /*lint -restore */
+            }
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::PresetById - Exiting." );
+
+    return preset;
+    }
+
+
+//---------------------------------------------------------------------------
+//CIRFavoritesDb::HandlePresetChangedL()
+//function to notify a change in saved presets
+//preset handler i.e CIRPreset,the reason of change.
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRFavoritesDb::HandlePresetChangedL( TInt aId,
+    TUid aDataHandler, MPSPresetObserver::TPSReason aReason )
+    {
+    IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL" );
+    if ( aDataHandler == KIRPreset )
+        {
+        switch ( aReason )
+            {
+            case MPSPresetObserver::EPSCreated:
+                {
+                //call back from the preset client
+                //to append a preset when the preset is added
+                CPSPresetInterface* preset = NULL;
+                preset = PresetById( aId );
+                if ( !preset )
+                    {
+                    preset = iServ.OpenPresetL( aId );
+                    CleanupStack::PushL( preset );
+                    iFavPresetList.AppendL( 
+                            static_cast<CIRPreset*>( preset ) );
+                    CleanupStack::Pop( preset );
+                    }
+
+                break;
+                }
+            case MPSPresetObserver::EPSDeleted:
+                {
+                //call back from the preset client
+                //to remove a preset when the preset is deleted
+                for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
+                    {
+                    if ( iFavPresetList[i]->Id() == aId )
+                        {
+                        delete iFavPresetList[i];
+                        iFavPresetList.Remove( i );
+                        /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
+                        break;
+                        /*lint -restore*/
+                        }
+                    }
+                break;
+                }
+            case MPSPresetObserver::EPSModified:
+                break;
+            default:
+                break;
+            }
+
+        for ( TInt i = 0; i < iObservers.Count(); i++ )
+            {
+            iObservers[i]->HandlePresetChangedL( aId, aDataHandler, aReason );
+            }
+            
+        }
+    IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL - Exiting." );
+    }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfilerecognizer/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 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:  Build information file for project InternetRadio
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+irrecognizer.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfilerecognizer/group/irrecognizer.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2005 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: 
+*     This is the project specification file for RecognizerEx.
+*
+*/
+
+#include 		<platform_paths.hrh>
+
+TARGET          irfilerecognizer.dll
+TARGETTYPE      PLUGIN
+UID             0x10009D8D 0x2000B4A9
+
+PAGED
+
+SOURCEPATH      ../src
+
+SOURCE          irrecognizer.cpp
+
+SOURCEPATH	../resources
+
+START RESOURCE  2000b4a9.rss
+TARGET          irfilerecognizer.rsc
+END
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData
+CAPABILITY              CAP_ECOM_PLUGIN
+VENDORID        0
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../resources
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+
+SMPSAFE
+
+LIBRARY             euser.lib
+LIBRARY             apmime.lib
+LIBRARY             efsrv.lib 
+LIBRARY             flogger.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfilerecognizer/inc/irrecognizer.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* 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 IRRECOGNIZER_H
+#define IRRECOGNIZER_H
+
+#include <apmrec.h>
+
+const TInt KIRRecognizerImplementationUid = 0x2000B4DE;
+const TUid KIRRecognizerDllUid = {0x2000B4A9};
+/**
+ * Recognizer plug-in for .Pls files.
+ * 
+ * @code
+ * Uses Methods from the base class CApaDataRecognizerType
+ * to recognise the .pls files  
+ * @endcode
+ *
+*/
+class CApaRecognizerEx: public CApaDataRecognizerType
+    {
+public:
+    /**
+    * Default constructor
+    */
+    CApaRecognizerEx();
+
+    /**
+    * Destructor.
+    */
+    virtual ~CApaRecognizerEx();
+
+    /**
+    * CreateRecognizerL()
+    * From CApaDataRecognizerType CreateRecognizerL.
+    * creates and returns recognizer
+    */
+	static CApaDataRecognizerType* CreateRecognizerL();
+
+    /**
+    * PreferredBufSize()
+    * From CApaDataRecognizerType PreferredBufSize.
+    * returns preferred buffer size
+    */
+	TUint PreferredBufSize();
+
+    /**
+    * SupportedDataTypeL(SupportedDataTypeL)
+    * From CApaDataRecognizerType SupportedDataTypeL.
+    * @param aIndex is index that identifies the data type
+    * returns supported mime type
+    */
+	TDataType SupportedDataTypeL(TInt aIndex) const;
+
+private:
+        /**
+	 * DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer)
+	 * From CApaDataRecognizerType DoRecognizeL.
+	 * recognises the file by name and/or buffer
+	 * @param aName is file name containing the data to be recognized
+	 * @param aBuffer is buffer containing data to be recognized
+	 */
+	void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer);
+	
+	/*
+	 * try to recognize a m3u file and decide whether it should be launched by InternetRadio application
+	 */
+	void RecognizeM3uFileL(const TDesC& aFileName);
+	
+	/*
+	 * check if specified protocol streaming links are in aBuffer
+	 */
+	TBool CheckStreamingLinksL(TDes8& aBuffer, const TDesC8& aProtocol);
+    };
+
+#endif //IRRECOGNIZER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfilerecognizer/resources/2000b4a9.rss	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2000 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 <registryinfo.rh>
+
+RESOURCE REGISTRY_INFO r_registry
+{
+    dll_uid = 0x2000B4A9; // should match name of this file
+    interfaces =
+    {
+        INTERFACE_INFO
+        {
+            interface_uid = 0x101F7D87;  // const for all Data Recognizers
+            implementations =
+            {
+                IMPLEMENTATION_INFO
+                {
+                    implementation_uid = 0x2000B4DE; // unique implementation uid
+                    version_no = 1;
+                    display_name = "IRFileRecognizer";
+                    default_data = "";
+                    opaque_data = "";
+                }
+            };
+        }
+    };
+}
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irfilerecognizer/src/irrecognizer.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,266 @@
+/*
+* 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 <implementationproxy.h>
+#include <f32file.h>
+
+#include "irdebug.h"
+#include "irrecognizer.h"
+
+// CONSTANTS
+//voilate PC Lint Warning 569: Loss of information (initialization) 
+//(32 bits to 31 bits)
+// Uid of the recogniser
+//const TUid KUidIRRecognizer={0x2000B499}
+
+// If the file name length > 4, the file extension might be valid                  
+const TInt KPlsFileExtensionsMightBeValid = 4;  
+const TInt KM3uFileExtensionsMightBeValid = 4;
+
+//extension of File to be recognised.
+_LIT(KPlsExtension, ".pls");
+//Mime type of the .pls file
+_LIT8(KPlsMimeType,"audio/x-scpls");
+
+_LIT(KM3uExtension, ".m3u");
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::RecognizerEx()
+// constructs the object
+// ---------------------------------------------------------------------------
+//
+CApaRecognizerEx::CApaRecognizerEx():CApaDataRecognizerType(KIRRecognizerDllUid, 
+	CApaDataRecognizerType::EHigh)
+    {
+    IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx()" );
+    // It only supports 1 mime type
+    iCountDataTypes = 1;
+    IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx() - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::~RecognizerEx()
+// Destroys the object
+// ---------------------------------------------------------------------------
+//
+CApaRecognizerEx::~CApaRecognizerEx()
+    {
+    IRLOG_DEBUG( "CApaRecognizerEx::~CApaRecognizerEx" );
+    // no implementation
+    }
+
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::CreateRecognizerL()
+// Returns pointer to the new object
+// ---------------------------------------------------------------------------
+//
+CApaDataRecognizerType* CApaRecognizerEx::CreateRecognizerL()
+    {
+    IRLOG_DEBUG( "CApaRecognizerEx::CreateRecognizerL" );
+    return new (ELeave) CApaRecognizerEx();
+    }
+
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::PreferredBufSize()
+// Returns preferred buffer size
+// ---------------------------------------------------------------------------
+//
+TUint CApaRecognizerEx::PreferredBufSize()
+    {
+    IRLOG_DEBUG( "CApaRecognizerEx::PreferredBufSize" );
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::SupportedDataTypeL()
+// Returns supported mime type
+// ---------------------------------------------------------------------------
+//
+TDataType CApaRecognizerEx::SupportedDataTypeL(TInt aIndex) const
+    {
+    IRLOG_DEBUG( "CApaRecognizerEx::SupportedDataTypeL" );
+    if (0 == aIndex)
+	{
+        return TDataType(KPlsMimeType);
+	}
+	else
+    {
+        ASSERT(0);
+        return TDataType(KNullDesC8);
+    }
+    }
+
+// ---------------------------------------------------------------------------
+// RecognizerEx::DoRecognizeL()
+// Recognizes the file by name and/or head buffer
+// ---------------------------------------------------------------------------
+//
+void CApaRecognizerEx::DoRecognizeL(const TDesC& aName, 
+	const TDesC8& aBuffer)
+    {
+	IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL" );    
+    // To keep code simple, we only check file name extension
+    TInt len = aBuffer.Length();
+    if (aName.Length()>KPlsFileExtensionsMightBeValid)
+		{
+		//Compare the extension of the file to be recognised with .pls
+		if (aName.Right(KPlsFileExtensionsMightBeValid).CompareF(
+			KPlsExtension)==0)
+	    {
+			iConfidence=ECertain;   // is certainly something totally new
+			iDataType=TDataType(KPlsMimeType);
+			IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (1)." );
+			return;
+		}
+		else if (aName.Right(KM3uFileExtensionsMightBeValid).CompareF(
+            KM3uExtension)==0)
+		{
+		    RecognizeM3uFileL(aName);
+		    IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (2)." );
+		    return;
+		}
+	    IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (3)." );					
+		}
+    }
+
+void CApaRecognizerEx::RecognizeM3uFileL(const TDesC& aFileName)
+{
+    _LIT8(KHttpProtocol, "http");
+    _LIT8(KMmsProtocol, "mms");
+    _LIT8(KRtspProtocol, "rtsp");
+
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    RFile file;
+    TInt ret = file.Open(fs, aFileName, EFileRead);
+    if (KErrNone != ret)
+    {
+        fs.Close();
+        return;
+    }
+    
+    RBuf8 content;
+    CleanupClosePushL(content);
+    TInt maxLen = 0;
+    file.Size(maxLen);
+    content.CreateL(maxLen);
+    file.Read(content);
+    
+    //try to use descriptor method to parse the buffer
+    if (CheckStreamingLinksL(content, KHttpProtocol) ||
+        CheckStreamingLinksL(content, KMmsProtocol) ||
+        CheckStreamingLinksL(content, KRtspProtocol))
+    {
+        iConfidence = ECertain;
+        iDataType = TDataType(KPlsMimeType);
+    }
+    
+    CleanupStack::PopAndDestroy();
+    file.Close();
+    fs.Close();
+}
+
+TBool CApaRecognizerEx::CheckStreamingLinksL(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;
+        CleanupClosePushL(left);
+        left.CreateL(remain.Left(newLinePos));
+        left.TrimLeft();
+        left.LowerCase();
+        
+        //after trim left, does this line start with aProtocol?
+        if (left.Left(aProtocol.Length()) == aProtocol)
+        {
+            ret = ETrue;
+        }
+        CleanupStack::PopAndDestroy();
+        
+        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;
+        CleanupClosePushL(last);
+        last.CreateL(remain);
+        last.TrimLeft();
+        last.LowerCase();
+        if (last.Left(aProtocol.Length()) == aProtocol)
+        {
+            ret = ETrue;
+        }
+        CleanupStack::PopAndDestroy();
+    }
+    
+    return ret;
+}
+
+// -----------------------------------------------------------------------------
+// ImplementationTable
+// violates PC lint error :: Warning 611: Suspicious cast
+// required by the ECOM framework to correctly identify the instantiation 
+// method pointer to provide to a client's resolution request.
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KIRRecognizerImplementationUid, 
+    	CApaRecognizerEx::CreateRecognizerL)
+    };
+    
+// ---------------------------------------------------------------------------
+// ImplementationGroupProxy
+// Provides access to the implementationtable
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+	TInt& aTableCount)
+    {
+    IRLOG_DEBUG( "ImplementationGroupProxy" );
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    IRLOG_DEBUG( "ImplementationGroupProxy - Exiting." );
+    return ImplementationTable;
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/bmarm/isdsclientinterfaceu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,18 @@
+EXPORTS
+	_ZN13CIRIsdsClient10IRGetIRIDLEv @ 1 NONAME
+	_ZN13CIRIsdsClient11IRISDSPostLER4TBufILi256EE @ 2 NONAME
+	_ZN13CIRIsdsClient11SyncPresetLEiRK7TDesC16 @ 3 NONAME
+	_ZN13CIRIsdsClient13GetOtaStatusLERi @ 4 NONAME
+	_ZN13CIRIsdsClient13IRISDSSearchLERK7TDesC16 @ 5 NONAME
+	_ZN13CIRIsdsClient13PurgeOtaInfoLEv @ 6 NONAME
+	_ZN13CIRIsdsClient15GetDataProviderEv @ 7 NONAME
+	_ZN13CIRIsdsClient16ReleaseResourcesEv @ 8 NONAME
+	_ZN13CIRIsdsClient18IRISDSMultiSearchLERK7TDesC16S2_S2_S2_ @ 9 NONAME
+	_ZN13CIRIsdsClient19GetMultiplePresetsLERK6RArrayIiERi @ 10 NONAME
+	_ZN13CIRIsdsClient19IRISDSCancelRequestEv @ 11 NONAME
+	_ZN13CIRIsdsClient21IRIsdsClientIntefaceLENS_25TIRIsdsclientInterfaceIDsE @ 12 NONAME
+	_ZN13CIRIsdsClient21IRIsdsClientIntefaceLEjNS_23TIRIsdsClientInterfacesEi @ 13 NONAME
+	_ZN13CIRIsdsClient22IRIsdsIsChannelCachedLEj @ 14 NONAME
+	_ZN13CIRIsdsClient23IRIsdsIsCategoryCachedLENS_25TIRIsdsclientInterfaceIDsE @ 15 NONAME
+	_ZN13CIRIsdsClient4NewLER21MIsdsResponseObserverRK7TDesC16 @ 16 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/bwinscw/isdsclientinterfaceu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,18 @@
+EXPORTS
+	?GetDataProvider@CIRIsdsClient@@QAEPAVCIRDataProvider@@XZ @ 1 NONAME ; class CIRDataProvider * CIRIsdsClient::GetDataProvider(void)
+	?GetMultiplePresetsL@CIRIsdsClient@@QAEXABV?$RArray@H@@AAH@Z @ 2 NONAME ; void CIRIsdsClient::GetMultiplePresetsL(class RArray<int> const &, int &)
+	?GetOtaStatusL@CIRIsdsClient@@QAEXAAH@Z @ 3 NONAME ; void CIRIsdsClient::GetOtaStatusL(int &)
+	?IRGetIRIDL@CIRIsdsClient@@QAEXXZ @ 4 NONAME ; void CIRIsdsClient::IRGetIRIDL(void)
+	?IRISDSCancelRequest@CIRIsdsClient@@QAEXXZ @ 5 NONAME ; void CIRIsdsClient::IRISDSCancelRequest(void)
+	?IRISDSMultiSearchL@CIRIsdsClient@@QAEXABVTDesC16@@000@Z @ 6 NONAME ; void CIRIsdsClient::IRISDSMultiSearchL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?IRISDSPostL@CIRIsdsClient@@QAEXAAV?$TBuf@$0BAA@@@@Z @ 7 NONAME ; void CIRIsdsClient::IRISDSPostL(class TBuf<256> &)
+	?IRISDSSearchL@CIRIsdsClient@@QAEXABVTDesC16@@@Z @ 8 NONAME ; void CIRIsdsClient::IRISDSSearchL(class TDesC16 const &)
+	?IRIsdsClientIntefaceL@CIRIsdsClient@@QAEHIW4TIRIsdsClientInterfaces@1@H@Z @ 9 NONAME ; int CIRIsdsClient::IRIsdsClientIntefaceL(unsigned int, enum CIRIsdsClient::TIRIsdsClientInterfaces, int)
+	?IRIsdsClientIntefaceL@CIRIsdsClient@@QAEHW4TIRIsdsclientInterfaceIDs@1@@Z @ 10 NONAME ; int CIRIsdsClient::IRIsdsClientIntefaceL(enum CIRIsdsClient::TIRIsdsclientInterfaceIDs)
+	?IRIsdsIsCategoryCachedL@CIRIsdsClient@@QAEHW4TIRIsdsclientInterfaceIDs@1@@Z @ 11 NONAME ; int CIRIsdsClient::IRIsdsIsCategoryCachedL(enum CIRIsdsClient::TIRIsdsclientInterfaceIDs)
+	?IRIsdsIsChannelCachedL@CIRIsdsClient@@QAEHI@Z @ 12 NONAME ; int CIRIsdsClient::IRIsdsIsChannelCachedL(unsigned int)
+	?NewL@CIRIsdsClient@@SAPAV1@AAVMIsdsResponseObserver@@ABVTDesC16@@@Z @ 13 NONAME ; class CIRIsdsClient * CIRIsdsClient::NewL(class MIsdsResponseObserver &, class TDesC16 const &)
+	?PurgeOtaInfoL@CIRIsdsClient@@QAEXXZ @ 14 NONAME ; void CIRIsdsClient::PurgeOtaInfoL(void)
+	?ReleaseResources@CIRIsdsClient@@QAEXXZ @ 15 NONAME ; void CIRIsdsClient::ReleaseResources(void)
+	?SyncPresetL@CIRIsdsClient@@QAEHHABVTDesC16@@@Z @ 16 NONAME ; int CIRIsdsClient::SyncPresetL(int, class TDesC16 const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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:
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+isdsclient.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/group/isdsclient.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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 		<platform_paths.hrh>
+
+TARGET        isdsclientinterface.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x2000B49E
+
+PAGED
+
+SOURCEPATH        ../src
+SOURCE            irisdsclient.cpp
+SOURCE		        irlanguagemapper.cpp
+
+USERINCLUDE       ../inc
+USERINCLUDE       ../../inc
+USERINCLUDE       ../../ircommon/inc
+USERINCLUDE       ../../irdataprovider/inc
+USERINCLUDE       ../../irnetworkcontroller/inc
+USERINCLUDE       ../../ircachemgmt/inc
+USERINCLUDE       ../../irxmlparser/inc
+USERINCLUDE       ../../irsessionlog/inc
+USERINCLUDE       ../../irsettings/inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
+
+SMPSAFE
+
+LIBRARY             charconv.lib
+LIBRARY             euser.lib
+LIBRARY             inetprotutil.lib
+LIBRARY             ircachemgmt.lib
+LIBRARY             irdataprovider.lib
+LIBRARY             irsessionlog.lib
+LIBRARY             irsettings.lib
+LIBRARY             irxmlparser.lib
+
+LIBRARY        flogger.lib
+
+#if defined(WINSCW)
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY		CAP_GENERAL_DLL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/inc/irlanguagemapper.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRLANGUAGEMAPPER_H
+#define IRLANGUAGEMAPPER_H
+
+#include <e32cmn.h>
+
+const TInt KIRLanguageCodeLength = 2;
+
+/**
+ * A utility class to translate TLanguage into a country code http headers 
+ * know something about
+ *
+ * @ingroup Utils
+ */
+NONSHARABLE_CLASS(IRLanguageMapper)
+    {
+public:
+    /**
+     * Translate TLanguage into language code representation 
+     * (such as "en", "fi" etc).
+     * @param aLanguage the language to be translated
+     * @return Language code representation of the given input.
+     */
+    static TBufC8<KIRLanguageCodeLength> MapLanguage(TLanguage aLanguage);
+    };
+
+#endif // IRLANGUAGEMAPPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/inc/isdsclientdll.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,401 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef ISDSCLIENTDLL_H
+#define ISDSCLIENTDLL_H
+
+#include <e32base.h>
+
+#include "ircacheobserver.h"
+#include "irdataproviderobserver.h"
+#include "irlanguagemapper.h"
+#include "irparserobserver.h"
+
+class CIRCacheMgmt;
+class CIRDataProvider;
+class CIRHttpRequestData;
+class CIRIsdsPreset;
+class CIRReportGenerator;
+class CIRSettings;
+class CIRXMLContentHandler;
+class MIsdsResponseObserver;
+
+/** 
+ * This class is the one which acts as a interface between UI and network
+ * component which interacts with the isds server.It provides the data to 
+ * be diplayed to the UI either from cache or fetches it from the ISDS 
+ * server.
+ * 
+ *
+ * @code
+ * creates the instance of isdsclient 
+ * iISDSClient = CIRIsdsClient::NewL(*this , iIRSettings->GetISDSBaseUrlL());
+ * iISDSClient->IRIsdsClientIntefaceL(EGenre); //requests for genre data
+ * //requests for selected channel
+ * iISDSClient->IRIsdsClientIntefaceL(iIndex, CIRIsdsClient::EChannels);
+ * //cancels any previous requests
+ * iISDSClient->IRISDSCancelRequest();
+ * //gets irid
+ * iISDSClient->IRGetIRIDL();
+ * iISDSClient->GetOtaStatusL(forceUpdate);//gets ota update status
+ * iISDSClient->IRISDSSearchL(aIsdsSearchString);
+ * iISDSClient->IRISDSPostL(pathtopost);
+ * SyncPresetL(iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetId(),
+ * iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetLastModifiedTime());
+ * iISDSClient->ReleaseResources();
+ * @endcode
+ *
+ */
+
+NONSHARABLE_CLASS( CIRIsdsClient ) : public CBase ,
+                                     public MIRDataProviderObserver,
+                                     public MIRParserObserver,
+                                     public MIRCacheObserver
+    {
+
+public: //public data
+
+    /**
+     * These Enums correspond to a particular UI event which 
+     * requires request to be made to isds.
+    */
+    enum TIRIsdsclientInterfaceIDs
+        {
+        EGenre,
+        ELanguages,
+        ECountries,
+        Ehotpicks
+        };
+    
+    enum TIRIsdsClientInterfaces
+        {
+        ECatagory,
+        EChannels,
+        EPresets,
+        EOtaInfo
+        }; 
+    
+    /**
+    *type of data recieved from ISDS   
+    */
+     enum TDataRecieved
+        {
+        ECategoryInfoRecieved,
+        EChannelListRecieved,
+        EPresetDataRecieved,
+        EOtaInfoRecieved,
+        EIridRecieved,
+        ESessionLogRecieved
+        };
+
+public:
+
+    /**
+     * CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver)
+     * Used by UI to create instance of CIRIsdsClient.
+     */
+    IMPORT_C static CIRIsdsClient* NewL(MIsdsResponseObserver& aobserver,
+            const TDesC& aISDSBaseUrl);
+
+    /**
+     * CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver)
+     * Creates instance of CIRIsdsClient.
+     */
+    
+    static CIRIsdsClient* NewLC(MIsdsResponseObserver& aobserver,
+            const TDesC& aISDSBaseUrl);
+
+    /**
+     * CIRIsdsClient::~CIRIsdsClient()
+     * Destructor
+     */
+    
+    ~CIRIsdsClient();
+
+    /**
+     * CIRIsdsClient::ConstructL()
+     * Symbian two phased constructor
+     */
+    void ConstructL(const TDesC& aISDSBaseUrl);
+
+    /**
+     * CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver)
+     * Default constructor
+     */
+    CIRIsdsClient(MIsdsResponseObserver& aobserver); 
+
+    /**
+     * void CIRIsdsClientInteface(TIRIsdsclientInterfaceIDs aISDSClientRequest)
+     * Called by UI to make request to ISDS for catogories
+     * @param :ENUM value depending on catogory which user wants to explore
+     */
+    IMPORT_C TBool IRIsdsClientIntefaceL(
+            TIRIsdsclientInterfaceIDs aISDSClientRequest);
+
+    /**
+     * TBool IRIsdsIsCategoryCachedL(
+     *       TIRIsdsclientInterfaceIDs aISDSClientRequest);
+     * 
+     */
+    IMPORT_C TBool IRIsdsIsCategoryCachedL(
+            TIRIsdsclientInterfaceIDs aISDSClientRequest);
+    
+    /**
+     * void CIRIsdsClientInteface(TUint aSelectedOption,TIRIsdsClientInterfaces aChoice)
+     * This API is used by the UI to make request for isds listed channels
+     * @param : aSelectedOption-returns the index of the option selected by the user
+     * @param : aChoice-ENUM value specifies what data is expected preset or channel data
+     */
+    IMPORT_C TBool IRIsdsClientIntefaceL(TUint aSelectedOption,
+            TIRIsdsClientInterfaces aChoice, TInt aHistoryBool = EFalse);
+    
+    /**
+     * TBool IRIsdsIsChannelCachedL(TUint aSelectedOption);
+     * 
+     */
+    IMPORT_C TBool IRIsdsIsChannelCachedL(TUint aSelectedOption);
+
+    /**
+     * void CIRISDSCancelRequest()
+     * This API is used by the UI to cancel a request made.
+     */
+    IMPORT_C void IRISDSCancelRequest();
+
+    /**
+     * void CIRGetIRID()
+     * This API is used to get IR ID from isds server 
+     * isds if it doesnt have one
+     */
+    IMPORT_C void IRGetIRIDL();
+
+    /**
+     * void GetOtaStatusL()
+     * This API is used to get the OTA status from the server
+     * @param TBool,if ETrue the call is from UI and a call back has to be made to ui
+     * TBool contains the source of update (cache/isds)upon return.Used by Ui to load the
+     * loading screen based on this value.
+     */
+    IMPORT_C void GetOtaStatusL(TBool& aDataFrom);
+
+    /**
+     * void CIRISDSSearch(TDesC& aSearchString)
+     * This API is used by the UI to search channels from isds
+     * @param : aSearchString-search string entered by user
+     */
+    IMPORT_C void IRISDSSearchL(const TDesC& aSearchString);
+
+    /**
+     * void IRISDSPostL(TFileName &aFileName)
+     *function used to post the sesson logs
+     *@param sesson log file name
+     */
+    IMPORT_C void IRISDSPostL(TFileName &aFileName);
+    
+    /**
+     * CIRDataProvider* GetDataProvider();
+     *function pointer to CIRDataProvider
+     *@param None
+     */
+    IMPORT_C CIRDataProvider* GetDataProvider();
+
+    /*
+     * void IRISDSMultiSearch()
+     * function used to search the stations by multi conditions
+     * @param 
+     */
+    IMPORT_C void IRISDSMultiSearchL(const TDesC& aGenreID,
+            const TDesC& aCountryID, const TDesC& aLanguageID,
+            const TDesC& aSearchText);
+
+    /**
+     * void RHttpGeneralError(TInt aErrorCode)
+     * It is a call back function called by the data provider 
+     * to return error code in case of some error.
+     *@param error code
+     */
+    void IRHttpGeneralError(TInt aErrCode);
+
+    /**
+     * void IRHttpDataReceived(TDesC& aXmlPath)
+     * It is a call back function called by the data provider 
+     * once it recieves the XML data
+     */
+    void IRHttpDataReceived(const TDesC& aXmlPath,
+            const CIRHttpResponseData& aResponseHeaders);
+
+    /**
+     * void IRHttpContentNotChanged()
+     * this is call back funtion called by Dataprovider in case 
+     * HTTP content isnt changed by ISDS 
+     */
+    void IRHttpResponseCodeReceived(TInt aResponseCode,
+            CIRHttpResponseData& aResponseHeaders);
+
+    /**
+     * void ParseError()
+     * Call back funtion called by XML parser in case of parsing error
+     */
+    void ParseError(TInt aErrorCode);
+
+    /**
+     * void ParsedStructureL(TInt aChoice)
+     * Call back funtion called by XML parser after parsing is over
+     * @param : aChoice -specifies the type of data recieved from ISDS
+     */
+    void ParsedStructureL(TInt aChoice);
+
+    /**
+     * void CacheError()
+     * Called from cachemgmt in case of an error
+     */
+    void CacheError();
+
+    /**
+     * void CacheError()
+     * Called from cachemgmt in case of cache failure
+     */
+    void CacheFailed();
+
+    /**
+     * void CacheError()
+     * Called from cachemgmt in case cache is invalid
+     */
+    void CacheInvalid();
+    
+    /**
+     * void CacheError()
+     * Called from cachemgmt data retrival is successful
+     *@param aChoice,it gives the data type of the cache
+     */
+    void CachedStructureL(TInt aChoice);
+
+    /**
+     *void CIRIsdsClient::SyncPresetL()
+     *Used to syncronize presets
+     *@param TInt,TDesC, the preset id and the last modified tag for the preset          
+     */
+    IMPORT_C TInt SyncPresetL(TInt aPresetId, const TDesC&aIfModifiedSince);
+
+    /**
+     *void CIRIsdsClient::ConvertToTimeDate()
+     *Used to convert the date-time stamp to Symbian DateTime format
+     *@param TDesC&,TDateTime& the time stamp and the DateTime ref to 
+     *hold the new data
+     */
+    void ConvertToTimeDate(const TDesC& aTime, TDateTime& aDateTime) const;
+
+    /**
+     *ReleaseResources()
+     *relese the resources held by isds client
+     */
+    IMPORT_C void ReleaseResources();
+
+    /**
+     *CIRIsdsClient::GetMultiplePresetsL()
+     *for multiple selected presets to be saved 
+     *@param RArray&,TBool,the array of preset ids to be saved,return value
+     */
+    IMPORT_C void GetMultiplePresetsL(const RArray<TInt>& aIndexArray,
+            TBool& aDataFrom);
+
+    /**
+     *CIRIsdsClient::PurgeOtaInfoL
+     *delete all the data cached wrt OTA
+     *reset the flags
+     *function called when the ota info available earlier is no longer valid
+     */
+    IMPORT_C void PurgeOtaInfoL();
+
+private:
+    /**
+     *void IRHttpIssueRequestL(CIRHttpRequestData &);
+     *for making http request to Data Provider with Request object
+     *@param aRequestObject :The request object which has URL and other details
+     */
+    void IRHttpIssueRequestL(CIRHttpRequestData &aRequestObject);
+
+    /**
+     * void EncodeUrlL( TDes &aQuery )
+     * Encode the url using EEscapeUrlEncoded mode, This is used in session log
+     * @param url to be encoded
+     */
+    void EncodeUrlL(TDes& aQuery);
+
+private:
+    //Session log
+    TBuf<256> iBrowseUrl;
+    TInt iChannId;
+
+    //XML parser instance
+    CIRXMLContentHandler* iXmlReader;
+
+    //ISDS observer reference
+    MIsdsResponseObserver& iIsdsResponseObserver;
+
+    //DataProvider instance
+    CIRDataProvider *iDataProvider;
+
+    //cache mgmt
+    CIRCacheMgmt *iCache;
+    CIRSettings *iSettings;
+    CArrayPtrFlat<CIRIsdsPreset>* iSendPreset;
+    // used to store the isds base URL
+    HBufC* iISDSBaseUrl;
+    //contains catogory base URL
+    TBuf<256> iCatgoryURL;
+    //contains search base URL
+    TBuf<256> iSearchURL;
+    //contains irid base URL
+    TBuf<256> iGetIridUrl;
+    TBuf<128> iGetOtaStatus;
+    TBool iSyncRequest;//1 if the preset data request is a sync request,0 if general request
+    TInt iPresetToBeSynced;//keeps the presetid for which the sync request has been sent
+    TBool iDataFrom;//data from isds =1,isds =0
+    TBool iCatDataFrom;//0 if isds,1 for cache
+    TBool iChannelDataFrom;//0 if isds,1 for cache
+    TBuf<256> iCachePath;
+    TBool iOtaReqFrom;//0 internal 1from UI
+    //session log
+    CIRReportGenerator* iBrowseReport;
+    //conditionalGet
+    TBool iConditonalGet;
+    TTime iLastModifiedTime;
+    TInt iRequestType;
+    TBool iForceGet;
+    TBool iOnceForTheUsageSession;
+    TBool iPostResponsePending;
+    TBufC8<KIRLanguageCodeLength> iShortLanguageCode;
+
+    /**
+     * boolean for to track whether the cache request has made or not
+     */
+    TBool iCacheReqMade;
+    TBool iIRIDPending;
+    TBool iReqPending;
+    TBool iReqFromGetIRIDFunc;
+    TBool iReqFromSync;
+
+    /**
+     * to store further pending request objects 
+     */
+    CIRHttpRequestData* iTempRequestObject;
+    };
+
+#endif //ISDSCLIENTDLL_H
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/inc/misdsresponseobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef MISDSRESPONSEOBSERVER
+#define MISDSRESPONSEOBSERVER
+
+#include <e32def.h>
+
+class CIRBrowseCatagoryItems;
+class CIRBrowseChannelItems;
+class CIRIsdsPreset;
+class CIROTAUpdate;
+
+/**
+ * MIsdsResponseObserver
+ * passes events and responses body data recived from isds server with this interface.
+ * An instance of this class must be provided for construction of 
+ * CIRIsdsClient.
+ */
+class MIsdsResponseObserver
+    {
+public:
+    /**
+     * MIsdsResponseObserver::IsdsErrorL()
+     * Used to Indiacte error in retrieving data from Isds
+     * @param aErrCode- contains error code
+     */
+    virtual void IsdsErrorL(TInt aErrCode) = 0;
+
+    /**
+     * MIsdsResponseObserver::IsdsCatogoryDataReceivedL()
+     * Called when catogory information is recieved from ISDS
+     * @param aParsedStructure - contains catogory info
+     */
+	virtual void IsdsCatogoryDataReceivedL(
+		CArrayPtrFlat<CIRBrowseCatagoryItems> & aParsedStructure) = 0;
+
+    /**
+     * MIsdsResponseObserver::IsdsChannelDataReceivedL()
+     * Called when channel information is recieved from ISDS
+     * @param aParsedStructure - contains Channel info
+     */
+    virtual void IsdsChannelDataReceivedL(
+            CArrayPtrFlat<CIRBrowseChannelItems> & aParsedStructure) = 0;
+
+    /**
+     * MIsdsResponseObserver::IsdsPresetDataReceivedL()
+     * Called when preset information is recieved from ISDS
+     * @param aParsedStructure - contains Preset info
+     */
+    virtual void IsdsPresetDataReceivedL(
+            CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure) = 0;
+
+    /**
+     * MIsdsResponseObserver::IsdsIRIDRecieved()
+     * Called to provide IRID
+     * @param aIRID  - contains IRID recived from Isds
+     */
+    virtual void IsdsIRIDRecieved(const TDesC& aIRID)=0;
+
+    /**
+     * MIsdsResponseObserver::IsdsOtaInfoRecieved()
+     * called back when OTA info is recieved and Ui needs to be intimated
+     * @param CIROTAUpdate&,the ota information 
+     */
+    virtual void IsdsOtaInfoRecieved(CIROTAUpdate &aOtaData)=0;
+
+    /**
+     * MIsdsResponseObserver::IsdsPresetRemovedL()
+     * called back when the preset that is synced was removed from isds
+     * @param TInt,the preset id
+     */
+    virtual void IsdsPresetRemovedL(TInt aId)=0;
+
+    /**
+     * MIsdsResponseObserver::IsdsPresetChangedL()
+     * called back when the preset that is synced has been changed in the isds
+     * @param CIRIsdsPreset&,the new preset data
+     */
+    virtual void IsdsPresetChangedL(CIRIsdsPreset& aPreset)=0;
+
+    /**
+     * MIsdsResponseObserver::IsdsPresetNoChangeL()
+     * called back when the preset that is synced has not been changed
+     */
+    virtual void IsdsPresetNoChangeL()=0;
+
+    };
+
+#endif // MISDSRESPONSEOBSERVER
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/src/irisdsclient.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1764 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <escapeutils.h>
+#include <tinternetdate.h>
+#include <utf.h>
+
+#include "irbrowsecatagoryitems.h"
+#include "irbrowsechannelitems.h"
+#include "ircachemgmt.h"
+#include "irdataprovider.h"
+#include "irdataproviderconstants.h"
+#include "irdebug.h"
+#include "irhttprequestdata.h"
+#include "irotaupdate.h"
+#include "irsessionlogger.h"
+#include "irsettings.h"
+#include "irxmlcontenthandler.h"
+#include "isdsclientdll.h"
+#include "misdsresponseobserver.h"
+#include "irisdspreset.h"
+
+const TInt KChannelidMaxLength = 25;
+const TInt KTwo = 2;
+/*const TInt KDays = 7;
+const TInt KHour = 24;
+const TInt KMinute = 60;
+const TInt KSecond = 60;*/
+const TInt KUrlPassMaxLength = 124;
+const TInt KChidMaxLength = 6;
+const TInt KCopyOfTimeMaxLength = 32;
+const TInt KMaxLength = 256;
+const TInt KFour = 4;
+
+_LIT(KBrowseUrl,"/do/directory/browse?type=");
+_LIT(KChannelnSearchUrl,"/do/directory/browse?type=channels&searchText=");
+_LIT(KGetIRIDUrl,"/do/service/getIrid");
+_LIT(KGenres,"genres");
+_LIT(KLanguages,"languages");
+_LIT(KCountries,"countries");
+_LIT(KHotpicks,"hotpicks");
+_LIT(KOtaUpdateUrl,"/do/service/otaUpdate?irid=");
+_LIT(KLogUsageUrl,"/do/service/logUsage");
+_LIT(KSearchUrl,"&start=1&size=50");
+_LIT(KMultiSearchUrl, "/do/directory/browse?type=channels&genreID=%S&countryID=%S&languageID=%S&searchText=");
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver)
+// Used by UI to create instance of CIRIsdsClient.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRIsdsClient* CIRIsdsClient::NewL( MIsdsResponseObserver& aobserver,
+    const TDesC& aISDSBaseUrl )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::NewL - Entering" );
+    CIRIsdsClient* self = CIRIsdsClient::NewLC( aobserver, aISDSBaseUrl );
+
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRIsdsClient::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver)
+// Creates instance of CIRIsdsClient.
+// ---------------------------------------------------------------------------
+//
+CIRIsdsClient* CIRIsdsClient::NewLC( MIsdsResponseObserver& aobserver,
+                                     const TDesC& aISDSBaseUrl )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::NewLC - Entering" );
+    CIRIsdsClient* self = new ( ELeave ) CIRIsdsClient( aobserver );
+    CleanupStack::PushL( self );
+    self->ConstructL( aISDSBaseUrl );
+    IRLOG_DEBUG( "CIRIsdsClient::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::ConstructL()
+// Symbian two phased constructor
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::ConstructL( const TDesC& aISDSBaseUrl )
+    {
+    //!Construsting the DataproviderDLL instance
+    IRLOG_DEBUG( "IRIsdsClient::ConstructL - Entering" );
+    iSettings = CIRSettings::OpenL();
+    iISDSBaseUrl = aISDSBaseUrl.AllocL();
+    //Base URL required to browse through the category
+    iCatgoryURL.Zero();
+    iCatgoryURL.Copy( *iISDSBaseUrl );
+    iCatgoryURL.Append( KBrowseUrl );
+    //Base URL required to search isds 
+    iSearchURL.Zero();
+    iSearchURL.Copy( *iISDSBaseUrl );
+    iSearchURL.Append( KChannelnSearchUrl );
+    //Base URL required to get IRID
+    iGetIridUrl.Zero();
+    iGetIridUrl.Copy( *iISDSBaseUrl );
+    iGetIridUrl.Append( KGetIRIDUrl );
+    //creates DataProvider
+    iDataProvider = CIRDataProvider::NewL( *this );
+    //creates XML Parser
+    iXmlReader = CIRXMLContentHandler::NewL( *this, *this );
+    //creates Cache manager
+    iCache = CIRCacheMgmt::OpenL( *this );
+    iCache->AddObserverL( this );
+    //Session Log
+    iBrowseReport = CIRReportGenerator::OpenL();
+    // Retrive the current language and set it as an Accept Language
+    TLanguage currentLanguage = User::Language();
+    iShortLanguageCode = IRLanguageMapper::MapLanguage( currentLanguage );
+
+    IRLOG_DEBUG( "IRIsdsClient::ConstructL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver)
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+CIRIsdsClient::CIRIsdsClient( MIsdsResponseObserver& aobserver )
+ : iIsdsResponseObserver( aobserver )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::CIRIsdsClient" );
+    //No implementation
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::~CIRIsdsClient()
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CIRIsdsClient::~CIRIsdsClient()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::~CIRIsdsClient - Entering" );
+    delete iDataProvider;
+    delete iXmlReader;
+    if ( iSendPreset )
+        {
+        iSendPreset->ResetAndDestroy();
+        }
+    delete iSendPreset;
+
+    if ( iCache )
+        {
+        iCache->RemoveObserver( this );
+        iCache->Close();
+        }
+
+    if ( iSettings )
+        {
+        iSettings->Close();
+        }
+    delete iISDSBaseUrl;
+    if ( iBrowseReport )
+        {
+        iBrowseReport->Close();
+        }
+    if ( iTempRequestObject )
+        {
+        delete iTempRequestObject;
+        iTempRequestObject = NULL;
+        }
+
+    IRLOG_DEBUG( "CIRIsdsClient::~CIRIsdsClient - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::IRIsdsIsCategoryCachedL
+// Destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRIsdsClient::IRIsdsIsCategoryCachedL(
+             TIRIsdsclientInterfaceIDs aISDSClientRequest)
+    { 
+    iForceGet=EFalse;  
+    TInt res = 0;
+    iCacheReqMade = EFalse;
+    switch( aISDSClientRequest )
+        {
+            //When genre data is requested by user
+        case EGenre:
+            {
+            //set the request type for subsiquent Use           
+             
+            iCachePath.Zero();
+            iCachePath.Copy( KGenres );            
+            iCache->CheckCacheL( 0, KGenres, iForceGet, res );       
+            }
+          
+        break;
+        //When Language data is requested by user                       
+        case ELanguages:
+            {
+            
+            iCachePath.Zero();
+            iCachePath.Copy( KLanguages );            
+            iCache->CheckCacheL( 0, KLanguages, iForceGet, res );          
+          
+            }
+        break;
+        //When Country data is requested by user                                                    
+        case  ECountries:
+            {
+         
+            iCachePath.Zero();
+            iCachePath.Copy( KCountries );          
+            iCache->CheckCacheL( 0, KCountries, iForceGet, res );          
+            }
+        break;
+                    
+            //When hotpics data is requested by user                                                        
+        case  Ehotpicks:
+            {
+            //set the request type for subsiquent Use            
+            iCachePath.Zero();
+            iCachePath.Copy( KHotpicks );
+            iCache->CheckCacheL( 1, KHotpicks, iForceGet, res );
+            
+            }
+            break;   
+        default:
+            break;    
+    }
+    
+    if ( res == CIRCacheMgmt::ECacheUseable )
+        {
+        return ETrue;
+        }
+    
+    return EFalse; 
+    }
+// ---------------------------------------------------------------------------
+// void CIRIsdsClientInteface(TIRIsdsclientInterfaceIDs aISDSClientRequest)
+// Called by UI to make request to ISDS for catogories
+// @param :ENUM value depending on catogory which user wants to explore
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C TBool CIRIsdsClient::IRIsdsClientIntefaceL(
+                                TIRIsdsclientInterfaceIDs aISDSClientRequest )
+    {
+    //cancels any pending request
+    IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Entering" );
+    CIRHttpRequestData * requestData = new ( ELeave ) CIRHttpRequestData;
+    CleanupStack::PushL( requestData );
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    //Sets the Htpp method to GET
+    requestData->iMethod = EIRHttpGET;
+    //check for valid cache
+    iForceGet = EFalse;
+
+    TInt res = 0;
+
+    switch ( aISDSClientRequest )
+        {
+        //When genre data is requested by user
+        case EGenre:
+            {
+            //set the request type for subsiquent Use
+            iRequestType = 0;
+            iDataFrom = EFalse;
+            iCachePath.Zero();
+            iCachePath.Copy( KGenres );
+            iCacheReqMade = ETrue;
+            iCache->CheckCacheL( 0, KGenres, iForceGet, res );
+            if ( res == 0 )//if cache is not available
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KGenres );
+                iConditonalGet = EFalse;
+                //issues request for Genre data
+                IRHttpIssueRequestL( *requestData );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == -1 )//i cache is stale
+                {
+                iConditonalGet = ETrue;
+                requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+                requestData->isIfModifiedSet = ETrue;
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KGenres );
+                IRHttpIssueRequestL( *requestData );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == 1 )
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KGenres );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                }
+            }
+            break;
+            //When Language data is requested by user
+        case ELanguages:
+            {
+            //set the request type for subsiquent Use
+            iRequestType = 0;
+            iDataFrom = EFalse;
+
+            iCachePath.Zero();
+            iCachePath.Copy( KLanguages );
+            iCacheReqMade = ETrue;
+            iCache->CheckCacheL( 0, KLanguages, iForceGet, res );
+
+            if ( res == 0 )//if cache is not available
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KLanguages );
+                //Isuues request for language data
+                IRHttpIssueRequestL( *requestData );
+                iConditonalGet = EFalse;
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == -1 )//i cache is stale
+                {
+                iConditonalGet = ETrue;
+                requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+                requestData->isIfModifiedSet = ETrue;
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KLanguages );
+                //Isuues request for language data if cache isnt valid
+                IRHttpIssueRequestL( *requestData );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == 1 )
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KLanguages );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                }
+            }
+            break;
+            //When Country data is requested by user
+        case ECountries:
+            {
+            //set the request type for subsiquent Use
+            iRequestType = 0;
+            iDataFrom = EFalse;
+
+            iCachePath.Zero();
+            iCachePath.Copy( KCountries );
+            iCacheReqMade = ETrue;
+            iCache->CheckCacheL( 0, KCountries, iForceGet, res );
+            if ( res == 0 )//if cache is not available
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KCountries );
+                //Isuues request for country data
+                IRHttpIssueRequestL( *requestData );
+                iConditonalGet = EFalse;
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == -1 )//i cache is stale
+                {
+                iConditonalGet = ETrue;
+                requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+                requestData->isIfModifiedSet = ETrue;
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KCountries );
+                //Isuues request for country data if cache isnt valid
+                IRHttpIssueRequestL( *requestData );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == 1 )
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KCountries );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                }
+
+            }
+            break;
+
+            //When hotpics data is requested by user
+        case Ehotpicks:
+            {
+            //set the request type for subsiquent Use
+            iRequestType = 1;
+            iCacheReqMade = ETrue;
+            iCache->CheckCacheL( 1, KHotpicks, iForceGet, res );
+            iCachePath.Zero();
+            iCachePath.Copy( KHotpicks );
+            iDataFrom = EFalse;
+
+            if ( res == 0 )//if cache is not available
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KHotpicks );
+                //Isuues request for hotpics data
+                IRHttpIssueRequestL( *requestData );
+                iConditonalGet = EFalse;
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == -1 )//i cache is stale
+                {
+                iConditonalGet = ETrue;
+                requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+                requestData->isIfModifiedSet = ETrue;
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KHotpicks );
+                //Isuues request for hotpics data if cache isnt valid
+                IRHttpIssueRequestL( *requestData );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                iDataFrom = ETrue;
+                }
+            if ( res == 1 )
+                {
+                requestData->iUri.Copy( iCatgoryURL );
+                requestData->iUri.Append( KHotpicks );
+                iBrowseUrl.Zero();
+                iBrowseUrl.Copy( requestData->iUri );
+                iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                }
+            }
+            break;
+
+        }
+    CleanupStack::PopAndDestroy( requestData );
+    IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Exiting." );
+    return iDataFrom;
+    }//end of function
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::GetDataProvider
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRDataProvider* CIRIsdsClient::GetDataProvider()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::GetDataProvider" );
+    return iDataProvider;
+    }
+
+// ---------------------------------------------------------------------------
+// void IRHttpContentNotChanged()
+// this is call back funtion called by Dataprovider in case 
+// HTTP content isnt changed by ISDS 
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::IRHttpResponseCodeReceived( TInt aResponseCode,
+                CIRHttpResponseData& aResponseHeaders )
+    {
+    IRLOG_INFO2( "CIRIsdsClient::IRHttpResponseCodeReceived (%d)", aResponseCode );
+    TInt res = KErrNotFound;
+    switch ( aResponseCode )
+        {
+        case KNotFound://404
+            {
+            //make channel user defined.
+            if ( iSyncRequest )
+                {
+                iSyncRequest = EFalse;
+                //make the preset user-defined
+                TRAP_IGNORE(iIsdsResponseObserver.IsdsPresetRemovedL(
+                                                    iPresetToBeSynced))
+            }
+
+            /*if(iOtaReqFrom)
+             {
+             TRAP_IGNORE(PurgeOtaInfoL())
+             }*/
+
+            }
+            break;
+        case KNotModified://304
+            {
+            if ( iConditonalGet )
+                {
+                //update the trust period 
+                //no problem if it leaves
+                TRAP_IGNORE( iCache->UpdateTrustPeriodL( iRequestType,iCachePath,
+                                                    aResponseHeaders ) )
+                //do a forced get because the data is notmodifed in isds and 
+                //trustable
+                iForceGet = ETrue;
+                iCacheReqMade = ETrue;
+                TRAP_IGNORE( iCache->CheckCacheL( iRequestType,iCachePath,
+                                                    iForceGet,res ) )
+                }
+            /*if(iOtaReqFrom)
+             {
+             TRAP_IGNORE(PurgeOtaInfoL())
+             }*/
+            }
+            break;
+        default:
+            {
+
+            }
+            break;
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpResponseCodeReceived - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// void RHttpGeneralError(TInt aErrorCode)
+// It is a call back function called by the data provider 
+// to return error code in case of some error.
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::IRHttpGeneralError( TInt aErrorCode )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Entering" );
+    IRLOG_ERROR2( "CIRIsdsClient::IRHttpGeneralError (%d)", aErrorCode );
+    if ( iSyncRequest )
+        {
+        IRLOG_DEBUG( "CIRISDSCLIENT::IRHTTPGENERALERROR--IF ISYNC" );
+        iSyncRequest = EFalse;
+        if ( aErrorCode == KNotModified || aErrorCode == KServiceUnavailable )
+            {
+            TRAP_IGNORE( iIsdsResponseObserver.IsdsPresetNoChangeL() )
+            return;
+            }
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (1)." );
+        }
+
+    /*if(iOtaReqFrom)
+     {
+     //if internal service request
+     //reset the flag
+     iOtaReqFrom = EFalse
+     IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (2)." )
+     return
+     }*/
+    if ( iConditonalGet )
+        {
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (3)." );
+        iConditonalGet = EFalse;
+        if ( aErrorCode == KNotModified )
+            {
+            return;
+            }
+        }
+    if ( iPostResponsePending )
+        {
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (4)." );
+        IRLOG_DEBUG( "CIRISDSCLIENT::ISDSGENERALERROR--POSTPENDING" );
+        iPostResponsePending = EFalse;
+        //no action required
+        //session log is backed up before sending;
+        return;
+        }
+    if ( iIRIDPending )
+        {
+        IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR--IF IRID",KNullDesC );
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (7)." );
+        iIRIDPending = EFalse;
+        //dTRAP_IGNORE( IRGetIRIDL() )
+        }
+    IRLOG_DEBUG("CIRISDSCLIENT::IRHTTPGENERALERROR--BEFORE TRAPD" );
+    TRAPD( errd, iIsdsResponseObserver.IsdsErrorL( aErrorCode ) );
+    if ( errd )
+        {
+        IRLOG_DEBUG("CIRISDSCLIENT::IRHTTPGENERALERROR--IF ERRD" );
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (5)." );
+        return;
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (6)." );
+    }
+
+// ---------------------------------------------------------------------------
+// void IRHttpDataReceived(TDesC& aXmlPath)
+// It is a call back function called by the data provider 
+// once it recieves the XML data
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::IRHttpDataReceived( const TDesC& aXmlPath,
+                const CIRHttpResponseData& aResponseHeaders )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Entering" );
+    TBuf<KMaxLength> xmlPath;
+    xmlPath.Copy( aXmlPath );
+    //!Calls XML parser with file path to XML file recieved
+    TRAPD( xmlErr,iXmlReader->ParseXmlL( xmlPath, iCachePath, aResponseHeaders ) )
+    if ( xmlErr != KErrNone )
+        {
+        IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Exiting (1)." );
+        return;
+        }
+
+    if ( iIRIDPending )
+        {
+        iIRIDPending = EFalse;
+        //if any request is pending by the time IRID response comes
+        if ( iReqPending )
+            {
+                //issue the pending request
+                TRAP_IGNORE( IRHttpIssueRequestL( *iTempRequestObject ) )
+            }
+        }
+
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Exiting (2)." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::IRIsdsIsChannelCachedL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRIsdsClient::IRIsdsIsChannelCachedL( TUint aSelectedOption )
+    {   
+    TInt res = 0;
+    iCacheReqMade = EFalse;
+    iForceGet=EFalse;
+     
+     //previous data from cache
+    if (iCatDataFrom)
+    {
+        if (aSelectedOption >= iCache->iPtrCategory->Count())
+        {
+            User::Leave(KErrArgument);
+        }
+
+        if (iCache->iPtrCategory->Count())
+        {
+            iCachePath.Zero();
+            iCachePath.Copy(
+                    (*(iCache->iPtrCategory))[aSelectedOption]->iCatId->Des());
+
+            iCache->CheckCacheL(1,
+                    iCachePath,
+                    iForceGet, res);
+        }
+    }
+    //previous data from xml
+    else
+    {
+        if (aSelectedOption >= iXmlReader->iPtrCategory->Count())
+        {
+            User::Leave( KErrArgument );
+        }
+
+        if (iXmlReader->iPtrCategory->Count())
+        {
+            iCachePath.Zero();
+            iCachePath.Copy(
+                    (*(iXmlReader-> iPtrCategory))[aSelectedOption]->iCatId->Des());
+            iCache->CheckCacheL(
+                    1,
+                    iCachePath,
+                    iForceGet, res );
+        }
+    }
+     
+    if( CIRCacheMgmt::ECacheUseable == res )
+        return ETrue;
+    
+    return EFalse;  
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRIsdsClientInteface(TUint aSelectedOption,TIRIsdsClientInterfaces aChoice)
+// This API is used by the UI to make request for isds listed channels
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRIsdsClient::IRIsdsClientIntefaceL( TUint aSelectedOption,
+                TIRIsdsClientInterfaces aChoice, TInt aHistoryBool )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Entering" );
+    iForceGet = EFalse;
+    CIRHttpRequestData * requestData = new ( ELeave ) CIRHttpRequestData;
+    CleanupStack::PushL( requestData );
+    requestData->iMethod = EIRHttpGET;
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    requestData->iUri.Copy( *iISDSBaseUrl );
+
+    TBool isAdvPresent = EFalse;
+
+    TInt res( 0 );
+    if ( aChoice == ECatagory )
+        {
+        //set the request type for subsiquent Use
+        iRequestType = 1;
+        //previous data from cache
+        if ( iCatDataFrom )
+            {
+            TInt categoryCacheIndex;
+
+            if ( ( *( iCache->iPtrCategory ) )[0]->iCatGetOperation )
+                {
+                isAdvPresent = EFalse;
+                }
+            else
+                {
+                isAdvPresent = ETrue;
+                }
+            if ( !isAdvPresent )
+                {
+                categoryCacheIndex = 0;
+                }
+            else
+                {
+                categoryCacheIndex = 1;
+                }
+
+            if ( aSelectedOption >= iCache->iPtrCategory->Count() )
+                {
+                User::Leave( KErrArgument );
+                }
+
+            if ( iCache->iPtrCategory->Count() )
+                {
+                iCachePath.Zero();
+                iCachePath.Copy(
+                                ( *( iCache->iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                iCacheReqMade = ETrue;
+                iCache->CheckCacheL(
+                                1,
+                                ( *( iCache->iPtrCategory ) )[aSelectedOption]-> iCatId->Des(),
+                                iForceGet, res );
+                iDataFrom = EFalse;
+                if ( res == 0 )
+                    {
+                    requestData->iUri.Append(
+                                    ( *( iCache-> iPtrCategory ) )[categoryCacheIndex]->iCatGetOperation->Des() );
+                    requestData->iUri.Append(
+                                    ( *( iCache-> iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                    IRHttpIssueRequestL( *requestData );
+                    iConditonalGet = EFalse;
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                    iDataFrom = ETrue;
+                    }
+                if ( res == -1 )
+                    {
+                    iConditonalGet = ETrue;
+                    requestData->iIfModifiedSince
+                                    = iLastModifiedTime.DateTime();
+                    requestData->isIfModifiedSet = ETrue;
+                    requestData->iUri.Append(
+                                    ( *( iCache-> iPtrCategory ) )[categoryCacheIndex]->iCatGetOperation->Des() ); //0
+                    requestData->iUri.Append(
+                                    ( *( iCache-> iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                    IRHttpIssueRequestL( *requestData );
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                    iDataFrom = ETrue;
+                    }
+                }
+            }
+        //previous data from xml
+        else
+            {
+            TInt categoryXmlIndex;
+            if ( ( *( iXmlReader->iPtrCategory ) )[0]->iCatGetOperation )
+                {
+                isAdvPresent = EFalse;
+                }
+            else
+                {
+                isAdvPresent = ETrue;
+                }
+            if ( !isAdvPresent )
+                {
+                categoryXmlIndex = 0;
+                }
+            else
+                {
+                categoryXmlIndex = 1;
+                }
+
+            if ( aSelectedOption >= iXmlReader->iPtrCategory->Count() )
+                {
+                User::Leave( KErrArgument );
+                }
+
+            if ( iXmlReader->iPtrCategory->Count() )
+                {
+                iCachePath.Zero();
+                iCachePath.Copy(
+                                ( *( iXmlReader-> iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                iCacheReqMade = ETrue;
+                iCache->CheckCacheL(
+                                1,
+                                ( *( iXmlReader-> iPtrCategory ) )[aSelectedOption]->iCatId->Des(),
+                                iForceGet, res );
+                iDataFrom = EFalse;
+                if ( res == 0 )
+                    {
+                    requestData->iUri.Append(
+                                    ( *( iXmlReader-> iPtrCategory ) )[categoryXmlIndex]->iCatGetOperation->Des() );
+                    requestData->iUri.Append(
+                                    ( *( iXmlReader-> iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                    IRHttpIssueRequestL( *requestData );
+                    iConditonalGet = EFalse;
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                    iDataFrom = ETrue;
+                    }
+                if ( res == -1 )
+                    {
+                    iConditonalGet = ETrue;
+                    requestData->iIfModifiedSince
+                                    = iLastModifiedTime.DateTime();
+                    requestData->isIfModifiedSet = ETrue;
+                    requestData->iUri.Append(
+                                    ( *( iXmlReader-> iPtrCategory ) )[categoryXmlIndex]->iCatGetOperation->Des() );
+                    requestData->iUri.Append(
+                                    ( *( iXmlReader-> iPtrCategory ) )[aSelectedOption]->iCatId->Des() );
+                    IRHttpIssueRequestL( *requestData );
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 0 );
+                    iDataFrom = ETrue;
+                    }
+                }
+            }
+        }
+    else if ( aChoice == EChannels )
+        {
+
+        TBuf<KChannelidMaxLength> channelid;
+        //set the request type for subsiquent Use
+        iRequestType = KTwo;
+        _LIT(KFormat,"%d");
+        if ( aHistoryBool )
+            {
+            _LIT(KPresetFetchUrl,"/do/directory/getPreset?channelid=");
+            requestData->iUri.Append( KPresetFetchUrl );
+            TBuf<KChannelidMaxLength> channelid;
+            _LIT(KFormat,"%d");
+            channelid.Format( KFormat, aSelectedOption );
+            requestData->iUri.Append( channelid );
+            IRHttpIssueRequestL( *requestData );
+            iConditonalGet = EFalse;
+            //Session Log
+            iBrowseUrl.Zero();
+            iBrowseUrl.Copy( requestData->iUri );
+            iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+            iDataFrom = ETrue;
+            CleanupStack::PopAndDestroy( requestData );
+            return iDataFrom;
+            }
+
+        //previous data from cache
+        if ( iChannelDataFrom )
+            {
+            TInt channelCacheIndex;
+            if ( ( *( iCache->iPtrChannel ) )[0]->iChannelGetOperation )
+                {
+                isAdvPresent = EFalse;
+                }
+            else
+                {
+                isAdvPresent = ETrue;
+                }
+            if ( !isAdvPresent )
+                {
+                channelCacheIndex = 0;
+                }
+            else
+                {
+                channelCacheIndex = 1;
+                }
+
+            if( aSelectedOption >= iCache->iPtrChannel->Count())
+                {
+                User::Leave( KErrArgument );
+                }
+
+            if ( iCache->iPtrChannel->Count() )
+                {
+                channelid.Format(
+                                KFormat,
+                                ( *( iCache-> iPtrChannel ) )[aSelectedOption]->iChannelID );
+                iCachePath.Zero();
+                iCachePath.Copy( channelid );
+                iCacheReqMade = ETrue;
+                iCache->CheckCacheL( KTwo, channelid, iForceGet, res );
+                iDataFrom = EFalse;
+                if ( res == 0 || res == -1 )
+                    {
+                    requestData->iUri.Append(
+                                    ( *( iCache-> iPtrChannel ) )[channelCacheIndex]->iChannelGetOperation->Des() );
+                    requestData->iUri.Append( channelid );
+                    IRHttpIssueRequestL( *requestData );
+                    iConditonalGet = EFalse;
+                    //Session Log
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+                    iDataFrom = ETrue;
+                    }
+                }
+            }
+        //previous data from xml
+        else
+            {
+            TInt channelXmlIndex;
+            if ( 0 == ( *( iXmlReader->iPtrChannel ) ).Count() )
+                {
+                CleanupStack::PopAndDestroy( requestData );
+                IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Error!" );
+                return iDataFrom;
+                }
+
+            if ( ( *( iXmlReader->iPtrChannel ) )[0]->iChannelGetOperation )
+                {
+                isAdvPresent = EFalse;
+                }
+            else
+                {
+                isAdvPresent = ETrue;
+                }
+            if ( !isAdvPresent )
+                {
+                channelXmlIndex = 0;
+                }
+            else
+                {
+                channelXmlIndex = 1;
+                }
+
+            if( aSelectedOption >= iXmlReader->iPtrChannel->Count())
+                {
+                User::Leave( KErrArgument );
+                }
+
+            if ( iXmlReader->iPtrChannel->Count() )
+                {
+                channelid.Format(
+                                KFormat,
+                                ( *( iXmlReader-> iPtrChannel ) )[aSelectedOption]->iChannelID );
+                iCachePath.Zero();
+                iCachePath.Copy( channelid );
+                iCacheReqMade = ETrue;
+                iCache->CheckCacheL( KTwo, channelid, iForceGet, res );
+                iDataFrom = EFalse;
+                if ( res == 0 || res == -1 )
+                    {
+                    requestData->iUri.Append(
+                                    ( *( iXmlReader-> iPtrChannel ) )[channelXmlIndex]->iChannelGetOperation->Des() );
+                    requestData->iUri.Append( channelid );
+                    IRHttpIssueRequestL( *requestData );
+                    iConditonalGet = EFalse;
+                    //Session Log
+                    iBrowseUrl.Copy( requestData->iUri );
+                    iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+                    iDataFrom = ETrue;
+                    }
+                }
+            }
+        }
+    else
+        {
+
+        }
+    CleanupStack::PopAndDestroy( requestData );
+    IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Exiting" );
+    return iDataFrom;
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRGetIRID()
+// This API is used by the UI to get IR ID from 
+// isds if it doesnt have one
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::IRGetIRIDL()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Entering" );
+    //if irid is not available fetch it
+    if ( iSettings->GetIRIDL().Length() == 0 )
+        {
+        iReqFromGetIRIDFunc = ETrue;
+        iIRIDPending = EFalse;
+        CIRHttpRequestData *requestData = new ( ELeave ) CIRHttpRequestData();
+        CleanupStack::PushL( requestData );
+        requestData->iMethod = EIRHttpGET;
+        requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+        requestData->iUri.Copy( iGetIridUrl );
+        IRHttpIssueRequestL( *requestData );
+        CleanupStack::PopAndDestroy( requestData );
+        iIRIDPending = ETrue;
+        IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Exiting (1)." );
+        return;
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Exiting (2)." );
+    }
+
+// ---------------------------------------------------------------------------
+// void GetOtaStatus()
+// This API is used by the UI to query for ota update 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::GetOtaStatusL(TBool& aDataFrom)
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::GetOtaStatusL - Entering" );
+
+    CIRHttpRequestData *requestData = new ( ELeave ) CIRHttpRequestData();
+
+    CleanupStack::PushL( requestData );
+
+    requestData->iMethod = EIRHttpGET;
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    iGetOtaStatus.Zero();
+    iGetOtaStatus.Copy( *iISDSBaseUrl );
+    iGetOtaStatus.Append( KOtaUpdateUrl );
+    iGetOtaStatus.Append( iSettings->GetIRIDL() );
+
+    //set the request type for subsiquent Use
+    iRequestType = EOtaInfo;
+    iDataFrom = EFalse;
+    iCachePath.Zero();
+    iCachePath.Copy( KOtaUpdateUrl );
+    TInt res = 0;
+    //check cache if it is a genral service request
+    //not initiated by the user.
+    if ( iOtaReqFrom )
+        {
+        iCacheReqMade = ETrue;
+        iCache->CheckCacheL( EOtaInfo, KOtaUpdateUrl, iForceGet, res );
+        }
+    if ( res == 1 )
+        {
+        aDataFrom = EFalse;
+        }
+    //if cache is not available or stale(dont use the trust period val)
+    if ( res == 0 || res == -1 )
+        {
+        requestData->iUri.Copy( iGetOtaStatus );
+        iConditonalGet = EFalse;
+        //issues request for ota data
+        iDataProvider->IRHttpIssueRequestL( *requestData );
+        iDataFrom = ETrue;
+        aDataFrom = ETrue;
+        }
+    CleanupStack::PopAndDestroy( requestData );
+
+    IRLOG_DEBUG( "CIRIsdsClient::GetOtaStatusL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRIsdsClient::IRISDSPostL()
+// This API is used to Post Irapp usage report to isds
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::IRISDSPostL(TFileName &/*aFileName*/)
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSPostL - Entering" );
+    IRRDEBUG2("CIRISDSCLIENT::ISDSPOSTL",KNullDesC);
+    //Cancels any pending requests
+    IRISDSCancelRequest();
+    CIRHttpRequestData * requestData = new ( ELeave ) CIRHttpRequestData;
+    CleanupStack::PushL( requestData );
+    //Sets the Http Method to POST
+    requestData->iMethod = EIRHttpPOST;
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    requestData->iUri.Copy( *iISDSBaseUrl );
+    requestData->iUri.Append( KLogUsageUrl );
+    //issues request to post the log usage report to isds
+    iPostResponsePending = ETrue;
+    IRHttpIssueRequestL( *requestData );
+    CleanupStack::PopAndDestroy( requestData );
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSPostL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRISDSCancelRequest()
+// This API is used by the UI to cancel a request made.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::IRISDSCancelRequest()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSCancelRequest - Entering" );
+    iSyncRequest = EFalse;
+    iReqFromSync = EFalse;
+    iOtaReqFrom = EFalse;
+    iConditonalGet = EFalse;
+    iPostResponsePending = EFalse;
+    iIRIDPending = EFalse;
+    iDataProvider->IRHttpCancelRequest();
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSCancelRequest - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// void IRISDSMultiSearchL()
+// This API is used by the UI to search a channel.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::IRISDSMultiSearchL(const TDesC& aGenreID, 
+                             const TDesC& aCountryID, 
+                             const TDesC& aLanguageID, 
+                             const TDesC& aSearchText)
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSMultiSearch - Entering" );
+    CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData();
+    iCachePath.Zero();  
+    CleanupStack::PushL(requestData);
+    
+    requestData->iMethod = EIRHttpGET;
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    
+    HBufC8* utfEncodedSearchText = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aSearchText );     
+    CleanupStack::PushL( utfEncodedSearchText );    
+    
+     
+    HBufC8 *encodedQuery = NULL; 
+    encodedQuery = EscapeUtils::EscapeEncodeL(*utfEncodedSearchText, 
+                                EscapeUtils::EEscapeQuery);       
+       
+    HBufC* searchURL = HBufC::NewLC(iISDSBaseUrl->Length() 
+                                    + KMultiSearchUrl().Length() 
+                                    + aGenreID.Length() 
+                                    + aLanguageID.Length() 
+                                    + aCountryID.Length() 
+                                    + KSearchUrl().Length() 
+                                    + utfEncodedSearchText->Size()/2+1 );
+    
+    HBufC* searchPartURL = HBufC::NewLC( KMultiSearchUrl().Length() 
+                                       + aGenreID.Length() 
+                                       + aLanguageID.Length() 
+                                       + aCountryID.Length() );
+    
+    searchPartURL->Des().Format( KMultiSearchUrl, &aGenreID, &aCountryID, 
+                                &aLanguageID );
+    
+    HBufC* searchText = HBufC::NewLC( utfEncodedSearchText->Size()/2+1 );
+    TPtr searchTextPtr( searchText->Des() );
+    searchTextPtr.Copy( *utfEncodedSearchText );
+     
+    TPtr uriPtr( searchURL->Des() );
+    uriPtr.Append( *iISDSBaseUrl );
+    uriPtr.Append( *searchPartURL );
+    uriPtr.Append( searchTextPtr );
+    uriPtr.Append( KSearchUrl );    
+    
+    if ( encodedQuery )
+    {
+        delete encodedQuery;
+    }   
+    
+    requestData->iUri.Copy( searchURL->Left( requestData->iUri.MaxLength() ) );
+    IRHttpIssueRequestL( *requestData );
+    CleanupStack::PopAndDestroy( searchText );
+    CleanupStack::PopAndDestroy( searchPartURL );    
+    CleanupStack::PopAndDestroy( searchURL );
+    CleanupStack::PopAndDestroy( utfEncodedSearchText );
+    
+    
+    iBrowseUrl.Zero();
+    iBrowseUrl.Copy( requestData->iUri );
+    EncodeUrlL( iBrowseUrl );
+    iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+    CleanupStack::PopAndDestroy( requestData );   
+    
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSMultiSearch - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRISDSSearch(TDesC& aSearchString)
+// This API is used by the UI to search channels from isds
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::IRISDSSearchL(const TDesC& aSearchString)
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSSearchL - Entering" );
+    CIRHttpRequestData * requestData = new ( ELeave ) CIRHttpRequestData();
+    iCachePath.Zero();
+    CleanupStack::PushL( requestData );
+    //Sets the Http method to GET
+    requestData->iMethod = EIRHttpGET;
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+
+    // This is a blatant hack to circumvent the fact that the application has hard-coded
+    // 256 to be the maximum length of the URI everywhere. Due to time-restraints it is
+    // not feasible to fix the actual issue here, so every search query that would exceed
+    // the said limit is truncated to fit it.
+    //
+    // The practical impacts of this hack is that should the maximum length be exceeded,
+    // a connection timed out query is most often displayed. 
+    //
+    // The scope of this quick hack is to enable users to perform search with UTF-8 characters
+    // with no possibility of application panics due to descriptor overflows, not to fix
+    // the actual problem with the hard-coded TBufs in the application.
+
+    HBufC8* utfEncoded = CnvUtfConverter::ConvertFromUnicodeToUtf8L(
+                    aSearchString );
+    CleanupStack::PushL( utfEncoded );
+    HBufC8* uri = HBufC8::NewL( iSearchURL.Size() + utfEncoded->Size()
+                    + KSearchUrl().Size() );
+    TPtr8 uriPtr( uri->Des() );
+    uriPtr.Copy( iSearchURL );
+
+    HBufC8 *encodedQuery = NULL;
+    encodedQuery = EscapeUtils::EscapeEncodeL( *utfEncoded,
+                    EscapeUtils::EEscapeQuery );
+    uriPtr.Append( *encodedQuery );
+    uriPtr.Append( KSearchUrl );
+    if ( encodedQuery )
+        {
+        delete encodedQuery;
+        }
+    CleanupStack::PopAndDestroy( utfEncoded );
+    requestData->iUri.Copy( uri->Left( requestData->iUri.MaxLength() ) );
+    delete uri;
+
+    IRHttpIssueRequestL( *requestData );
+    iBrowseUrl.Zero();
+    iBrowseUrl.Copy( requestData->iUri );
+    EncodeUrlL( iBrowseUrl );
+    iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+    CleanupStack::PopAndDestroy( requestData );
+    IRLOG_DEBUG( "CIRIsdsClient::IRISDSSearchL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+//void ParsedStructure(TInt aChoice)
+//Call back funtion called by XML parser after parsing is over
+// ---------------------------------------------------------------------------
+//
+void  CIRIsdsClient::ParsedStructureL(TInt aChoice)
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Entering" );
+    //if catogory info is recieved
+    if ( aChoice == ECategoryInfoRecieved )
+        {
+        iCatDataFrom = EFalse;
+        iIsdsResponseObserver.IsdsCatogoryDataReceivedL(
+                        *( iXmlReader-> iPtrCategory ) );
+        }
+    // if channels list is recieved
+    else if ( aChoice == EChannelListRecieved )
+        {
+        iChannelDataFrom = EFalse;
+        iIsdsResponseObserver.IsdsChannelDataReceivedL(
+                        *( iXmlReader->iPtrChannel ) );
+        }
+
+    //if preset data is recieved
+    else if ( aChoice == EPresetDataRecieved )
+        {
+        if ( iSyncRequest )
+            {
+            iSyncRequest = EFalse;
+            //update the preset(replace it)
+            iIsdsResponseObserver.IsdsPresetChangedL(
+                            *iXmlReader->iPtrPreset->At( 0 ) );
+            }
+        else
+            {
+            iIsdsResponseObserver.IsdsPresetDataReceivedL(
+                            *( iXmlReader-> iPtrPreset ) );
+            }
+        }
+    /*else if(aChoice==EOtaInfoRecieved)
+     {
+     if(!iOtaReqFrom)
+     {
+     iIsdsResponseObserver.IsdsOtaInfoRecieved(*iXmlReader->iOTA)
+     }
+     else
+     {
+     iOtaReqFrom=EFalse;
+     //update settings
+     if(iXmlReader->iOTA->iUpdateInterval!=0)
+     {
+     iSettings->SetSilencePeriodL(iXmlReader->iOTA->iUpdateInterval)
+     }
+     else
+     {
+     iSettings->SetSilencePeriodL(KDays*KHour*KMinute*KSecond)
+     }
+     }
+     }*/
+    else if ( aChoice == EIridRecieved )
+        {
+        iSettings->SetIRIDL( iXmlReader->iRID );
+        }
+    else if ( aChoice == ESessionLogRecieved )
+        {
+        //session log is recieved in ISDS
+        iPostResponsePending = EFalse;
+        iBrowseReport->ReponseFromISDSObtained();
+        }
+
+    else
+        {
+        TRAPD(errd,iIsdsResponseObserver.IsdsErrorL( KDataProviderTimeout) );
+        if ( errd )
+            {
+            IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Exiting ." );
+            return;
+            }
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// void ParseError()
+// Call back funtion called by XML parser in case of parsing error
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::ParseError( TInt aErrorCode )
+    {
+    IRLOG_ERROR( "CIRIsdsClient::ParseError - Entering" );
+
+    IRHttpGeneralError( aErrorCode );
+    IRLOG_DEBUG( "CIRIsdsClient::ParseError - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// void CacheError()
+// 
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::CacheError()
+    {
+    IRLOG_ERROR( "CIRIsdsClient::CacheError" );
+    }
+
+// ---------------------------------------------------------------------------
+// void CacheFailed()
+// 
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::CacheFailed()
+    {
+    IRLOG_WARNING( "CIRIsdsClient::CacheFailed" );
+    }
+
+// ---------------------------------------------------------------------------
+// cache is present but Stale.
+// called by cache mgmt as a callback.
+// after copying the lastmodified time into its variable
+// here it is copied into the variable ilastModifiedTime 
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::CacheInvalid()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::CacheInvalid - Entering" );
+    iLastModifiedTime = iCache->iLastModified;
+    IRLOG_DEBUG( "CIRIsdsClient::CacheInvalid - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// void CachedStructureL()
+// 
+// ---------------------------------------------------------------------------
+//
+void CIRIsdsClient::CachedStructureL( TInt aChoice )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL - Entering" );
+    if ( iCacheReqMade )
+        {
+        iCacheReqMade = EFalse;
+        //if catogory info is recieved
+        if ( aChoice == ECategoryInfoRecieved )
+            {
+            iCatDataFrom = ETrue;
+            iIsdsResponseObserver.IsdsCatogoryDataReceivedL(
+                            *( iCache->iPtrCategory ) );
+            }
+
+        // if channels list is recieved
+        else if ( aChoice == EChannelListRecieved )
+            {
+            iChannelDataFrom = ETrue;
+            iIsdsResponseObserver.IsdsChannelDataReceivedL(
+                            *( iCache->iPtrChannel ) );
+            }
+
+        //if preset data is recieved
+        else if ( aChoice == EPresetDataRecieved )
+            {
+            //multiple presets can be presented to the UI.
+            iIsdsResponseObserver.IsdsPresetDataReceivedL(
+                            *( iCache->iPtrPreset ) );
+            }
+
+        //if ota data is recieved
+        /*else if(aChoice==EOtaInfoRecieved)
+         {
+         if(!iOtaReqFrom)
+         {
+         iIsdsResponseObserver.IsdsOtaInfoRecieved(*iCache->iOTA)
+         }
+         else
+         {
+         iOtaReqFrom=EFalse;
+         //update settings
+         if(iCache->iOTA->iUpdateInterval!=0)
+         {
+         iSettings->SetSilencePeriodL(iCache->iOTA->iUpdateInterval)
+         }
+         else
+         {
+         iSettings->SetSilencePeriodL(KDays*KHour*KMinute*KSecond)
+         }
+         }
+         }*/
+        //if logo data is recieved
+        else if ( aChoice == KFour )
+            {
+            //No implementation
+            }
+        else
+            {
+            TRAPD( errd, iIsdsResponseObserver.IsdsErrorL( KDataProviderTimeout ) );
+            if ( errd )
+                {
+                IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL- Exiting ." );
+                return;
+                }
+            }
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRIsdsClient::SyncPresetL()
+// Used to syncronize presets
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRIsdsClient::SyncPresetL(TInt aPresetId,const TDesC& 
+    aIfModifiedSince )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::SyncPresetL - Entering" );
+    IRRDEBUG2("CIRISDCLIENT::SYNCPRESETL",KNullDesC);
+    iReqFromSync = ETrue;
+    iPresetToBeSynced = aPresetId;
+    CIRHttpRequestData * requestData = new ( ELeave ) CIRHttpRequestData;
+    CleanupStack::PushL( requestData );
+    requestData->iMethod = EIRHttpGET;
+
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    TDateTime lastModified;
+    ConvertToTimeDate( aIfModifiedSince, lastModified );
+    requestData->isIfModifiedSet = ETrue;
+    requestData->iIfModifiedSince.Set( lastModified.Year(),
+                    lastModified.Month(), lastModified.Day(),
+                    lastModified.Hour(), lastModified.Minute(),
+                    lastModified.Second(), lastModified.MicroSecond() );
+    _LIT(KPresetFetchUrl,"/do/directory/getPreset?channelid=");
+
+    TBuf<KUrlPassMaxLength> urlPass( iSettings->GetISDSBaseUrlL() );
+    urlPass.Append( KPresetFetchUrl );
+
+    TBuf<KChidMaxLength> chid;
+    _LIT(KFormat,"%d");
+    chid.Format( KFormat, aPresetId );
+    urlPass.Append( chid );
+    requestData->iUri.Copy( urlPass );
+
+    IRHttpIssueRequestL( *requestData );
+    CleanupStack::PopAndDestroy( requestData );
+    IRLOG_DEBUG( "CIRIsdsClient::SyncPresetL - Exiting." );
+    return 1;
+    }
+
+// ---------------------------------------------------------------------------
+// void ReleaseResources()
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::ReleaseResources()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::ReleaseResources - Entering" );
+    iDataProvider->ReleaseResources();
+    IRLOG_DEBUG( "CIRIsdsClient::ReleaseResources - Exiting" );
+    }
+
+//---------------------------------------------------------------------------
+//CIRIsdsClient::GetMultiplePresetsL
+//for multiple selected presets to be saved 
+//
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::GetMultiplePresetsL(
+                const RArray<TInt>& aIndexArray, TBool& aDataFrom )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::GetMultiplePresetsL - Entering" );
+    _LIT(KSeparator,",");
+    //get the count of the no of requested presets
+    TInt multiSelectedCount = aIndexArray.Count();
+    //allocate space for the request url
+    HBufC8* channelIds = HBufC8::NewLC( multiSelectedCount
+                    * KDefaultRealWidth + multiSelectedCount );
+    //http request data
+    CIRHttpRequestData* requestData = new ( ELeave ) CIRHttpRequestData;
+    requestData->iUri.Copy( *iISDSBaseUrl );
+    CleanupStack::PushL( requestData );
+    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
+    //create a tptr to modify it
+    TPtr8 channelIdPtr = channelIds->Des();
+    //set the request type 
+    iRequestType = EPresets;
+    //result
+    TInt res;
+    _LIT8(KFormat,"%d");
+    //if from cache
+    if ( iChannelDataFrom )
+        {
+        for ( TInt i = 0; i < multiSelectedCount; i++ )
+            {
+            ASSERT( aIndexArray[i] >= 0 && aIndexArray[i] < iCache->iPtrChannel->Count() );
+            TInt channelID = iCache->iPtrChannel->At( aIndexArray[i] )->iChannelID;
+            if ( i != 0 )
+                {
+                channelIdPtr.Append( KSeparator );
+                }
+            TBuf8<KChannelidMaxLength> channelIdBuf;
+            channelIdBuf.Format( KFormat, channelID );
+            channelIdPtr.Append( channelIdBuf );
+            }
+        iCachePath.Zero();
+        iCachePath.Copy( *channelIds );
+        //check if cache is available
+        iCacheReqMade = ETrue;
+        iCache->CheckCacheL( EPresets, iCachePath, iForceGet, res );
+        aDataFrom = EFalse;
+        if ( res == KErrNone )
+            {
+            requestData->iUri.Append(
+                            ( *( iCache-> iPtrChannel ) )[0]->iChannelGetOperation->Des() );
+            requestData->iUri.Append( *channelIds );
+            IRHttpIssueRequestL( *requestData );
+            iConditonalGet = EFalse;
+            //Session Log
+            iBrowseUrl.Copy( requestData->iUri );
+            iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+            aDataFrom = ETrue;
+            }
+        if ( res == KErrNotFound )
+            {
+            iConditonalGet = ETrue;
+            requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+            requestData->isIfModifiedSet = ETrue;
+            requestData->iUri.Append(
+                            ( *( iCache-> iPtrChannel ) )[0]->iChannelGetOperation->Des() );
+            requestData->iUri.Append( *channelIds );
+            IRHttpIssueRequestL( *requestData );
+            iBrowseUrl.Copy( requestData->iUri );
+            iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+            aDataFrom = ETrue;
+            }
+        }
+    //if from xml file
+    else
+        {
+        for ( TInt i = 0; i < multiSelectedCount; i++ )
+            {
+            ASSERT( aIndexArray[i] >= 0 && aIndexArray[i] < iXmlReader->iPtrChannel->Count() );
+            TInt channelID = iXmlReader->iPtrChannel->At( aIndexArray[i] )->iChannelID;
+            if ( i != 0 )
+                {
+                channelIdPtr.Append( KSeparator );
+                }
+            TBuf8<KChannelidMaxLength> channelIdBuf;
+            channelIdBuf.Format( KFormat, channelID );
+            channelIdPtr.Append( channelIdBuf );
+            }
+        iCachePath.Zero();
+        iCachePath.Copy( *channelIds );
+        iCacheReqMade = ETrue;
+        iCache->CheckCacheL( EPresets, iCachePath, iForceGet, res );
+        aDataFrom = EFalse;
+        if ( res == KErrNone )
+            {
+            requestData->iUri.Append(
+                  ( *( iXmlReader-> iPtrChannel ) )[0]->iChannelGetOperation->Des() );
+            requestData->iUri.Append( *channelIds );
+            IRHttpIssueRequestL( *requestData );
+            iConditonalGet = EFalse;
+            //Session Log
+            iBrowseUrl.Copy( requestData->iUri );
+            iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+            aDataFrom = ETrue;
+            }
+        if ( res == KErrNotFound )
+            {
+            iConditonalGet = ETrue;
+            requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
+            requestData->isIfModifiedSet = ETrue;
+            requestData->iUri.Append(
+                  ( *( iXmlReader-> iPtrChannel ) )[0]->iChannelGetOperation->Des() );
+            requestData->iUri.Append( *channelIds );
+            IRHttpIssueRequestL( *requestData );
+            //Session Log
+            iBrowseUrl.Copy( requestData->iUri );
+            iBrowseReport->BrowseUrl( iBrowseUrl, 1 );
+            aDataFrom = ETrue;
+            }
+        }
+    CleanupStack::PopAndDestroy( requestData );
+    CleanupStack::PopAndDestroy( channelIds );
+    IRLOG_DEBUG( "CIRIsdsClient::GetMultiplePresetsL - Exiting" );
+    }
+
+//---------------------------------------------------------------------------
+//CIRIsdsClient::ConvertToTimeDate
+//converts the date-time stamp (last modified) to Symbian DateTime format
+//---------------------------------------------------------------------------
+void CIRIsdsClient::ConvertToTimeDate( const TDesC& aTime,
+                TDateTime& aDateTime ) const
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::ConvertToTimeDate - Entering" );
+    TBuf8<KCopyOfTimeMaxLength> copyOfTime;
+    copyOfTime.Copy( aTime );
+    TInternetDate time;
+    TRAPD( error,time.SetDateL( copyOfTime ) );
+    if ( !error )
+        {
+        aDateTime = time.DateTime();
+        }
+
+    IRLOG_DEBUG( "CIRIsdsClient::ConvertToTimeDate - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+//CIRIsdsClient::IRHttpIssueRequestL
+//Issues Http Request to DataProvider to get data from URL in Request object
+//The Request URL is also encoded here
+//---------------------------------------------------------------------------
+//
+void CIRIsdsClient::IRHttpIssueRequestL( CIRHttpRequestData &aRequestObject )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpIssueRequestL - Entering" );
+    IRRDEBUG2("CIRISDSCLIENT::IRHTTPISSUEREQUESTL",KNullDesC);
+    if ( iIRIDPending )
+        {
+        //if IRID reqeust is pending then queue the reuest 
+        //till IRID response comes
+        iReqPending = ETrue;
+        //temporary request object
+        iTempRequestObject = new ( ELeave ) CIRHttpRequestData;
+        iTempRequestObject->iMethod = aRequestObject.iMethod;
+        iTempRequestObject->iIfModifiedSince
+                        = aRequestObject.iIfModifiedSince;
+        iTempRequestObject->isIfModifiedSet = aRequestObject.isIfModifiedSet;
+        iTempRequestObject->iAcceptLanguage = aRequestObject.iAcceptLanguage;
+        iTempRequestObject->iContentType = aRequestObject.iContentType;
+        iTempRequestObject->iUri = aRequestObject.iUri;
+        }
+    else
+        {
+        if ( iSettings->GetIRIDL().Length() == 0 )
+            {
+            if ( iReqFromGetIRIDFunc )
+                {
+                iReqFromGetIRIDFunc = EFalse;
+                iDataProvider->IRHttpIssueRequestL( aRequestObject );
+                }
+            else
+                {
+                //When the user cancels the http req,irid is not present.
+                //On next request,automatically first irid req is made.
+                //save the actual request
+                //get irid from isds
+                //once irid is received send the saved request to isds
+                iReqPending = ETrue;
+                //temporary request object
+                iTempRequestObject = new ( ELeave ) CIRHttpRequestData;
+                iTempRequestObject->iMethod = aRequestObject.iMethod;
+                iTempRequestObject->iIfModifiedSince
+                                = aRequestObject.iIfModifiedSince;
+                iTempRequestObject->isIfModifiedSet
+                                = aRequestObject.isIfModifiedSet;
+                iTempRequestObject->iAcceptLanguage
+                                = aRequestObject.iAcceptLanguage;
+                iTempRequestObject->iContentType
+                                = aRequestObject.iContentType;
+                iTempRequestObject->iUri = aRequestObject.iUri;
+                IRGetIRIDL();
+                }
+            }
+        else
+            {
+            iReqPending = EFalse;
+            if ( iReqFromSync )
+                {
+                iReqFromSync = EFalse;
+                iSyncRequest = ETrue;
+                }
+            iDataProvider->IRHttpIssueRequestL( aRequestObject );
+            }
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::IRHttpIssueRequestL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+//CIRIsdsClient::EncodeUrlL
+//This url encoding is for session log
+//---------------------------------------------------------------------------
+//
+void CIRIsdsClient::EncodeUrlL( TDes &aQuery )
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::EncodeUrlL - Entering" );
+    //Encodes the URL inside the request object
+    HBufC *encodedurl = NULL;
+    encodedurl = EscapeUtils::EscapeEncodeL( aQuery,
+                    EscapeUtils::EEscapeUrlEncoded );
+    aQuery.Copy( encodedurl->Left( aQuery.MaxLength() ) );
+    //encoded url is released
+    if ( encodedurl )
+        {
+        delete encodedurl;
+        }
+    IRLOG_DEBUG( "CIRIsdsClient::EncodeUrlL - Exiting." );
+    }
+
+//---------------------------------------------------------------------------
+//CIRIsdsClient::PurgeOtaInfoL
+//delete all the data cached wrt OTA
+//---------------------------------------------------------------------------
+//
+EXPORT_C void CIRIsdsClient::PurgeOtaInfoL()
+    {
+    IRLOG_DEBUG( "CIRIsdsClient::PurgeOtaInfoL - Entering" );
+    //reset update available flag to 0
+    iSettings->ReSetUpdateAvailableL();
+    //reset silence period to 0
+    iSettings->SetSilencePeriodL( 0 );
+    //reset silence period start time to a zero string
+    iSettings->SetSilencePeriodStartL( KNullDesC );
+    //clear the cache info if any
+    TRAP_IGNORE( iCache->RemoveOtaInfoL() )
+    IRLOG_DEBUG( "CIRIsdsClient::PurgeOtaInfoL - Exiting" );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/src/irlanguagemapper.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,341 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <btsdp.h>
+
+#include "irlanguagemapper.h"
+#include "irdebug.h"
+
+//============================= MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------------------------
+// IRLanguageMapper::MapLanguage
+// ---------------------------------------------------------------------------
+
+TBufC8<KIRLanguageCodeLength> IRLanguageMapper::MapLanguage(
+                TLanguage aLanguage )
+    {
+    IRLOG_DEBUG( "IRLanguageMapper::MapLanguage - Entering" );
+    TUint16 value = 0;
+
+    switch ( aLanguage )
+        {
+        case ELangEnglish:
+            value = KLanguageEnglish;
+            break;
+        case ELangFrench:
+            value = KLanguageFrench;
+            break;
+        case ELangGerman:
+            value = KLanguageGerman;
+            break;
+        case ELangSpanish:
+            value = KLanguageSpanish;
+            break;
+        case ELangItalian:
+            value = KLanguageItalian;
+            break;
+        case ELangSwedish:
+            value = KLanguageSwedish;
+            break;
+        case ELangDanish:
+            value = KLanguageDanish;
+            break;
+        case ELangNorwegian:
+            value = KLanguageNorwegian;
+            break;
+        case ELangFinnish:
+            value = KLanguageFinnish;
+            break;
+        case ELangAmerican:
+            value = KLanguageEnglish;
+            break;
+        case ELangSwissFrench:
+            value = KLanguageFrench;
+            break;
+        case ELangSwissGerman:
+            value = KLanguageGerman;
+            break;
+        case ELangPortuguese:
+            value = KLanguagePortuguese;
+            break;
+        case ELangTurkish:
+            value = KLanguageTurkish;
+            break;
+        case ELangIcelandic:
+            value = KLanguageIcelandic;
+            break;
+        case ELangRussian:
+            value = KLanguageRussian;
+            break;
+        case ELangHungarian:
+            value = KLanguageHungarian;
+            break;
+        case ELangDutch:
+            value = KLanguageDutch;
+            break;
+        case ELangBelgianFlemish:
+            value = KLanguageDutch;
+            break;
+        case ELangAustralian:
+            value = KLanguageEnglish;
+            break;
+        case ELangBelgianFrench:
+            value = KLanguageFrench;
+            break;
+        case ELangAustrian:
+            value = KLanguageGerman;
+            break;
+        case ELangNewZealand:
+            value = KLanguageEnglish;
+            break;
+        case ELangInternationalFrench:
+            value = KLanguageFrench;
+            break;
+        case ELangCzech:
+            value = KLanguageCzech;
+            break;
+        case ELangSlovak:
+            value = KLanguageSlovak;
+            break;
+        case ELangPolish:
+            value = KLanguagePolish;
+            break;
+        case ELangSlovenian:
+            value = KLanguageSlovenian;
+            break;
+        case ELangTaiwanChinese:
+            value = KLanguageChinese;
+            break;
+        case ELangHongKongChinese:
+            value = KLanguageChinese;
+            break;
+        case ELangPrcChinese:
+            value = KLanguageChinese;
+            break;
+        case ELangJapanese:
+            value = KLanguageJapanese;
+            break;
+        case ELangThai:
+            value = KLanguageThai;
+            break;
+        case ELangAfrikaans:
+            value = KLanguageAfrikaans;
+            break;
+        case ELangAlbanian:
+            value = KLanguageAlbanian;
+            break;
+        case ELangAmharic:
+            value = KLanguageAmharic;
+            break;
+        case ELangArabic:
+            value = KLanguageArabic;
+            break;
+        case ELangArmenian:
+            value = KLanguageArmenian;
+            break;
+        case ELangTagalog:
+            value = KLanguageTagalog;
+            break;
+        case ELangBelarussian:
+            value = KLanguageRussian;
+            break;
+        case ELangBengali:
+            value = KLanguageBengali;
+            break;
+        case ELangBulgarian:
+            value = KLanguageBulgarian;
+            break;
+        case ELangBurmese:
+            value = KLanguageBurmese;
+            break;
+        case ELangCatalan:
+            value = KLanguageCatalan;
+            break;
+        case ELangCroatian:
+            value = KLanguageCroatian;
+            break;
+        case ELangCanadianEnglish:
+            value = KLanguageEnglish;
+            break;
+        case ELangInternationalEnglish:
+            value = KLanguageEnglish;
+            break;
+        case ELangSouthAfricanEnglish:
+            value = KLanguageEnglish;
+            break;
+        case ELangEstonian:
+            value = KLanguageEstonian;
+            break;
+        case ELangFarsi:
+            value = KLanguagePersian;
+            break;
+        case ELangCanadianFrench:
+            value = KLanguageFrench;
+            break;
+        case ELangScotsGaelic:
+            value = KLanguageScotsGaelic;
+            break;
+        case ELangGeorgian:
+            value = KLanguageGeorgian;
+            break;
+        case ELangGreek:
+            value = KLanguageGreek;
+            break;
+        case ELangCyprusGreek:
+            value = KLanguageGreek;
+            break;
+        case ELangGujarati:
+            value = KLanguageGujarati;
+            break;
+        case ELangHebrew:
+            value = KLanguageHebrew;
+            break;
+        case ELangHindi:
+            value = KLanguageHindi;
+            break;
+        case ELangIndonesian:
+            value = KLanguageIndonesian;
+            break;
+        case ELangIrish:
+            value = KLanguageIrish;
+            break;
+        case ELangSwissItalian:
+            value = KLanguageItalian;
+            break;
+        case ELangKannada:
+            value = KLanguageKannada;
+            break;
+        case ELangKazakh:
+            value = KLanguageKazakh;
+            break;
+        case ELangKhmer:
+            value = KLanguageCambodian;
+            break;
+        case ELangKorean:
+            value = KLanguageKorean;
+            break;
+        case ELangLao:
+            value = KLanguageLaothian;
+            break;
+        case ELangLatvian:
+            value = KLanguageLatvian;
+            break;
+        case ELangLithuanian:
+            value = KLanguageLithuanian;
+            break;
+        case ELangMacedonian:
+            value = KLanguageMacedonian;
+            break;
+        case ELangMalay:
+            value = KLanguageMalay;
+            break;
+        case ELangMalayalam:
+            value = KLanguageMalayalam;
+            break;
+        case ELangMarathi:
+            value = KLanguageMarathi;
+            break;
+        case ELangMoldavian:
+            value = KLanguageMoldavian;
+            break;
+        case ELangMongolian:
+            value = KLanguageMongolian;
+            break;
+        case ELangNorwegianNynorsk:
+            value = KLanguageNorwegian;
+            break;
+        case ELangBrazilianPortuguese:
+            value = KLanguagePortuguese;
+            break;
+        case ELangPunjabi:
+            value = KLanguagePunjabi;
+            break;
+        case ELangRomanian:
+            value = KLanguageRomanian;
+            break;
+        case ELangSerbian:
+            value = KLanguageSerbian;
+            break;
+        case ELangSinhalese:
+            value = KLanguageSinhalese;
+            break;
+        case ELangSomali:
+            value = KLanguageSomali;
+            break;
+        case ELangInternationalSpanish:
+            value = KLanguageSpanish;
+            break;
+        case ELangLatinAmericanSpanish:
+            value = KLanguageSpanish;
+            break;
+        case ELangSwahili:
+            value = KLanguageSwahili;
+            break;
+        case ELangFinlandSwedish:
+            value = KLanguageSwedish;
+            break;
+        case ELangTamil:
+            value = KLanguageTamil;
+            break;
+        case ELangTelugu:
+            value = KLanguageTelugu;
+            break;
+        case ELangTibetan:
+            value = KLanguageTibetan;
+            break;
+        case ELangTigrinya:
+            value = KLanguageTigrinya;
+            break;
+        case ELangCyprusTurkish:
+            value = KLanguageTurkish;
+            break;
+        case ELangTurkmen:
+            value = KLanguageTurkmen;
+            break;
+        case ELangUkrainian:
+            value = KLanguageUkrainian;
+            break;
+        case ELangUrdu:
+            value = KLanguageUrdu;
+            break;
+        case ELangVietnamese:
+            value = KLanguageVietnamese;
+            break;
+        case ELangWelsh:
+            value = KLanguageWelsh;
+            break;
+        case ELangZulu:
+            value = KLanguageZulu;
+            break;
+        default:
+            value = KLanguageEnglish;
+            break;
+        }
+
+    /* translate the two bytes into actual 'string' */
+    TBuf8<KIRLanguageCodeLength> ret;
+    TUint char1 = ( value >> 8 ) & 0xFFu;
+    TUint char2 = value & 0xFFu;
+    ret.Append( static_cast<TUint8> ( char1 ) );
+    ret.Append( static_cast<TUint8> ( char2 ) );
+    IRLOG_DEBUG( "IRLanguageMapper::MapLanguage - Exiting" );
+    return ret;
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/bmarm/irnetworkcontrolleru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,25 @@
+EXPORTS
+	_ZN18CIRNetworkObserver4NewLEP20CIRNetworkController @ 1  NONAME
+	_ZN20CIRNetworkController13IsOfflineModeEv @ 2 NONAME
+	_ZN20CIRNetworkController15GetIRConnectionEv @ 3 NONAME
+	_ZN20CIRNetworkController15GetUAProfStringEv @ 4 NONAME
+	_ZN20CIRNetworkController16CancelConnectingEv @ 5 NONAME
+	_ZN20CIRNetworkController16GetWapProfStringEv @ 6 NONAME
+	_ZN20CIRNetworkController17GetIRSocketServerEv @ 7 NONAME
+	_ZN20CIRNetworkController18ChooseAccessPointLEi @ 8 NONAME
+	_ZN20CIRNetworkController19DataTransferTrackerEv @ 9 NONAME
+	_ZN20CIRNetworkController21ResetConnectionStatusEv @ 10 NONAME
+	_ZN20CIRNetworkController22InitializeHttpSessionLERK12RHTTPSessionN22MIRDataTransferTracker19TIRTransferCategoryE @ 11 NONAME
+	_ZN20CIRNetworkController23IsHandingOverConnectionEv @ 12 NONAME
+	_ZN20CIRNetworkController23LogoDataTransferTrackerEv @ 13 NONAME
+	_ZN20CIRNetworkController27DeleteActiveNetworkObserverER24MIRActiveNetworkObserver @ 14 NONAME
+	_ZN20CIRNetworkController29NotifyActiveNetworkObserversLE15TIRNetworkEvent @ 15 NONAME
+	_ZN20CIRNetworkController30RegisterActiveNetworkObserverLER24MIRActiveNetworkObserver @ 16 NONAME
+	_ZN20CIRNetworkController32RegisterLogoDataTransferTrackerLER12RHTTPSession @ 17 NONAME
+	_ZN20CIRNetworkController5CloseEv @ 18 NONAME
+	_ZN20CIRNetworkController5OpenLEP20MIRNetworkController @ 19 NONAME
+	_ZNK20CIRNetworkController15IsWlanSupportedEv @ 20 NONAME
+	_ZNK20CIRNetworkController16GetNetworkStatusEv @ 21 NONAME
+	_ZNK20CIRNetworkController22IdentifyConnectionTypeEv @ 22 NONAME
+	_ZNK20CIRNetworkController8GetIAPIdERm @ 23 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/bwinscw/irnetworkcontrolleru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,25 @@
+EXPORTS
+	?GetUAProfString@CIRNetworkController@@QAEPAVHBufC8@@XZ @ 1  NONAME ; class HBufC8 * CIRNetworkController::GetUAProfString(void)
+	?GetWapProfString@CIRNetworkController@@QAEPAVHBufC8@@XZ @ 2  NONAME ; class HBufC8 * CIRNetworkController::GetWapProfString(void)
+	?IsOfflineMode@CIRNetworkController@@QAEHXZ @ 3  NONAME ; int CIRNetworkController::IsOfflineMode(void)
+	?GetIRSocketServer@CIRNetworkController@@QAEAAVRSocketServ@@XZ @ 4  NONAME ; class RSocketServ & CIRNetworkController::GetIRSocketServer(void)
+	?IsHandingOverConnection@CIRNetworkController@@QAEHXZ @ 5  NONAME ; int CIRNetworkController::IsHandingOverConnection(void)
+	?GetIAPId@CIRNetworkController@@QBEHAAK@Z @ 6  NONAME ; int CIRNetworkController::GetIAPId(unsigned long &) const
+	?RegisterActiveNetworkObserverL@CIRNetworkController@@QAEXAAVMIRActiveNetworkObserver@@@Z @ 7  NONAME ; void CIRNetworkController::RegisterActiveNetworkObserverL(class MIRActiveNetworkObserver &)
+	?IdentifyConnectionType@CIRNetworkController@@QBE?AW4TIRConnectionType@@XZ @ 8  NONAME ; enum TIRConnectionType CIRNetworkController::IdentifyConnectionType(void) const
+	?GetNetworkStatus@CIRNetworkController@@QBEHXZ @ 9  NONAME ; int CIRNetworkController::GetNetworkStatus(void) const
+	?ResetConnectionStatus@CIRNetworkController@@QAEXXZ @ 10  NONAME ; void CIRNetworkController::ResetConnectionStatus(void)
+	?DeleteActiveNetworkObserver@CIRNetworkController@@QAEXAAVMIRActiveNetworkObserver@@@Z @ 11  NONAME ; void CIRNetworkController::DeleteActiveNetworkObserver(class MIRActiveNetworkObserver &)
+	?GetIRConnection@CIRNetworkController@@QAEAAVRConnection@@XZ @ 12  NONAME ; class RConnection & CIRNetworkController::GetIRConnection(void)
+	?OpenL@CIRNetworkController@@SAPAV1@PAVMIRNetworkController@@@Z @ 13  NONAME ; class CIRNetworkController * CIRNetworkController::OpenL(class MIRNetworkController *)
+	?NewL@CIRNetworkObserver@@SAPAV1@PAVCIRNetworkController@@@Z @ 14  NONAME ; class CIRNetworkObserver * CIRNetworkObserver::NewL(class CIRNetworkController *)
+	?CancelConnecting@CIRNetworkController@@QAEXXZ @ 15  NONAME ; void CIRNetworkController::CancelConnecting(void)
+	?ChooseAccessPointL@CIRNetworkController@@QAEXH@Z @ 16  NONAME ; void CIRNetworkController::ChooseAccessPointL(int)
+	?DataTransferTracker@CIRNetworkController@@QAEAAVMIRDataTransferTracker@@XZ @ 17  NONAME ; class MIRDataTransferTracker & CIRNetworkController::DataTransferTracker(void)
+	?NotifyActiveNetworkObserversL@CIRNetworkController@@QAEXW4TIRNetworkEvent@@@Z @ 18  NONAME ; void CIRNetworkController::NotifyActiveNetworkObserversL(enum TIRNetworkEvent)
+	?InitializeHttpSessionL@CIRNetworkController@@QAEXABVRHTTPSession@@W4TIRTransferCategory@MIRDataTransferTracker@@@Z @ 19  NONAME ; void CIRNetworkController::InitializeHttpSessionL(class RHTTPSession const &, enum MIRDataTransferTracker::TIRTransferCategory)
+	?IsWlanSupported@CIRNetworkController@@QBEHXZ @ 20  NONAME ; int CIRNetworkController::IsWlanSupported(void) const
+	?Close@CIRNetworkController@@QAEXXZ @ 21  NONAME ; void CIRNetworkController::Close(void)
+	?RegisterLogoDataTransferTrackerL@CIRNetworkController@@QAEXAAVRHTTPSession@@@Z @ 22  NONAME ; void CIRNetworkController::RegisterLogoDataTransferTrackerL(class RHTTPSession &)
+	?LogoDataTransferTracker@CIRNetworkController@@QAEAAVMIRDataTransferTracker@@XZ @ 23  NONAME ; class MIRDataTransferTracker & CIRNetworkController::LogoDataTransferTracker(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 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:  Build information file for project InternetRadio
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+irnetworkcontroller.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/group/irnetworkcontroller.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+#include 		<platform_paths.hrh>
+
+TARGET        irnetworkcontroller.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x2000B4A2
+
+PAGED
+
+SOURCEPATH    ../src
+
+SOURCE        	irnetworkcontroller.cpp
+SOURCE		    irnetworkobserver.cpp
+SOURCE		    irdatatransfertracker.cpp
+SOURCE          irfilteredapreader.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../irsettings/inc
+
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+// TODO will be removed after the changes of /epoc32/include
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(http)
+SYSTEMINCLUDE   MW_LAYER_PUBLIC_EXPORT_PATH(http)
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             centralrepository.lib
+LIBRARY             commdb.lib
+LIBRARY             commsdat.lib
+LIBRARY             connmon.lib
+LIBRARY             esock.lib
+LIBRARY             euser.lib
+LIBRARY             featdiscovery.lib
+LIBRARY             irsettings.lib
+LIBRARY             http.lib
+LIBRARY 	        inetprotutil.lib
+LIBRARY 	        cmmanager.lib
+LIBRARY             extendedconnpref.lib
+LIBRARY             netmeta.lib
+LIBRARY             flogger.lib
+
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY				CAP_GENERAL_DLL
+
+#if defined( WINSCW )
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/iractivenetworkobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef M_IRACTIVENETWORKOBSERVER_H
+#define M_IRACTIVENETWORKOBSERVER_H
+
+#include "irnetworkcontrollerobserver.h"
+
+
+class MIRActiveNetworkObserver
+    {
+public:
+    /**
+     * Notifies all observers whose network request is active
+     * to reissue the request  
+     * NotifyActiveNetworkObserversL()
+     */    
+    virtual void NotifyActiveNetworkObserversL( TIRNetworkEvent aEvent ) = 0;
+     
+     
+    /**
+     * Notifies all observers whose network request is active
+     * to reset the pending request status  
+     * ResetPendingRequests()
+     */    
+    virtual void ResetPendingRequests( TBool aValue ) = 0;
+    };
+
+#endif // M_IRACTIVENETWORKOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irdatatransferobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 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:  Data transfer interfaces.
+*
+*/
+
+
+#ifndef M_IRDATATRANSFEROBSERVER_H
+#define M_IRDATATRANSFEROBSERVER_H
+
+#include <e32def.h>
+
+class RHTTPSession;
+class MIRDataTransferObserver;
+
+
+/**
+ * Data transfer tracker interface.
+ *
+ * Provides means to attach itself to an existing network session to track the data amounts
+ * transferred through it, and also an API through which raw data amounts can be manually
+ * inputted (this is mainy the case when raw sockets are used directly).
+ *
+ * For getting notifications from the application's data transfer amounts on the core side,
+ * this class supports an observer interface through which data transfer events are notified.
+ */
+NONSHARABLE_CLASS( MIRDataTransferTracker )
+    {
+public:
+
+    /**
+     * Supported data transfer categories.
+     */
+    enum TIRTransferCategory
+        {
+
+        /**
+         * The category for the data is unknown.
+         */
+        EIRTransferCategoryUnknown,
+
+        /**
+         * The category for the data is SDS.
+         */
+        EIRTransferCategoryIsds,
+
+        /**
+         * The category for the data is content show.
+         */
+        EIRTransferCategoryAudio
+
+        };
+
+    /**
+     * Simple struct to keep hold of all the different data amounts transferred.
+     *
+     * The actual total amount of bytes of transferred data through the connection
+     * is the amount of total bytes sent added to the amount of total bytes received.
+     */
+    NONSHARABLE_STRUCT( TIRDataTransferPckg )
+        {
+
+        /**
+         * The total amount of bytes sent originating from all traffic.
+         * This is simply the sum of all the categorized data sent amounts.
+         */
+        TInt iBytesSentTotal;
+
+        /**
+         * The total amount of bytes received originating from all traffic.
+         * This is simply the sum of all the categorized data received amounts.
+         */
+        TInt iBytesReceivedTotal;
+
+        /**
+         * The total amount of bytes sent originating from unknown traffic.
+         */
+        TInt iBytesSentUnknown;
+
+        /**
+         * The total amount of bytes received originating from unknown traffic.
+         */
+        TInt iBytesReceivedUnknown;
+
+        /**
+         * The total amount of bytes sent originating from station directory traffic.
+         */
+        TInt iBytesSentIsds;
+
+        /**
+         * The total amount of bytes received originating from station directory traffic.
+         */
+        TInt iBytesReceivedIsds;
+
+        /**
+         * The total amount of bytes sent originating from content show traffic.
+         */
+        TInt iBytesSentAudio;
+
+        /**
+         * The total amount of bytes received originating from content show traffic.
+         */
+        TInt iBytesReceivedAudio;
+
+        };
+
+public:
+
+    /**
+     * Sets the observer that is notified of data transfer events.
+     *
+     * @param   aObserver           The observer to set, or NULL if none.
+     */
+    virtual void SetObserver( MIRDataTransferObserver* aObserver ) = 0;
+
+    /**
+     * Returns the current data transfer amounts.
+     *
+     * This always reflects the current situation, and thereby does not
+     * take the threshold mechanism into account.
+     *
+     * @return  The current data transfer amounts.
+     */
+    virtual const TIRDataTransferPckg& TransferredData() const = 0;
+
+    /**
+     * Binds the tracker to an existing and opened HTTP session.
+     *
+     * @param   aSession            Session to bind the tracker to.
+     * @param   aCategory           Transfer category to record the data under.
+     */
+    virtual void BindL( RHTTPSession aSession, TIRTransferCategory aCategory ) = 0;
+
+    /**
+     * Notifies of raw bytes transferred through the connection.
+     *
+     * Raw sockets cannot be observer automatically, so if they are used, then manual
+     * notification is required on the user's part.
+     *
+     * @param   aBytesSent          Bytes sent through the raw socket.
+     * @param   aBytesReceived      Bytes received through the raw socket.
+     * @param   aCategory           Transfer category to record the data under.
+     */
+    virtual void RawDataTransferredL( TInt aBytesSent,
+             TInt aBytesReceived, TIRTransferCategory aCategory ) = 0;
+
+    };
+
+/**
+ * Interface which all data transfer events are passed through.
+ */
+class MIRDataTransferObserver
+    {
+
+public:
+
+    /**
+     * Invoked when a data transfer event occurs.
+     *
+     * The amount of data supplied as the parameter is the absolute amount of data transferred during
+     * the life time of the connection. The threshold after which the call back is invoked is internal,
+     * resulting in that it may not always be instantly called unless a predefined amount of data has
+     * already been transferred since the last call back was made.
+     *
+     * @param   aData           Data amounts that have been transferred through the connection.
+     */
+    virtual void HandleDataTransferEventL( 
+                const MIRDataTransferTracker::TIRDataTransferPckg& aData ) = 0;
+    };
+
+#endif // M_IRDATATRANSFEROBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irdatatransfertracker.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* Copyright (c) 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:  Tracks data transmitted through a network connection.
+*
+*/
+
+
+#ifndef C_IRDATATRANSFERTRACKER_H
+#define C_IRDATATRANSFERTRACKER_H
+
+#include <mhttpfilter.h>
+
+#include "irdatatransferobserver.h"
+
+
+/**
+ * Tracks data transmitted through a network connection.
+ *
+ * Data sent or received over HTTP sessions are logged with the implemented HTTP filter.
+ * For raw sockets, the implementation requires that the user of the socket notifies
+ * him of data transfer explicitly.
+ */
+NONSHARABLE_CLASS( CIRDataTransferTracker ): public CBase,
+                                             public MIRDataTransferTracker,
+                                             public MHTTPFilter
+    {
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * @return  The created object. Transfers ownership.
+     */
+    static CIRDataTransferTracker*  NewL( );
+
+    /**
+     * Destructor.
+     */
+    ~CIRDataTransferTracker();
+
+// from base class MIRDataTransferTracker
+
+   void SetObserver( MIRDataTransferObserver* );
+    const TIRDataTransferPckg& TransferredData() const;
+    void BindL( RHTTPSession , TIRTransferCategory );
+    void RawDataTransferredL( TInt , TInt , TIRTransferCategory );
+
+// from base class MHTTPFilter
+
+    void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
+
+private:
+
+    /**
+     * Constructor.
+     */
+    CIRDataTransferTracker();
+
+    /**
+     * Second-phase constructor.
+     */
+    void ConstructL() const;
+
+    /**
+     * Calculates the header field sizes in bytes from the specified headers.
+     *
+     * @param   aTransaction        HTTP transaction for the headers.
+     * @param   aHeaders            Headers to calculate the size from.
+
+     * @return  Size of the headers in bytes.
+     */
+    TInt HeaderSize( const RHTTPTransaction aTransaction, RHTTPHeaders aHeaders );
+
+    /**
+     * Parses the header sizes (both request and response) of the supplied HTTP transaction,
+     * logging it under the specified category.
+     *
+     * @param   aTransaction        Transaction to parse the headers from.
+     * @param   aCategory           Transfer category to record the data under.
+     */
+    void ParseHeaderSizeL( const RHTTPTransaction aTransaction, TIRTransferCategory aCategory );
+
+    /**
+     * Parses the body size of the supplied HTTP transaction, logging it under the specified category.
+     *
+     * @param   aTransaction        Transaction to parse the headers from.
+     * @param   aCategory           Transfer category to record the data under.
+     */
+    void ParseBodySizeL( const RHTTPTransaction aTransaction, TIRTransferCategory aCategory );
+
+    /**
+     * Processes raw data sent and/or received via the connection.
+     *
+     * @param   aBytesSent          The number of bytes that were sent.
+     * @param   aBytesReceived      The number of bytes that were received.
+     * @param   aCategory           Transfer category to record the data under.
+     */
+    void ProcessDataL( TInt aBytesSent, TInt aBytesReceived, TIRTransferCategory aCategory );
+
+    /**
+     * Dispatches the notification of the data transfer conditionally.
+     *
+     * If the threshold between the last notification's data transfer amount and the current
+     * data transfer amount is not exceeded, then no notification is dispatched.
+     */
+    void DispatchNotificationL();
+
+private:
+
+    /**
+     * Data transfer observer.
+     * Not owned.
+     */
+    MIRDataTransferObserver* iObserver;
+
+    /**
+     * Persistent storage for the data amounts transferred.
+     */
+    MIRDataTransferTracker::TIRDataTransferPckg iPckg;
+
+    /**
+     * The amount of bytes transferred since last notification was dispatched.
+     */
+    TInt iBytesSinceLastNotification;
+
+    /**
+     * The flag to determine Byte Counter crossed first threshold
+     */
+    TBool bThresholdCrossed;
+    };
+
+#endif // C_IRDATATRANSFERTRACKER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irfilteredapreader.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,192 @@
+/*
+* Copyright (c) 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:  Used to read in only access points with the desired characteristics. 
+*
+*/
+
+
+#ifndef C_IRFILTEREDAPREADER_H
+#define C_IRFILTEREDAPREADER_H
+
+#include <commsdattypesv1_1.h>
+
+using namespace CommsDat;
+
+
+/**
+ *  Reads the access points for Network Controller component.
+ * 
+ *  Returns only those entries from IAP table that are referenced from 
+ *  WAP_ACCESS_POINT table.
+ * 
+ *  In addition to that an instance of class performs filtering based on
+ *  configured criteria.   
+  *
+ */
+NONSHARABLE_CLASS( CIRFilteredApReader ): public CBase
+    {
+public:
+    // The filtering flags
+    static const TInt KIRFilterNone         = 0x0;
+    static const TInt KIRFilterWAPOnly      = 0x1;
+    static const TInt KIRFilterWAPMandatory = 0x2;
+    static const TInt KIRFilterEasyWLAN     = 0x4;
+    
+public:
+    /**
+     * Two-phased constructor.
+     * @param aFilterFlags Defines the filtering criteria applied to entries
+     * @return Instance of CIRFilteredApReader
+     */
+    static CIRFilteredApReader* NewL( TInt aFilterFlags );
+
+    /**
+     * Two-phased constructor.
+     * @param aFilterFlags Defines the filtering criteria applied to entries
+     * @return Instance of CIRFilteredApReader
+     */
+    static CIRFilteredApReader* NewLC( TInt aFilterFlags );
+
+    /**
+     * Gets the first appropriate IAP record.
+     * Initialises the required objects for iteration.
+     * 
+     * Only those records that have the desired characteristics are returned.
+     *
+     * @return The suitable record, if found. NULL, if no record was found
+     */
+    CCDIAPRecord* FirstRecordL();    
+
+    /**
+     * Gets the next appropriate IAP record.
+     * Only those records that have the desired characteristics are returned.
+     *
+     * @return The suitable record, if found. NULL, if no record was found
+     */
+    CCDIAPRecord* NextRecordL();
+
+private:
+    /**
+     * C++ Default constructor.
+     * 
+     * @param aFilterFlags Defines the filtering criteria applied to entries 
+     */
+    CIRFilteredApReader( TInt aFilterFlags );
+
+    /**
+     * Second phase constructor
+     */
+    void ConstructL();
+
+    /**
+     * Destructor.
+     */
+    ~CIRFilteredApReader();
+    
+    /**
+     * Returns the current record.
+     * 
+     * @return The current record.
+     */
+    CCDWAPAccessPointRecord* CurrentRecordL() const;
+
+    /**
+     * Moves the iterator to next record in WAPAccessPoint table.
+     * 
+     * @return ETrue if there was more records, EFalse if not.
+     */
+    TBool MoveToNextRecord();
+
+    /**
+     * Loads items from WAPIPBearer and IAP tables that are
+     * referenced by the current record.
+     */
+    TBool LoadCurrentApDetailsL();
+    
+    /**
+     * Performs the filtering.
+     * 
+     * Applies the different filtering criteria according to configured
+     * policy (flags).
+     *
+     * @return ETrue if the record was let through, EFalse if the record was filtered out.
+     */
+    TBool FilterL() const;
+
+    /**
+     * Filters the access point entries that have the mandatory WAP parameters.
+     *
+     * Currently only GatewayAddress of WAPIPBearer is checked.
+     * 
+     * Examining the StartPage field of WAPAccessPoint table proved to be 
+     * too strict filter.  
+     * 
+     * @return ETrue if the record was let through, EFalse if the record was filtered out.
+     */
+    TBool FilterWAPMandatoryL() const;
+    
+    /**
+     * Filters the access point entries that use IAPService, whose type is WAPOnly.
+     * 
+     * @return ETrue if the record was let through, EFalse if the record was filtered out.
+     */
+    TBool FilterWAPOnlyL() const;
+
+    /**
+     * Filters the access point entries whose name is "EasyWlan".
+     * 
+     * This filtering should be done in more clever way.
+     * 
+     * @return ETrue if the record was let through, EFalse if the record was filtered out.
+     */
+    TBool FilterEasyWlanL() const;
+
+private: // data
+
+    /**
+     * The database accessor.
+     * Owned.
+     */
+    CMDBSession* iDbSession;
+    
+    /**
+     * All the records in WAPAccessPoint table. 
+     * Owned.
+     */
+    CMDBRecordSet<CCDWAPAccessPointRecord>* iWapTable;
+    
+    /**
+     * Index of the current record.
+     */
+    TInt iWapTableIndex;
+    
+    /**
+     * WAPIPBearer entry associated with current record.
+     * Owned.
+     */
+    CCDWAPIPBearerRecord* iWapIpBearerRecord;
+
+    /**
+     * IAP record associated with current record.
+     * Owned.
+     */
+    CCDIAPRecord* iIapRecord;
+    
+    /**
+     * Flags that define the applied filtering criteria.
+     */
+    TInt iFilterFlags;
+    };
+
+#endif // C_IRFILTEREDAPREADER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irnetworkcontroller.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,506 @@
+/*
+* Copyright (c) 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:  Controls the network interface(s) for Internet Radio.
+*
+*/
+
+
+#ifndef C_IRNETWORKCONTROLLER_H
+#define C_IRNETWORKCONTROLLER_H
+
+#include <badesca.h>
+#include <es_sock.h>
+#include <rhttpsession.h>
+//Added for ALR/SNAP
+#include <comms-infras/cs_mobility_apiext.h>
+
+#include "iractivenetworkobserver.h"
+#include "irnetworkcontrollerobserver.h"
+#include "irdatatransfertracker.h"
+
+class CIRNetworkObserver;
+class CIRSettings;
+class MIRActiveNetworkObserver;
+
+/**
+ * This class provides the interface to IRNetworkController component
+ *
+ * @code
+ * // CIRNetworkController follows a singleton pattern
+ * // hence the destructor is private and to destroy it we need to use an API
+ * // For creating a network controller which has provision for network monitoring
+ * // we need to pass the reference of the observer which should derive from
+ * // MIRNetworkControllerObserver class the network even observed will be
+ * // indicated to the observer with the call back IRNetworkEvent() function
+ * CIRNetworkController* iNetworkController = CIRNetworkController::NewL(iObserver)
+ *
+ * // For creating a network controller which does not have provision for network monitoring
+ * // we use the overloaded NewL() of CIRNetworkController
+ * CIRNetworkController* iNetworkController = CIRNetworkController::NewL()
+ *
+ * // This API is used to destroy the network controller handle
+ * iNetworkController->DestroyNetworkController();
+ *
+ * // This API returns the instance of RConnection
+ * // The same RConnection object is used across the entire iRAPP components to
+ * // provide central arbiter and monitoring of Network Connection
+ * iNetworkController->GetIRConnection();
+ *
+ * // This API returns the instance of RSocketServ
+ * // The same RSocketServ object is used across the entire iRAPP components to
+ * // provide central arbiter and monitoring of Network Connection
+ * iNetworkController->GetIRSocketServer();
+ *
+ * // This API returns a pointer to the x-wap-profile string.
+ * // The ownership of the object is passed onto the caller
+ * iNetworkController->GetWapProfString();
+ *
+ * // This API returns a pointer to the UAProf string.
+ * // The ownership of the object is passed onto the caller
+ * iNetworkController->GetUAProfString();
+ *
+ * // This API returns ETrue of network connection is up and running EFalse
+ * // otherwise
+ * iNetworkController->GetNetworkStatus();
+ *
+ * // This API returns the IAP id of the connected connection
+ * // this is used by download manager for choosing the access point
+ * iNetworkController->GetIAPId();
+ *
+ * // This API is called to initiate access point selection
+ * iNetworkController->ChooseAccessPointL();
+ *
+ * // This API returns ETrue if the phone is in offline mode, EFalse
+ * // otherwise
+ * iNetworkController->IsOfflineMode();
+ *
+ * // This API returns ETrue if WLan is supported on the device, EFalse
+ * // otherwise
+ * iNetworkController->IsWlanSupported();
+ *
+ * // This API allows the caller to reset the network connection status
+ * iNetworkController->ResetConnectionStatus();
+ *
+ * // This API returns the type of connection open
+ * iNetworkController->IdentifyConnectionType();
+ *
+ * @endcode
+ *
+ */
+NONSHARABLE_CLASS( CIRNetworkController ): public CActive, 
+                                           public MIRDataTransferObserver,
+                                           public MMobilityProtocolResp
+    {
+public:
+
+    /**
+     *  Creates an Instance of CIRNetworkController
+     *  @return CIRNetworkController*
+     */
+    IMPORT_C static CIRNetworkController* OpenL( MIRNetworkController* aObserver = NULL );
+
+    /**
+     *  Conditionally destroys the IRNetworkController object
+     */
+    IMPORT_C void Close();
+
+    /**
+     *  Default C++ Destructor
+     */
+    ~CIRNetworkController();
+
+    /**
+     *  Returns the instance of RConnection
+     *  The same RConnection object is used across the entire iRAPP components to
+     *  provide central arbiter and monitoring of Network Connection
+     *  @return RConnection&
+     */
+    IMPORT_C RConnection& GetIRConnection();
+
+    /**
+     *  Returns the instance of RSocketServ
+     *  The same RSocketServ object is used across the entire iRAPP components to
+     *  provide central arbiter and monitoring of Network Connection
+     *  @return RSocketServ&
+     */
+    IMPORT_C RSocketServ& GetIRSocketServer();
+
+    /**
+     *  Returns a HBufC pointer to the x-wap-profile string
+     *  Transfers the ownership of the returned HBufC8 object
+     *  The caller must takecare of deleting the returned object
+     *  @return HBufC8*
+     */
+    IMPORT_C HBufC8* GetWapProfString();
+
+    /**
+     *  Returns a HBufC pointer to the UAProf string
+     *  Transfers the ownership of the returned HBufC8 object
+     *  The caller must takecare of deleting the returned object
+     *  @return HBufC8*
+     */
+    IMPORT_C HBufC8* GetUAProfString();
+
+    /**
+     *  Returns the variable which indicates if connection is active or not
+     *  @return TBool iIsConnectedToNetwork
+     */
+    IMPORT_C TBool GetNetworkStatus() const;
+
+    /**
+     *  Gets the IAP Id of the chosen IAP
+     *  @return TInt Error code.
+     */
+    IMPORT_C TInt GetIAPId(TUint32& aIapId) const;
+
+  /**
+     *  Configures the Access Point which is used by all the components for network connectivity
+     */
+    IMPORT_C void ChooseAccessPointL(TBool aDefaultConnection = ETrue);
+
+    /*
+     * cancel configuring access point
+     */
+    IMPORT_C void CancelConnecting();
+    
+    /**
+     *  This api is used to determine if the phone is in offline mode
+     *  @return ETrue if the phone is in offline mode else EFalse
+     */
+    IMPORT_C TBool IsOfflineMode();
+
+    /**
+     *  This api is used to determine if the phone supports WLan usage
+     *  @return ETrue if the phone supports else EFalse
+     */
+    IMPORT_C TBool IsWlanSupported() const;
+
+    /**
+     *  Reset the connection status to Disconnected state
+     */
+    IMPORT_C  void ResetConnectionStatus();
+
+    /**
+     *  Used to determine the type of connection
+     *  @return enum describing the type of connection ( GPRS/3G/WiFi )
+     */
+    IMPORT_C TIRConnectionType IdentifyConnectionType() const;
+
+    /**
+     *  Binds DataTranseferTracker instance to HTTPSession (Byte Counter Impl)
+     */
+    IMPORT_C  void InitializeHttpSessionL( const RHTTPSession& aHTTPSession, 
+                        MIRDataTransferTracker::TIRTransferCategory aCategory );
+
+    /**
+     *  Binds LogoDataTranseferTracker instance to Logo HTTPSession (Byte Counter Impl)
+     */
+    IMPORT_C  void RegisterLogoDataTransferTrackerL( RHTTPSession& aHTTPSession );
+
+    /**
+     *  DataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
+     */
+    IMPORT_C  MIRDataTransferTracker& DataTransferTracker();
+
+    /**
+     *  LogoDataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
+     */
+    IMPORT_C  MIRDataTransferTracker& LogoDataTransferTracker();
+
+    /**
+     *  Method to receive notification when logo is downloaded
+     */
+    void HandleDataTransferEventL( const MIRDataTransferTracker::TIRDataTransferPckg& aData );
+
+    /*
+     * Registers the observer that will be notified for 
+     * a network connection.
+     * Observer requires notification to reissue pending request
+     */ 
+    IMPORT_C  void RegisterActiveNetworkObserverL( MIRActiveNetworkObserver& aActiveNetworkObserver );
+
+    /**
+     * DeleteRoamingObserver()
+     * Used to remove an observer for roaming events from the observer array
+     */
+    IMPORT_C void DeleteActiveNetworkObserver( MIRActiveNetworkObserver& aActiveNetworkObserver );
+        
+    /**
+     * Notifies all observers whose network request is active
+     * to reissue the request  
+     * NotifyActiveNetworkObserversL()
+     */    
+    IMPORT_C  void NotifyActiveNetworkObserversL( TIRNetworkEvent aEvent );
+     
+     /**
+     * Notifies all observers whose network request is active
+     * to reset the pending request status  
+     * ResetPendingRequests()
+     */    
+     void ResetPendingRequests( TBool aValue );
+
+protected:
+
+    /**
+     *  Derived from CActive
+     */
+
+    /**
+     * The function is called by the active scheduler when a request completion event occurs,
+     */
+    virtual void RunL();
+
+    /**
+     *  Cancels the pending requests on the CIRNetworkController Active object
+     */
+    virtual void DoCancel();
+    
+    
+public: // From MMobilityProtocolResp        //to be changed to private after demo
+
+            //Added for ALR/SNAP
+        void PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
+                                        TAccessPointInfo aNewAPInfo,
+                                        TBool aIsUpgrade,
+                                        TBool aIsSeamless );
+        void NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless );
+        void Error( TInt aError );    
+        
+public:
+        /**
+         * IsHandingOverConnection()
+         * Indicates if the Hand over of Network connection has happened
+         */
+        IMPORT_C TBool IsHandingOverConnection();
+        
+        void ResetHandingOverConnection();
+        
+private:
+
+    /**
+     *  Used to determine the current profile
+     *  @return TInt describing the profile value
+     */
+    TInt DetermineCurrentProfile() const;
+
+    /**
+     *  Pops up the access point list.
+     *  @return TBool ETrue feature is supported EFalse otherwise
+     */
+    TBool CheckFeatureL( TInt aFeatureId ) const;
+
+    /**
+     *  Default C++ Constructor
+     */
+    CIRNetworkController();
+
+    /**
+     *  Second Phase construction.
+     */
+    void ConstructL();
+
+    /**
+     *  Second Phase construction.
+     *    @param aObserver pointer to the observer class if an observer is needed
+     */
+    void ConstructL( MIRNetworkController* aObserver );
+
+    /**
+     *  Determines the available access points using CommsDat Api
+     */
+    void QueryCommsForIAPL();
+
+    /**
+     *  Queries the system and extracts the UAProf information
+     *  Used by IRDataProvider and IRStreamSource
+     */
+    void BuildUAProfStringL();
+
+    /**
+     *  Retrievs the string from Central Repository for the specified key and cen rep uid
+     *  Transfers the ownership of the returned HBufC object
+     *  The caller must takecare of deleting the returned object*
+     *    @param aRepositoryUid specifies the Uid of the repository to be used
+     *    @param aKey specifies the key to be used
+     *    @return HufC* pointer to the retrieved string
+     */
+    HBufC* CentralRepositoryStringValueL( const TUid& aRepositoryUid,
+        TUint32 aKey ) const;
+
+    /**
+     *  Pops up the access point list.
+     *  @return TBool ETrue is we need to proceed with access point selection EFalse otherwise
+     */
+    TBool DisplayAccessPointListL();
+
+    /**
+     *  Validates the access point availablity etc.
+     */
+    TBool ValidateAccessPointsL();
+
+    /**
+     *  Handles the success case of Network connection in RunL
+     */
+    void HandleRunLSuccessL();
+    
+    /**
+     *  Handles the error case of Network connection in RunL
+     */
+    void HandleRunLErrorL( TInt aStatusCode );
+    
+public:
+    /**
+     * Indicates if ChooseAccessPointL is called
+     */
+    TBool iIsConnectRequestIssued;
+
+private:
+    /**
+     * This is the physical connection we are putting up
+     */
+    RConnection* iIRNetworkConnection;
+
+    /**
+     * Actual RSocketServ instance
+     */
+    RSocketServ iIRSocketServer;
+
+    /**
+     * Number of objects currently referring to the singleton object CIRNetworkController
+     */
+    TInt iSingletonInstances;
+
+    /**
+     * Used to access Settings object
+     */
+    CIRSettings* iIRSettings;
+
+    /**
+     * IR Network component observer
+     */
+    MIRNetworkController* iObserver;
+
+    /**
+     * Enum declaration which indicate the network status
+     */
+    enum TIRNetworkConnectionStatus
+        {
+        EIRNetworkConnectionActive = 1,
+        EIRNetworkConnectionInActive
+        };
+
+    /**
+     * Variable to keep track of the RConnection connection status
+     */
+    TIRNetworkConnectionStatus iNetworkConnectionState;
+
+    /**
+     * Enum declaration which indicate the connection to RSocketServ status
+     */
+    enum TIRSocketServerConnectionStatus
+        {
+        EIRSocketServerActive = 1,
+        EIRSocketServerInActive
+        };
+
+    /**
+     * Variable to keep track of the RSocketServ connection status
+     */
+    TIRSocketServerConnectionStatus iSocketServerConnectionState;
+
+    /**
+     * Enum declaration to indicate the NetworkController state
+     */
+    enum TIRNetworkControllerState
+        {
+        EInActive = 1,
+        EConnectingToNetwork
+        };
+
+    /**
+     * Specifies the Network controller state
+     */
+    TIRNetworkControllerState iNetworkControllerState;
+
+    /**
+     * Indicates the current network connection status
+     */
+    TBool iIsConnectedToNetwork;
+
+    /**
+     * Network observer
+     */
+    CIRNetworkObserver* iIRNetworkObserver;
+
+    /**
+     * Pointer to UAProf string
+     */
+    HBufC8* iIRUAProf;
+
+    /**
+     * Pointer to x-wap-profile string
+     */
+    HBufC8* iIRWapProf;
+
+    /**
+     * Access point list for settings view
+     */
+    CDesCArrayFlat* iIapList;
+
+  /**
+     * Indicates if WiFi is supported or not
+     */
+    TBool iIsWlanSupported;
+
+    /**
+     * Used to determine if connection is open or not
+     */
+
+    TBool iConnectionPresent;
+
+    /**
+     * Tracks data transferred over the network for the connection.
+     * Owned.
+     */
+
+    CIRDataTransferTracker* iDataTransferTracker;
+
+    /**
+     * Tracks data transferred over the network for the Logo session.
+     * Owned.
+     */
+
+    CIRDataTransferTracker* iLogoDataTransferTracker;
+    
+    //Added for ALR/SNAP
+    
+    /**
+    * Observes the preferred network within defined destination
+    */
+    CActiveCommsMobilityApiExt* iMobility;
+
+    /**
+     * ETrue if the ALR handover is ongoing
+     */
+    TBool iHandingOver;
+    
+    /**
+     * Array of observers for change in roaming events
+     */
+    RPointerArray<MIRActiveNetworkObserver> iActiveNetworkObserverArray;
+    
+    TBool iDefaultConnection;
+    };
+
+#endif // C_IRNETWORKCONTROLLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irnetworkcontrollerobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef M_IRNETWORKCONTROLLEROBSERVER_H
+#define M_IRNETWORKCONTROLLEROBSERVER_H
+
+#include <e32def.h>
+
+/** 
+* Identifies the type of connection 
+*/    
+enum TIRConnectionType
+    {
+    EGprs,
+    EWcdma,
+    ECdma2000,
+    EWiFi,
+    EEdge
+    };   
+
+/** 
+* Indicates the various Network events
+*/    
+enum TIRNetworkEvent
+    {
+    ENetworkConnectionConnecting,
+    ENetworkConnectionEstablished,
+    ENetworkConnectionDisconnected,
+    EDisplayNetworkMessageNoConnectivity,
+    EDisplayOfflineMode,
+    EDisplayNoAccessPointsDefined,
+    EAccessPointSelectionCancelled,
+    EConnectingCancelled
+    };   
+
+
+/** 
+* Observers should derive from this class and pass a pointer of this
+* type when creating an instance of CIRNetworkController if they require
+* an observer
+*/  
+class MIRNetworkController
+    {
+public:
+
+    /** 
+    * IRNetworkEventL( TIRNetworkEvent aEvent )    *  @param aEvent Indicates the type of network event that occurred
+    */
+    virtual void IRNetworkEventL( TIRNetworkEvent aEvent ) = 0;
+    };
+
+#endif // M_IRNETWORKCONTROLLEROBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/inc/irnetworkobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef C_IRNETWORKOBSERVER_H
+#define C_IRNETWORKOBSERVER_H
+
+#include <rconnmon.h>
+
+#include "irnetworkcontrollerobserver.h"
+
+class MIRNetworkController;
+class CIRNetworkController;
+
+
+NONSHARABLE_CLASS( CIRNetworkObserver ): public CActive , 
+                                         public MConnectionMonitorObserver
+    {
+public: 
+
+    /**
+     *Creates an Instance of CIRNetworkObserver
+     *@return CIRNetworkObserver*
+     */    
+    IMPORT_C static CIRNetworkObserver* NewL( CIRNetworkController* aNetworkController );
+
+    /** 
+     *  Default Destructor
+     */
+    ~CIRNetworkObserver();
+
+    /** 
+     *  Initializes the Connection monitor
+     */    
+    void InitializeNetworkObserver();
+
+    /** 
+     *  Set the observer used to communicate with the IRNetworkController
+     */    
+    void SetObserver( MIRNetworkController* aObserver );
+    
+    /**
+     * Sets network monitoring observer to decide whether network monitoring is 
+     * required.
+     */
+    void SetNetworkMonitoring( TBool aValue );
+
+private: 
+
+    /** 
+     *  Default Constructor
+     */
+    CIRNetworkObserver(CIRNetworkController *aNetworkController);
+
+    /** 
+     *  Creates an Instance of CIRNetworkObserver
+     *  @return CIRNetworkObserver*
+     */    
+    static CIRNetworkObserver* NewLC( CIRNetworkController* aNetworkController );
+
+    /** 
+     *  Second Phase construction.
+     */
+    void ConstructL();
+
+//  Derived from CActive
+
+    /** 
+     * Derived from CActive
+     * The function is called by the active scheduler when a request 
+     * completion event occurs,
+     */
+    virtual void RunL();
+
+    /** 
+     *  Cancels the pending requests on the CIRNetworkObserver Active object
+     */
+    virtual void DoCancel();
+
+    /** 
+     *  Handles a leave occurring in the request completion event handler RunL()
+     */
+    virtual TInt RunError( int aError );
+
+    /**
+     *    Derived from MConnectionMonitorObserver
+     */
+
+    /** 
+     *  Derived from MConnectionMonitorObserver
+     *  Implements the EventL method which is called when there is a network event
+     *  @param aConnMonEvent Indicates the type of event occurred
+     */     
+    void  EventL( const CConnMonEventBase &aConnMonEvent );
+
+    /** 
+     *  Identifies the type of connection we have used to get connected to network
+     */
+    void IdentifyConnection();
+
+    /**
+     * Utility function used just to keep RunL() small
+     */
+    void IRNetworkObserverRunL();
+
+    /**
+     * Extracts the IAP Id of the access point
+     */
+    void GetAPId();
+
+
+public: // Public Data Members
+
+    /**
+     * Stores the type of connection that is currently open
+     */
+    TIRConnectionType iIRConnectionType;
+
+    /**
+     * Stores the IAP ID of the connection
+     */
+    TUint iIAPId;
+
+    TBool iIsIAPIdAvailable;
+
+private:
+
+    /** 
+     *IR Connection monitor states ( indicates the different 
+     *possible states the state machine can be in )
+     */
+    enum TIRObserverState
+    {
+    EInitializing,
+    EGettingConnectionInfo,
+    EGettingIAPId
+    };
+
+    /**
+     * Used to monitor the network
+     */
+    RConnectionMonitor iIRConnectionMonitor;
+
+    /**
+     * Stores the currently open connection Id
+     */
+    TUint iConnectionId;
+
+    /**
+     * Stores the currently open Sub connection Id
+     */
+    TUint iSubConnectionCount;
+
+    /**
+     * Stores the count of currently open sub connections
+     */
+    TUint iConnectionCount;
+
+    /**
+     * Stores the state of the observer
+     */
+    TIRObserverState iObserverState;
+
+    /**
+     * Stores the type of connection open
+     */
+    TInt iConnectionType;
+
+    /**
+     * Pointer to the network controller object
+     */
+    MIRNetworkController* iMonitorObserver;
+
+    /**
+     * Boolean indicates if monitoring option is requested by the creator
+     * of the CIRNetworkController instance
+     */
+    TBool iMonitoringRequired;
+
+    CIRNetworkController *iNetworkController;
+    };
+
+#endif // C_IRNETWORKOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/src/irdatatransfertracker.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,348 @@
+/*
+* Copyright (c) 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:  Tracks data transmitted through a network connection.
+*
+*/
+
+
+#include <httpstringconstants.h>
+#include <mhttpdatasupplier.h>
+#include <rhttpheaders.h>
+
+#include "irdebug.h"
+#include "irdatatransfertracker.h"
+
+// The threshold in bytes after which notifications are sent to observers.
+// 0.1  MB = 104857.6 bytes ( rounded )
+const TInt KIRDataTransferTrackerThreshold = 104858;
+// 0.01 MB = 1048.57 bytes ( rounded )
+const TInt KIRDataTransferTrackerMiniThreshold = 1049;
+// The overhead in bytes per one HTTP header.
+const TInt KVRBytesPerHeaderOverhead = 2; // "\r\n"
+// The overhead in bytes per one header field in a request.
+const TInt KVRBytesPerHeaderFieldOverhead = 4; // ": \r\n"
+// The overhead in bytes per one header sent.
+const TInt KVRBytesPerHeaderSentOverhead = 4; // "  \r\n"
+// The overhead in bytes per one header received.
+const TInt KVRBytesPerHeaderReceivedOverhead = 3; // " \r\n"
+
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CIRDataTransferTracker* CIRDataTransferTracker::NewL()
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::NewL - Entering" );
+    CIRDataTransferTracker* self = new ( ELeave ) CIRDataTransferTracker;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRDataTransferTracker::NewL - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CIRDataTransferTracker::CIRDataTransferTracker()
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::CIRDataTransferTracker - Entering" );
+    bThresholdCrossed = EFalse;
+    IRLOG_DEBUG( "CIRDataTransferTracker::CIRDataTransferTracker - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::ConstructL() const
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::ConstructL" );
+    return;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CIRDataTransferTracker::~CIRDataTransferTracker()
+    {
+        IRLOG_DEBUG( "CIRDataTransferTracker::~CIRDataTransferTracker - Entering" );
+        iObserver = NULL;
+        IRLOG_DEBUG( "CIRDataTransferTracker::~CIRDataTransferTracker - Exiting" );
+
+    }
+
+// ---------------------------------------------------------------------------
+// From class MIRDataTransferTracker.
+// Sets the observer.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::SetObserver( MIRDataTransferObserver* aObserver )
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::SetObserver - Entering" );
+    iObserver = aObserver;
+    IRLOG_DEBUG( "CIRDataTransferTracker::SetObserver - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// From class MIRDataTransferTracker.
+// Returns the current transferred data amounts.
+// ---------------------------------------------------------------------------
+//
+const MIRDataTransferTracker::TIRDataTransferPckg& CIRDataTransferTracker::TransferredData() const
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::TIRDataTransferPckg" );
+    return iPckg;
+    }
+
+// ---------------------------------------------------------------------------
+// From class MIRDataTransferTracker.
+// Binds this to track the supplied HTTP session.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::BindL( RHTTPSession aSession, TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG2( "CIRDataTransferTracker::BindL() - aCategory = %d", static_cast<TInt>( aCategory ) );
+
+    aSession.ConnectionInfo().SetPropertyL(
+        aSession.StringPool().StringF( HTTP::ESessionId, aSession.GetTable() ), 
+            THTTPHdrVal( aCategory ) );
+    aSession.FilterCollection().AddFilterL(
+        *this, THTTPEvent::EAnyTransactionEvent, MHTTPFilter::EClientFilters, RStringF() );
+    IRLOG_DEBUG( "CIRDataTransferTracker::BindL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// From class MIRDataTransferTracker.
+// Handles raw data transfers.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::RawDataTransferredL( TInt aBytesSent, TInt aBytesReceived, 
+                                                  TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::RawDataTransferredL - Entering" );
+    ProcessDataL( aBytesSent, aBytesReceived, aCategory  );
+    IRLOG_DEBUG( "CIRDataTransferTracker::RawDataTransferredL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// From class MHTTPFilter.
+// Invoked when HTTP transactions are sent or received.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::MHFRunL( const RHTTPTransaction aTransaction, const THTTPEvent& aEvent )
+    {
+    IRLOG_DEBUG2( "CIRDataTransferTracker::MHFRunL() - aEvent.iStatus = %d", aEvent.iStatus );
+
+    RHTTPSession session = aTransaction.Session();
+
+    THTTPHdrVal categoryVal;
+
+    if ( session.ConnectionInfo().Property(
+        session.StringPool().StringF( HTTP::ESessionId, session.GetTable() ), categoryVal ) )
+        {
+        TIRTransferCategory category = static_cast<TIRTransferCategory>( categoryVal.Int() );
+
+        switch ( aEvent.iStatus )
+            {
+            case THTTPEvent::EGotResponseHeaders:
+                ParseHeaderSizeL( aTransaction, category );
+                break;
+            case THTTPEvent::EGotResponseBodyData:
+                ParseBodySizeL( aTransaction, category );
+                break;
+            default:
+                break;
+            }
+        }
+    IRLOG_DEBUG( "CIRDataTransferTracker::MHFRunL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Calculates the header field sizes in bytes from the specified headers.
+// ---------------------------------------------------------------------------
+//
+TInt CIRDataTransferTracker::HeaderSize( const RHTTPTransaction aTransaction, 
+                                         RHTTPHeaders aHeaders )
+    {
+    IRLOG_DEBUG( "CIRDataTransferTracker::HeaderSize - Entering" );
+    TInt size = KVRBytesPerHeaderOverhead;
+
+    RStringPool stringPool = aTransaction.Session().StringPool();
+
+    THTTPHdrFieldIter it = aHeaders.Fields();
+    it.First();
+
+    while ( !it.AtEnd() )
+        {
+        RStringF key = stringPool.StringF( it() );
+
+        TPtrC8 ptr;
+        aHeaders.GetRawField( key, ptr );
+
+        size += key.DesC().Size();
+        size += ptr.Size();
+        size += KVRBytesPerHeaderFieldOverhead;
+
+        ++it;
+        }
+    IRLOG_DEBUG( "CIRDataTransferTracker::HeaderSize - Exiting" );
+    return size;
+
+    }
+
+// ---------------------------------------------------------------------------
+// Parses the header sizes ( both request and response ) of the supplied HTTP
+// transaction, logging it under the specified category.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::ParseHeaderSizeL( const RHTTPTransaction aTransaction, 
+                                                  TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG2( "CIRDataTransferTracker::ParseHeaderSizeL() - aCategory = %d", static_cast<TInt>( aCategory ) );
+
+    RHTTPSession session = aTransaction.Session();
+
+    // Parse the request size first.
+
+    RHTTPRequest request = aTransaction.Request();
+    TInt sent = HeaderSize( aTransaction, request.GetHeaderCollection() );
+
+    // Now that the actual header fields are parsed we have to manually extract the original request.
+    // The format of the request is "%S %S %S\r\n", where the first string is the method ( GET or POST ),
+    // the second is the full URI of the request, and the third the HTTP protocol version in use.
+
+    RStringF http = session.StringPool().StringF( HTTP::EHttp11, session.GetTable() );
+
+    sent += request.Method().DesC().Size();
+    sent += request.URI().UriDes().Size();
+    sent += http.DesC().Size();
+    sent += KVRBytesPerHeaderSentOverhead;
+
+    // Proceed to parse the response size.
+
+    RHTTPResponse response = aTransaction.Response();
+    TInt received = HeaderSize( aTransaction, response.GetHeaderCollection() );
+
+    // Now that the actual header fields of the response are parsed, we have to manually extract the
+    // original response. The format of the response is "%S %d %S\r\n", where the first string is the HTTP
+    // protocol version, the first integer is the HTTP status code, and the second string is the
+    // status text.
+
+    TBuf8<KDefaultRealWidth> responseCode;
+    responseCode.AppendNum( static_cast<TInt64>( response.StatusCode() ) );
+
+    received += session.StringPool().StringF( HTTP::EHttp11, session.GetTable() ).DesC().Size();
+    received += responseCode.Size(); // Contains the byte for the trailing space as is, so need not add it as overhead below.
+    received += response.StatusText().DesC().Size();
+    received += KVRBytesPerHeaderReceivedOverhead;
+
+    ProcessDataL( sent, received, aCategory );
+    IRLOG_DEBUG( "CIRDataTransferTracker::ParseHeaderSizeL - Exiting" );
+
+    }
+
+// ---------------------------------------------------------------------------
+// Parses the body size of the supplied HTTP transaction, logging it under the specified category.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::ParseBodySizeL(const RHTTPTransaction aTransaction, 
+                                            TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG2( "CIRDataTransferTracker::ParseBodySizeL() - aCategory = %d", static_cast<TInt>( aCategory ) );
+
+    ASSERT( aTransaction.Response().HasBody() );
+
+    TPtrC8 ptr;
+    aTransaction.Response().Body()->GetNextDataPart( ptr );
+
+    ProcessDataL( 0, ptr.Size(), aCategory );
+    IRLOG_DEBUG( "CIRDataTransferTracker::ParseBodySizeL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Processes raw data sent and/or received via the connection.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::ProcessDataL( TInt aBytesSent, TInt aBytesReceived, 
+                                           TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG4( "CIRDataTransferTracker::ProcessDataL() - aBytesSent = %d, aBytesReceived = %d, aCategory = %d",
+        aBytesSent, aBytesReceived, static_cast<TInt>( aCategory ) );
+
+    switch ( aCategory )
+        {
+        case MIRDataTransferTracker::EIRTransferCategoryIsds:
+            iPckg.iBytesSentIsds += aBytesSent;
+            iPckg.iBytesReceivedIsds += aBytesReceived;
+            break;
+        case MIRDataTransferTracker::EIRTransferCategoryAudio:
+            iPckg.iBytesSentAudio += aBytesSent;
+            iPckg.iBytesReceivedAudio += aBytesReceived;
+            break;
+        default:
+            iPckg.iBytesSentUnknown += aBytesSent;
+            iPckg.iBytesReceivedUnknown += aBytesReceived;
+            break;
+        }
+
+    iPckg.iBytesSentTotal += aBytesSent;
+    iPckg.iBytesReceivedTotal += aBytesReceived;
+
+    iBytesSinceLastNotification += aBytesSent + aBytesReceived;
+
+    DispatchNotificationL();
+    IRLOG_DEBUG( "CIRDataTransferTracker::ProcessDataL() - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Dispatches the notification of the data transfer conditionally.
+// ---------------------------------------------------------------------------
+//
+void CIRDataTransferTracker::DispatchNotificationL()
+    {
+    IRLOG_DEBUG2( "CIRDataTransferTracker::DispatchNotificationL() - iBytesSinceLastNotif = %d",
+        iBytesSinceLastNotification );
+
+    // Set flag when Byte Counter crosses first threshold 0.1 MB
+    if ( bThresholdCrossed == EFalse && 
+        ( iPckg.iBytesSentTotal+iPckg.iBytesReceivedTotal ) >= KIRDataTransferTrackerThreshold )
+        bThresholdCrossed = ETrue;
+
+    // Smooth updates to each 0.01 MB
+    if ( /*bThresholdCrossed == EFalse &&*/ iBytesSinceLastNotification >= KIRDataTransferTrackerMiniThreshold)
+        {
+        if ( iObserver )
+            {
+            iObserver->HandleDataTransferEventL( iPckg );
+            }
+        iBytesSinceLastNotification = 0;
+        }
+
+
+    // Streaming updates to each 0.1 MB afterwards
+    else if ( iBytesSinceLastNotification >= KIRDataTransferTrackerThreshold )
+        {
+        if ( iObserver )
+            {
+            iObserver->HandleDataTransferEventL( iPckg );
+            }
+        iBytesSinceLastNotification = 0;
+        }
+    IRLOG_DEBUG( "CIRDataTransferTracker::DispatchNotificationL() - Exiting" );
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/src/irfilteredapreader.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,357 @@
+/*
+* Copyright (c) 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:  Used to read in only access points with the desired characteristics.
+*
+*/
+
+
+#include <commdb.h>
+#include <e32cmn.h>
+
+#include "irdebug.h"
+#include "irfilteredapreader.h"
+
+_LIT( KDynIpAddress, "0.0.0.0" );
+_LIT( KEasyWLAN, "Easy WLAN" );
+
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::NewL
+// ---------------------------------------------------------------------------
+//
+CIRFilteredApReader* CIRFilteredApReader::NewL( TInt aFilterFlags )
+    {
+    IRLOG_DEBUG2( "CIRFilteredApReader::NewL - Filter flags = %d", aFilterFlags );
+    CIRFilteredApReader* self = CIRFilteredApReader::NewLC( aFilterFlags );
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." );    
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::NewLC
+// ---------------------------------------------------------------------------
+//
+CIRFilteredApReader* CIRFilteredApReader::NewLC( TInt aFilterFlags )
+    {
+    IRLOG_DEBUG2( "CIRFilteredApReader::NewLC - Filter flags = %d", aFilterFlags );
+    CIRFilteredApReader* self = new( ELeave ) CIRFilteredApReader( aFilterFlags );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." );    
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::FirstRecordL
+// ---------------------------------------------------------------------------
+//
+CCDIAPRecord* CIRFilteredApReader::FirstRecordL()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Entering" );    
+    CCDIAPRecord* record( NULL );
+    iWapTableIndex = 0;
+    if ( iWapTable->iRecords.Count() > 0 )
+        {
+        TBool loaded( EFalse );
+        TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc.
+        if ( err == KErrNone && loaded && FilterL() )
+            {
+            record = static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+            record->SetRecordId( iIapRecord->RecordId() );
+            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() );
+            }
+        else if ( err != KErrNone || !loaded )
+            {
+            IRLOG_ERROR3( "CIRFilteredApReader::FirstRecordL - Loading AP details failed ( err=%d, loaded=%d ).",
+                          err, loaded );            
+            record = NextRecordL();
+            }
+        else
+            {
+            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() );
+            record = NextRecordL();            
+            }
+        }        
+    IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Exiting." );    
+    return record;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::NextRecordL
+// ---------------------------------------------------------------------------
+//
+CCDIAPRecord* CIRFilteredApReader::NextRecordL()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Entering" );    
+    CCDIAPRecord* record( NULL );
+    
+    while ( !record && MoveToNextRecord() )
+        {
+        TBool loaded( EFalse );
+        TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc.
+        if ( err == KErrNone && loaded && FilterL() )
+            {
+            record = static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+            record->SetRecordId( iIapRecord->RecordId() );            
+            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() );            
+            }
+        else if ( err != KErrNone || !loaded )
+            {
+            IRLOG_ERROR3( "CIRFilteredApReader::NextRecordL - Loading AP details failed ( err=%d, loaded=%d ).",
+                          err, loaded );            
+            }
+        else
+            {
+            IRLOG_INFO2( "CIRFilteredApReader::NextRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() );
+            }
+        }
+    IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Exiting." );    
+    return record;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::CIRFilteredApReader
+// ---------------------------------------------------------------------------
+//
+CIRFilteredApReader::CIRFilteredApReader( TInt aFilterFlags ) 
+    : iFilterFlags( aFilterFlags )  
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::CIRFilteredApReader" );                
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CIRFilteredApReader::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Entering" );                
+    iDbSession = CMDBSession::NewL( CMDBSession::LatestVersion() );
+    
+    iWapTable = new ( ELeave ) CMDBRecordSet<CCDWAPAccessPointRecord>( KCDTIdWAPAccessPointRecord );
+    iWapTable->LoadL( *iDbSession );
+    IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::~CIRFilteredApReader
+// ---------------------------------------------------------------------------
+//
+CIRFilteredApReader::~CIRFilteredApReader()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Entering" );    
+    delete iDbSession;
+    delete iWapTable;
+    delete iWapIpBearerRecord;
+    delete iIapRecord;
+    IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::CurrentRecordL
+// ---------------------------------------------------------------------------
+//
+CCDWAPAccessPointRecord* CIRFilteredApReader::CurrentRecordL() const
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Entering" );    
+    if ( iWapTableIndex >= iWapTable->iRecords.Count() )
+        {
+        IRLOG_FATAL( "CIRFilteredApReader::CurrentRecordL - WAP table overflow!" );
+        User::Leave( KErrCorrupt );
+        }
+    IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Exiting" );    
+    return static_cast<CCDWAPAccessPointRecord*>( iWapTable->iRecords[iWapTableIndex] );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::MoveToNextRecord
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::MoveToNextRecord()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Entering" );    
+    TBool retMe( EFalse );
+    if ( ++iWapTableIndex < iWapTable->iRecords.Count() )
+        {
+        IRLOG_INFO2( "CIRFilteredApReader::MoveToNextRecord - Current record %d", iWapTableIndex );        
+        retMe = ETrue;
+        }
+    else
+        {
+        IRLOG_INFO( "CIRFilteredApReader::MoveToNextRecord - No more records" );        
+        }
+    IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Exiting" );    
+    return retMe;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::LoadCurrentApDetailsL
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::LoadCurrentApDetailsL()
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::LoadCurrentApDetailsL - Entering" );    
+    delete iWapIpBearerRecord;
+    iWapIpBearerRecord = NULL;
+    
+    delete iIapRecord;
+    iIapRecord = NULL;
+    
+    // Load record from WAPIPBearer
+    iWapIpBearerRecord = static_cast<CCDWAPIPBearerRecord*>( 
+            CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+
+    iWapIpBearerRecord->iWAPAccessPointId.SetL( CurrentRecordL()->RecordId() );
+    TBool res = iWapIpBearerRecord->FindL( *iDbSession );
+    
+    if ( res )
+        {
+        iIapRecord = static_cast<CCDIAPRecord*>(
+                 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+        iIapRecord->SetRecordId( iWapIpBearerRecord->iWAPIAP );
+        iIapRecord->LoadL( *iDbSession );
+        }
+    IRLOG_DEBUG2( "CIRFilteredApReader::LoadCurrentApDetailsL - returning %d", res );    
+    return res;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::FilterL
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::FilterL() const
+    {
+    IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Service type %S", &iIapRecord->iServiceType.GetL() );    
+    TBool retMe( ETrue );
+    
+    // The WAP check needs to be done only for CSD, GPRS, CDMA and LAN (  because of Easy WLAN )
+    // APs. 
+    if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 ||
+         iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 ||
+//         iIapRecord->iServiceType.GetL().Compare( 
+//         TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 ||
+         iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameLANService) ) == 0 )
+        {
+        if ( iFilterFlags & KIRFilterWAPMandatory )
+            {
+            retMe = FilterWAPMandatoryL();
+            }
+        if ( retMe && iFilterFlags & KIRFilterWAPOnly )
+            {
+            retMe = FilterWAPOnlyL();
+            }
+        if ( retMe && iFilterFlags & KIRFilterEasyWLAN )
+            {
+            retMe = FilterEasyWlanL();            
+            }
+        }
+    IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Returning %d", retMe );    
+    return retMe;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::FilterWAPMandatoryL
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::FilterWAPMandatoryL() const
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPMandatoryL - Entering" );    
+    TBool retMe( EFalse );
+    
+    // First check the WAP_GATEWAY_ADDRESS of WAP_IP_BEARER table.
+    if ( iWapIpBearerRecord->iWAPGatewayAddress.IsNull() || 
+         iWapIpBearerRecord->iWAPGatewayAddress.GetL().Length() == 0 ||
+         iWapIpBearerRecord->iWAPGatewayAddress.GetL().Compare( KDynIpAddress ) == 0 )
+        {
+        retMe = ETrue;
+        }
+    IRLOG_INFO3( "CIRFilteredApReader::FilterWAPMandatoryL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );
+    return retMe;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::FilterWAPOnlyL
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::FilterWAPOnlyL() const
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPOnlyL - Entering" );    
+    TBool retMe( EFalse );
+
+    IRLOG_DEBUG2( "CIRFilteredApReader::FilterWAPOnlyL - Service type %S", &iIapRecord->iServiceType.GetL() );
+    if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 )
+        {
+        CCDDialOutISPRecord* dialOutRecord = static_cast<CCDDialOutISPRecord*>( 
+                    CCDRecordBase::RecordFactoryL( KCDTIdDialOutISPRecord ) );
+        CleanupStack::PushL( dialOutRecord );
+        dialOutRecord->SetRecordId( iIapRecord->iService );
+        dialOutRecord->LoadL( *iDbSession );
+        if ( dialOutRecord->iType != EIspTypeWAPOnly )
+            {
+            retMe = ETrue;
+            }
+        CleanupStack::PopAndDestroy( dialOutRecord );
+        }
+    else if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 )
+        {
+        CCDWCDMAPacketServiceRecord* gprsRecord = static_cast<CCDWCDMAPacketServiceRecord*>( 
+                CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        CleanupStack::PushL( gprsRecord );
+        gprsRecord->SetRecordId( iIapRecord->iService );
+        gprsRecord->LoadL( *iDbSession );
+        if ( gprsRecord->iGPRSAPType != EIspTypeWAPOnly )
+            {
+            retMe = ETrue;
+            }
+        CleanupStack::PopAndDestroy( gprsRecord );
+        }
+//    else if ( iIapRecord->iServiceType.GetL().Compare( 
+//    TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 )
+//        {
+//        CCDCDMA2000PacketServiceRecord* cdmaRecord = static_cast<CCDCDMA2000PacketServiceRecord*>(
+//        CCDRecordBase::RecordFactoryL( KCDTIdCDMA2000PacketServiceRecord ) );
+//        CleanupStack::PushL( cdmaRecord );
+//        cdmaRecord->SetRecordId( iIapRecord->iService );
+//        cdmaRecord->LoadL( *iDbSession );
+//        if ( cdmaRecord->iApType != EIspTypeWAPOnly )
+//            {
+//            retMe = ETrue;
+//            }
+//        CleanupStack::PopAndDestroy( cdmaRecord );
+//        }
+    else
+        {
+        retMe = ETrue;
+        }
+    
+    IRLOG_INFO3( "CIRFilteredApReader::FilterWAPOnlyL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );    
+    return retMe; 
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFilteredApReader::FilterEasyWlanL
+// ---------------------------------------------------------------------------
+//
+TBool CIRFilteredApReader::FilterEasyWlanL() const
+    {
+    IRLOG_DEBUG( "CIRFilteredApReader::FilterEasyWlanL - Entering" );    
+    TBool retMe( EFalse );
+    if ( iIapRecord->iRecordName.GetL().Compare( KEasyWLAN ) != 0 )
+        {
+        retMe = ETrue;
+        }
+    IRLOG_INFO3( "CIRFilteredApReader::FilterEasyWlanL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );    
+    return retMe;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/src/irnetworkcontroller.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1181 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#include <centralrepository.h>
+#include <commsdattypesv1_1.h>
+#include <commdb.h>
+#include <commdbconnpref.h>
+#include <featdiscovery.h>
+#include <features.hrh>
+#include <ProfileEngineSDKCRKeys.h>
+#include <httpstringconstants.h>
+#include <StringLoader.h>
+#include <data_caging_path_literals.hrh>
+#include <extendedconnpref.h>
+
+#include "irdebug.h"
+#include "irfilteredapreader.h"
+#include "irnetworkcontroller.h"
+#include "irnetworkobserver.h"
+#include "irsettings.h"
+#include "iractivenetworkobserver.h"
+
+const TInt KMaxIRUAProfLength = 250; // Max length of the UAProf string
+const TInt KIRDefaultUAProfBufferSize = 0x80;
+const TUint KIRESockMessageSlots = 16;
+const TInt KArraySize = 5;
+const TInt KWlanStringMaxLength = 9;
+const TInt KTwo = 2;
+
+// ---------------------------------------------------------------------------
+//  define in WebUtilsSDKCRKeys.h
+// ---------------------------------------------------------------------------
+//
+const TUid KCRUidWebUtils = {0x101F8731};//Web APIs removal and Internet Radio build break
+
+// ---------------------------------------------------------------------------
+// define in WebUtilsInternalCRKeys.h
+// ---------------------------------------------------------------------------
+//
+// Compatability fragment of useragent string
+const TUint32 KWebUtilsUsrAg2 =	0x00000001;
+
+// PlatformVersion fragment of useragent string
+const TUint32 KWebUtilsUsrAg3 =	0x00000002;
+
+// MidPVersion fragment of useragent string
+const TUint32 KWebUtilsUsrAg4 =	0x00000003;
+
+// CLDConfiguration fragment of useragent string
+const TUint32 KWebUtilsUsrAg5 =	0x00000004;
+
+// Url to useragent profile
+const TUint32 KWebUtilsUaProf =	0x00000008;
+// To Format the UAProf string
+_LIT( KIRUAProfSpace," " );
+// WLan ( generic ) name string
+_LIT( KIRWLanName,"Easy WLAN" );
+
+
+// -----------------------------------------------------------------------------------------------
+//  Creates an Instance of CIRNetworkController
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C CIRNetworkController* CIRNetworkController::OpenL( MIRNetworkController* aObserver )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::OpenL - Entering" );
+    CIRNetworkController* networkController = reinterpret_cast<CIRNetworkController*>( Dll::Tls() );
+
+    if ( !networkController )
+        {
+        networkController = new ( ELeave ) CIRNetworkController;
+        CleanupClosePushL( *networkController );
+        networkController->iSingletonInstances = 1;
+        networkController->ConstructL( aObserver );
+        User::LeaveIfError( Dll::SetTls( networkController ) );
+        networkController->iSingletonInstances = 0;
+        CleanupStack::Pop( networkController );
+        }
+    networkController->iSingletonInstances++;
+    if ( NULL != aObserver )
+        {
+        networkController->iObserver = aObserver;
+        networkController->iIRNetworkObserver->SetObserver( aObserver );
+        }
+    IRLOG_DEBUG( "CIRNetworkController::OpenL - Exiting." );
+    return networkController;
+    }
+
+// -----------------------------------------------------------------------------------------------
+// Conditionally destroys the IRNetworkController object
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::Close()
+    {
+    IRLOG_DEBUG2( "CIRNetworkController::Close - singleton instances=%d", iSingletonInstances );
+    iSingletonInstances--;
+
+    if ( iSingletonInstances == 0 )
+        {
+        delete this;
+        }
+    IRLOG_DEBUG( "CIRNetworkController::Close - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::GetIRConnection
+//  Returns the instance of RConnection
+//  The same RConnection object is used across the entire iRAPP components to
+//  provide central arbiter and monitoring of Network Connection
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C RConnection& CIRNetworkController::GetIRConnection()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetIRConnection - Entering" );
+    // If the RConnection is open return the reference
+    switch ( iNetworkConnectionState )
+        {
+        case EIRNetworkConnectionActive:
+            {
+            // Connection is active and ready to use return the reference
+            return ( *iIRNetworkConnection );
+            }
+        case EIRNetworkConnectionInActive:
+            {
+            // Connection is not active and application cannot continue hence panic
+            _LIT( KComponentName,"NetworkController" );
+            User::Panic( KComponentName,KErrCouldNotConnect );
+            }
+        break;
+        default:
+            {
+            // no implementation
+            }
+        break;
+        }
+    // Inserted to remove the compiler warning
+    IRLOG_DEBUG( "CIRNetworkController::GetIRConnection - Exiting." );
+    return ( *iIRNetworkConnection );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::GetIRSocketServer
+//  Returns the instance of RSocketServ
+//  The same RSocketServ object is used across the entire iRAPP components to
+//  provide central arbiter and monitoring of Network Connection
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C RSocketServ& CIRNetworkController::GetIRSocketServer()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetIRSocketServer - Entering" );
+    switch ( iSocketServerConnectionState )
+        {
+        case EIRSocketServerActive:
+            {
+            // Connection to Socket Server is active hence return the reference
+            return iIRSocketServer;
+            }
+        case EIRSocketServerInActive:
+            {
+            // Connection to Socket Server not open hence open and return the reference
+            // Connection is not active and application cannot continue hence panic
+            _LIT( KComponentName,"NetworkController" );
+            User::Panic( KComponentName,KErrCouldNotConnect );
+            }
+        break;
+        default:
+        {
+            // no implemenatation
+        }
+        break;
+        }
+    // Inserted to remove the compiler warning
+    IRLOG_DEBUG( "CIRNetworkController::GetIRSocketServer - Exiting." );
+    return iIRSocketServer;
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::GetWapProfString
+//  Returns a HBufC pointer to the x-wap-profile string
+//  Transfers the ownership of the returned HBufC8 object
+//  The caller must takecare of deleting the returned object
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CIRNetworkController::GetWapProfString()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetWapProfString" );
+    return iIRWapProf;
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::GetUAProfString
+//  Returns a HBufC pointer to the UAProf string
+//  Transfers the ownership of the returned HBufC8 object
+//  The caller must takecare of deleting the returned object
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CIRNetworkController::GetUAProfString()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetUAProfString" );
+    return iIRUAProf;
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::GetNetworkStatus
+//  Returns the variable which indicates if connection is active or not
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRNetworkController::GetNetworkStatus() const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetNetworkStatus" );
+    return iIsConnectedToNetwork;
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::GetIAPId
+// Gets the IAP Id of the chosen IAP
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRNetworkController::GetIAPId( TUint32& aIapId ) const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::GetIAPId - Entering" );
+    TInt retVal( KErrNone );
+    if ( iIsConnectedToNetwork )
+        {
+        if ( iIRNetworkObserver->iIsIAPIdAvailable )
+            {
+            aIapId = iIRNetworkObserver->iIAPId;
+            }
+        }
+    else
+        {
+        retVal = KErrNotFound;
+        }
+    IRLOG_DEBUG( "CIRNetworkController::GetIAPId - Exiting." );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+//  CIRNetworkController::ChooseAccessPointL
+//  Configures the Access Point which is used by all the components for network
+//  connectivity
+// ---------------------------------------------------------------------------
+//
+
+
+EXPORT_C void CIRNetworkController::ChooseAccessPointL(TBool aDefaultConnection)
+    {
+    IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Entering" );
+    if (iHandingOver)
+        {
+        if (iObserver)
+            {
+            iObserver->IRNetworkEventL(ENetworkConnectionConnecting);
+            }
+        IRLOG_DEBUG("CIRNetworkController::ChooseAccessPointL, ALR is handing over, Exiting");
+        return;
+        }
+    
+    iIRNetworkObserver->SetNetworkMonitoring( ETrue );
+    iDefaultConnection = aDefaultConnection;
+    
+    // Always validate the Access Points status
+    if ( ValidateAccessPointsL() )
+        { 
+        if ( NULL != iMobility )
+		    {
+            iMobility->Cancel();
+            delete iMobility;
+            iMobility = NULL;
+            }
+            // Connect to the Symbian Socket Server
+        iIRNetworkConnection->Close();
+        iIRSocketServer.Close();
+        TInt ReturnErrorCode = iIRSocketServer.Connect( KIRESockMessageSlots );
+
+        if(ReturnErrorCode != KErrNone )
+            {
+            // Error in opening the connection to SocketServer
+            iSocketServerConnectionState = EIRSocketServerInActive;
+            IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting ( 1 )." );
+            return ;
+            }
+        
+        // Connection to RSocketServ is sucessful
+        iSocketServerConnectionState = EIRSocketServerActive;
+
+        // Open the RConnection over the iIRSocketServer
+        ReturnErrorCode = iIRNetworkConnection->Open(iIRSocketServer);
+
+        if( ReturnErrorCode != KErrNone )
+            {
+            // Error in opening the connection
+            iNetworkConnectionState = EIRNetworkConnectionInActive;
+            IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting ( 2 )." );
+            return ;
+            }
+
+        //Added for ALR/SNAP
+        if ( !IsActive() )
+            {
+            if (iDefaultConnection)
+                {
+                TConnPrefList prefList;
+                TExtendedConnPref extPrefs;
+
+                extPrefs.SetSnapPurpose(CMManager::ESnapPurposeInternet);
+                extPrefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnDisableNotes);
+                prefList.AppendL(&extPrefs);
+                iIRNetworkConnection->Start(prefList, iStatus);
+                }
+            else
+                {
+                TCommDbConnPref connPref;
+                connPref.SetDialogPreference(ECommDbDialogPrefPrompt);
+                iIRNetworkConnection->Start(connPref, iStatus) ;
+                }
+            
+            // Set the NetworkController state
+            iNetworkControllerState = EConnectingToNetwork;
+
+            SetActive();
+            iIsConnectRequestIssued = ETrue;
+            if ( iObserver )
+                {
+                IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - notify ENetworkConnectionConnecting" );
+                iObserver->IRNetworkEventL( ENetworkConnectionConnecting );
+                }
+            }
+        IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting ( 3 )." );
+        return ;
+        }
+    else
+        {
+        iObserver->IRNetworkEventL(EAccessPointSelectionCancelled );
+        }
+    IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting ( 4 )." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::CancelConnecting
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::CancelConnecting()
+    {
+    IRLOG_DEBUG("CIRNetworkController::CancelConnecting(), Entering");
+    iIRNetworkObserver->Cancel();
+    Cancel();
+    ResetConnectionStatus();
+    IRLOG_DEBUG("CIRNetworkController::CancelConnecting(), Exiting");
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::IsOfflineMode
+//  This api is used to determine if the phone is in offline mode
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRNetworkController::IsOfflineMode()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode" );
+    // System defined value for offline mode is 5
+    const TInt KOfflineMode = 5;
+    TInt returnValue = 0;
+    returnValue = DetermineCurrentProfile();
+    if ( returnValue == KOfflineMode )
+        {
+        IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode - Exiting ( 1 )." );
+        return ETrue;            
+        }
+    IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode - Exiting ( 2 )." );
+    return EFalse;    
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::IsWlanSupported
+//  This api is used to determine if the phone supports WLan usage
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRNetworkController::IsWlanSupported() const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::IsWlanSupported" );
+    return iIsWlanSupported;
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::ResetConnectionStatus
+//  Reset the connection status to Disconnected statet
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::ResetConnectionStatus()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::ResetConnectionStatus - Entering" );
+    iIsConnectRequestIssued = EFalse;
+    iNetworkConnectionState = EIRNetworkConnectionInActive;
+    iIsConnectedToNetwork = EFalse;
+    iConnectionPresent = EFalse;
+    IRLOG_DEBUG( "CIRNetworkController::ResetConnectionStatus - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::IdentifyConnectionType
+// Used to determine the type of connection
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C TIRConnectionType CIRNetworkController::IdentifyConnectionType() const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::IdentifyConnectionType" );
+    IRRDEBUG2( "CIRNetworkController::IdentifyConnectionType - Entering iConnectionType = %d", iIRNetworkObserver->iIRConnectionType );
+
+    return iIRNetworkObserver->iIRConnectionType;
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::DetermineCurrentProfile
+// Used to determine the current profile
+// -----------------------------------------------------------------------------------------------
+//
+TInt CIRNetworkController::DetermineCurrentProfile() const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::DetermineCurrentProfile" );
+    TInt value = KErrNone;
+
+    TRAPD( err,
+    CRepository* cRepositoryHandle = CRepository::NewLC( KCRUidProfileEngine );
+    cRepositoryHandle->Get( KProEngActiveProfile,value );
+    CleanupStack::PopAndDestroy( cRepositoryHandle ); )
+    if ( err != KErrNone )
+        {
+        value = err;
+        }
+
+    IRLOG_DEBUG( "CIRNetworkController::DetermineCurrentProfile - Exiting." );
+    return value;
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::CheckFeatureL
+// Pops up the access point list.
+// -----------------------------------------------------------------------------------------------
+//
+TBool CIRNetworkController::CheckFeatureL( TInt aFeatureId ) const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::CheckFeatureL" );
+    return CFeatureDiscovery::IsFeatureSupportedL( aFeatureId );
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::CIRNetworkController
+// Default C++ Constructor
+// -----------------------------------------------------------------------------------------------
+//
+CIRNetworkController::CIRNetworkController(): CActive(
+    CActive::EPriorityHigh )
+    {
+    // Add the AO to the ActiveScheduler
+    IRLOG_DEBUG( "CIRNetworkController::CIRNetworkController- Entering" );
+    CActiveScheduler::Add( this );
+    // Initialize the states
+    iNetworkConnectionState = EIRNetworkConnectionInActive;
+    iSocketServerConnectionState = EIRSocketServerInActive;
+    iNetworkControllerState = EInActive;
+    
+
+    IRLOG_DEBUG( "CIRNetworkController::CIRNetworkController - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::~CIRNetworkController
+//  Default C++ Destructor
+// -----------------------------------------------------------------------------------------------
+//
+CIRNetworkController::~CIRNetworkController()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::~CIRNetworkController- Entering" );
+    _LIT( KErrorMsg,"Method Close not called" );
+    __ASSERT_ALWAYS( iSingletonInstances == 0, User::Panic( KErrorMsg, KErrCorrupt ) );
+
+    if ( NULL != iMobility )
+        {
+        iMobility->Cancel();
+        delete iMobility;
+        iMobility = NULL;
+        }
+
+    if ( IsActive() )
+        {
+        Cancel();
+        }
+    if ( iIRNetworkConnection )
+        {
+        iIRNetworkConnection->Close();
+        delete iIRNetworkConnection;
+        }
+
+    // Set all the state variables to indicate network connection is closed
+    delete iIRUAProf;
+    delete iIRWapProf;
+    if ( iIRSettings )
+        {
+        iIRSettings->Close();
+        iIRSettings = NULL;
+        }
+    delete iIRNetworkObserver;
+    iIRSocketServer.Close();
+
+    if ( iIapList )
+        {
+        iIapList->Reset();
+        delete iIapList;
+        iIapList = NULL;
+        }
+
+    if ( iDataTransferTracker )
+        {
+        delete iDataTransferTracker;
+        iDataTransferTracker = NULL;
+        }
+    if ( iLogoDataTransferTracker )
+        {
+        delete iLogoDataTransferTracker;
+        iLogoDataTransferTracker = NULL;
+        }
+    iObserver = NULL;
+    
+    iActiveNetworkObserverArray.Close();
+
+    Dll::FreeTls();
+    IRLOG_DEBUG( "CIRNetworkController::~CIRNetworkController - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::ConstructL
+//  Second Phase construction.
+//    aObserver pointer to the observer class if an observer is needed
+// -----------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::ConstructL( MIRNetworkController* aObserver )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::ConstructL- Entering" );
+    iObserver = aObserver;
+    iIRNetworkObserver = CIRNetworkObserver::NewL(this);
+    iIRNetworkObserver->SetObserver( iObserver );
+
+    // Create instance of DataTransferTracker ( Byte Counter Impl )
+    iDataTransferTracker = CIRDataTransferTracker::NewL();
+    iLogoDataTransferTracker = CIRDataTransferTracker::NewL();
+
+    iIRNetworkConnection = new ( ELeave ) RConnection;
+    
+    iIRSettings = CIRSettings::OpenL();
+
+    BuildUAProfStringL();
+    iIapList = new ( ELeave ) CDesCArrayFlat( KArraySize );
+
+    QueryCommsForIAPL();
+
+    IRLOG_DEBUG( "CIRNetworkController::ConstructL - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::QueryCommsForIAPL
+//  Determines the available access points using CommsDat Api
+//  voilates PCLint Error 40 --Undeclared identifier 'KFeatureIdProtocolWlan'
+//  as defined in featureinfo.h
+// -----------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::QueryCommsForIAPL()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::QueryCommsForIAPL- Entering" );
+
+    // Reset all the comms info
+    iIapList->Reset();
+    
+#ifndef __WINS__
+    CIRFilteredApReader* filteredReader = CIRFilteredApReader::
+    NewLC( CIRFilteredApReader::KIRFilterWAPOnly |
+            CIRFilteredApReader::KIRFilterWAPMandatory |
+            CIRFilteredApReader::KIRFilterEasyWLAN );
+
+    CCDIAPRecord* iapRecord = filteredReader->FirstRecordL();
+
+    while ( iapRecord )
+    {
+        CleanupStack::PushL( iapRecord );
+
+        iIapList->AppendL( iapRecord->iRecordName.GetL() );
+
+        CleanupStack::PopAndDestroy( iapRecord );
+        iapRecord = filteredReader->NextRecordL();
+    }
+    CleanupStack::PopAndDestroy( filteredReader );
+#else
+    CMDBSession* dbSession = CMDBSession::NewL(CMDBSession::LatestVersion());
+    CleanupStack::PushL(dbSession);
+
+    CMDBRecordSet<CCDIAPRecord>* iapSet = new (ELeave) CMDBRecordSet<
+            CCDIAPRecord> (KCDTIdIAPRecord);
+    CleanupStack::PushL(iapSet);
+
+    TRAP_IGNORE(iapSet->LoadL(*dbSession));
+    
+    for ( TInt i = 0; i < iapSet->iRecords.Count(); i++ )
+        {
+        CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*> (iapSet->iRecords[i]);
+        iIapList->AppendL(iapRecord->iRecordName.GetL());
+        }
+    CleanupStack::PopAndDestroy(2, dbSession);
+#endif
+    
+    // If WLan is supported on the device then add the WLan option
+    // to the IAP List
+#ifndef __WINS__
+    iIsWlanSupported = CheckFeatureL( KFeatureIdProtocolWlan );
+    if ( iIsWlanSupported )
+        {
+        TBuf<KWlanStringMaxLength> wlanString;
+        wlanString.Copy( KIRWLanName );
+        iIapList->AppendL( wlanString );
+        }
+#endif
+
+    iIapList->Compress();
+
+    IRLOG_DEBUG( "CIRNetworkController::QueryCommsForIAPL - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::BuildUAProfStringL
+// Queries the system and extracts the UAProf information
+//  Used by IRDataProvider and IRStreamSource
+// -----------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::BuildUAProfStringL()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::BuildUAProfStringL- Entering" );
+    // Create space on heap for the UAProf String
+    iIRUAProf = HBufC8::NewL( KMaxIRUAProfLength );
+    iIRWapProf = HBufC8::NewL( KMaxIRUAProfLength );
+    HBufC* cenRepPtr;
+    TPtr8 irUAProf = iIRUAProf->Des();
+    TPtr8 irWapProf = iIRWapProf->Des();
+    irUAProf.Append( iIRSettings->GetIrappVersionL() );
+
+    cenRepPtr = NULL;
+    irUAProf.Append( KIRUAProfSpace );
+    // extract UAProf sub-string from cenrep
+    cenRepPtr = CentralRepositoryStringValueL( KCRUidWebUtils,KWebUtilsUsrAg3 );
+    // append it to form the UAProf
+    irUAProf.Append( cenRepPtr->Des() );
+    delete cenRepPtr;
+    cenRepPtr = NULL;
+
+    irUAProf.Append( KIRUAProfSpace );
+    // extract UAProf sub-string from cenrep
+    cenRepPtr = CentralRepositoryStringValueL( KCRUidWebUtils,KWebUtilsUsrAg2 );
+    // append it to form the UAProf
+    irUAProf.Append( cenRepPtr->Des() );
+    delete cenRepPtr;
+    cenRepPtr = NULL;
+
+    irUAProf.Append( KIRUAProfSpace );
+    // extract UAProf sub-string from cenrep
+    cenRepPtr = CentralRepositoryStringValueL( KCRUidWebUtils,KWebUtilsUsrAg4 );
+    // append it to form the UAProf
+    irUAProf.Append( cenRepPtr->Des() );
+    delete cenRepPtr;
+    cenRepPtr = NULL;
+
+    irUAProf.Append( KIRUAProfSpace );
+    // extract UAProf sub-string from cenrep
+    cenRepPtr = CentralRepositoryStringValueL( KCRUidWebUtils,KWebUtilsUsrAg5 );
+    // append it to form the UAProf
+    irUAProf.Append( cenRepPtr->Des() );
+    delete cenRepPtr;
+    cenRepPtr = NULL;
+    // trim out the quotes
+    irUAProf.Delete( irUAProf.Length()-1,1 );
+     // extract x-wap-profile string from cenrep
+    cenRepPtr = CentralRepositoryStringValueL( KCRUidWebUtils,KWebUtilsUaProf );
+    // append it to form the UAProf
+    irWapProf.Copy( cenRepPtr->Des() );
+    delete cenRepPtr;
+    cenRepPtr = NULL;
+
+    IRLOG_DEBUG( "CIRNetworkController::BuildUAProfStringL - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::CentralRepositoryStringValueL
+// Retrievs the string from Central Repository for the specified key and cen rep uid
+// Transfers the ownership of the returned HBufC object
+// The caller must takecare of deleting the returned object*
+// -----------------------------------------------------------------------------------------------
+//
+HBufC* CIRNetworkController::CentralRepositoryStringValueL(
+    const TUid& aRepositoryUid, TUint32 aKey ) const
+    {
+    IRLOG_DEBUG( "CIRNetworkController::CentralRepositoryStringValueL- Entering" );
+    CRepository* pRepository = CRepository::NewL( aRepositoryUid );
+    CleanupStack::PushL( pRepository );
+
+    TInt length = KIRDefaultUAProfBufferSize;
+    HBufC* valueString = HBufC::NewLC( length );
+    TInt error( KErrTooBig );
+    do
+        {
+        TPtr ptr = valueString->Des();
+        error = pRepository->Get( aKey, ptr );
+        if ( error == KErrTooBig )
+            {
+            CleanupStack::PopAndDestroy( valueString );
+            length = KTwo * length;
+            valueString = HBufC::NewLC( length );
+            }
+        } while ( error == KErrTooBig );
+
+    if ( error )
+        {
+        TPtr ptr = valueString->Des();
+        ptr.Copy( KNullDesC() );
+        }
+
+    CleanupStack::Pop( valueString );
+    CleanupStack::PopAndDestroy( pRepository );
+    IRLOG_DEBUG( "CIRNetworkController::CentralRepositoryStringValueL - Exiting." );
+    return valueString;
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::ValidateAccessPointsL(
+//  Validates the access point availablity etc.
+//  voilates PCLint Error 40 --Undeclared identifier 'KFeatureIdProtocolWlan'
+//  as defined in featureinfo.h
+// -----------------------------------------------------------------------------------------------
+//
+TBool CIRNetworkController::ValidateAccessPointsL()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::ValidateAccessPointsL- Entering" );
+    TBool status = ETrue;
+    #ifndef __WINS__
+        // Check if the phone is in offline mode
+        // If yes, do not allow GPRS access
+        // If phone is in offline mode and device does not support
+        // WIFI then exit the application
+        // Do not make this check in Wins
+        //violates PC Lint error : Error 40: Undeclared identifier KFeatureIdProtocolWlan
+        if ( IsOfflineMode() && !( CheckFeatureL( KFeatureIdProtocolWlan) ) )
+            {
+            // The phone is in offline mode and WLan is not available
+            iObserver->IRNetworkEventL( EDisplayOfflineMode );
+            status = EFalse;
+            }
+        // If phone is not in offline mode and no access points are defined
+        // check if device has WIFI support then try to launch WIFI
+        // selection if there is no support then display a message
+        if ( !IsOfflineMode() && iIapList->MdcaCount() == 0 )
+            {
+            // Check if there is WIFI support
+            //violates PC Lint error : Error 40: Undeclared identifier KFeatureIdProtocolWlan
+            if ( !CheckFeatureL( KFeatureIdProtocolWlan ) )
+                {
+                iObserver->IRNetworkEventL( EDisplayNoAccessPointsDefined );
+                status = EFalse;
+                }
+            }
+    #endif
+    IRLOG_DEBUG( "CIRNetworkController::ValidateAccessPointsL - Exiting." );
+    return status;
+    }
+
+// Derived from CActive
+// -----------------------------------------------------------------------------------------------
+// CIRNetworkController::RunL
+// The function is called by the active scheduler when a request completion event occurs,
+// -----------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::RunL()
+    {
+    IRLOG_INFO2( "CIRNetworkController::RunL - iStatus=%d", iStatus.Int() );
+    iHandingOver = EFalse;
+    
+    TInt statusCode = iStatus.Int();
+
+    if ( iStatus == KErrNone )
+        {
+        HandleRunLSuccessL();
+    }
+    else
+        {
+        HandleRunLErrorL( statusCode );
+        }
+    IRLOG_DEBUG( "CIRNetworkController::RunL - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------------------------
+//  CIRNetworkController::DoCancel()
+//  Cancels the pending requests on the CIRNetworkController Active object
+// -----------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::DoCancel()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::DoCancel - Entering" );
+    if ( NULL != iMobility )
+        {
+        iMobility->Cancel();
+        delete iMobility;
+        iMobility = NULL;
+        }
+    iIRNetworkConnection->Stop();
+    iIRNetworkConnection->Close();
+    iIRSocketServer.Close();
+    IRLOG_DEBUG( "CIRNetworkController::DoCancel - Exiting." );
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::InitializeHttpSession
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::InitializeHttpSessionL( const RHTTPSession& aHTTPSession, 
+                                            MIRDataTransferTracker::TIRTransferCategory aCategory )
+    {
+    IRLOG_DEBUG( "CVRConnection::InitializeHttpSessionL - enter" );
+
+    iDataTransferTracker->BindL( aHTTPSession, aCategory );
+
+    RStringF sockserv = aHTTPSession.StringPool().StringF(
+            HTTP::EHttpSocketServ, RHTTPSession::GetTable());
+    CleanupClosePushL( sockserv );
+
+    RStringF connection = aHTTPSession.StringPool().StringF(
+            HTTP::EHttpSocketConnection, RHTTPSession::GetTable());
+    CleanupClosePushL( connection );
+
+    RHTTPConnectionInfo cInfo = aHTTPSession.ConnectionInfo();
+    cInfo.SetPropertyL( sockserv, THTTPHdrVal( iIRSocketServer.Handle() ) );
+    cInfo.SetPropertyL(connection, THTTPHdrVal(
+            reinterpret_cast<TInt> (iIRNetworkConnection)));
+    CleanupStack::PopAndDestroy( &connection ); // sockserv.close, connection.close
+    CleanupStack::PopAndDestroy( &sockserv ); // sockserv.close, connection.close
+    
+    IRLOG_DEBUG( "CIRNetworkController::InitializeHttpSessionL - exit" );
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::RegisterLogoDataTransferTrackerL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::RegisterLogoDataTransferTrackerL( RHTTPSession& aHTTPSession )
+    {
+    IRLOG_DEBUG( "CVRConnection::InitializeHttpSessionL - enter" );
+
+    iLogoDataTransferTracker->BindL(aHTTPSession,
+            MIRDataTransferTracker::EIRTransferCategoryIsds);
+
+    RStringF sockserv = aHTTPSession.StringPool().StringF(
+            HTTP::EHttpSocketServ, RHTTPSession::GetTable());
+    CleanupClosePushL( sockserv );
+
+    RStringF connection = aHTTPSession.StringPool().StringF(
+            HTTP::EHttpSocketConnection, RHTTPSession::GetTable());
+    CleanupClosePushL( connection );
+
+    RHTTPConnectionInfo cInfo = aHTTPSession.ConnectionInfo();
+    cInfo.SetPropertyL( sockserv, THTTPHdrVal( iIRSocketServer.Handle() ) );
+    cInfo.SetPropertyL(connection, THTTPHdrVal(
+            reinterpret_cast<TInt> (iIRNetworkConnection)));
+    CleanupStack::PopAndDestroy( &connection ); // sockserv.close, connection.close
+    CleanupStack::PopAndDestroy( &sockserv ); // sockserv.close, connection.close    
+
+    // Subscribe to logo byte counter info
+    iLogoDataTransferTracker->SetObserver( this );
+
+    IRLOG_DEBUG( "CIRNetworkController::RegisterLogoDataTransferTrackerL - exit" );
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::DataTransferTracker()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MIRDataTransferTracker& CIRNetworkController::DataTransferTracker()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::DataTransferTracker" );
+    return *iDataTransferTracker;
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::LogoDataTransferTracker()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MIRDataTransferTracker& CIRNetworkController::LogoDataTransferTracker()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::LogoDataTransferTracker" );
+    return *iLogoDataTransferTracker;
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::LogoDataTransferTracker()
+// -----------------------------------------------------------------------------
+//
+void CIRNetworkController::HandleDataTransferEventL( 
+        const MIRDataTransferTracker::TIRDataTransferPckg& aData )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::HandleDataTransferEventL - Entering" );
+    iDataTransferTracker->RawDataTransferredL(aData.iBytesSentTotal,
+            aData.iBytesReceivedTotal,
+                                        MIRDataTransferTracker::EIRTransferCategoryIsds );
+    IRLOG_DEBUG( "CIRNetworkController::HandleDataTransferEventL - Exiting" );
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::PreferredCarrierAvailable()
+// -----------------------------------------------------------------------------
+//
+void CIRNetworkController::PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
+                                            TAccessPointInfo aNewAPInfo,
+                                            TBool aIsUpgrade,
+                                            TBool aIsSeamless )
+    {
+    IRLOG_DEBUG("CIRNetworkController::PreferredCarrierAvailable - Entering");
+
+    (void)aOldAPInfo;
+    (void)aNewAPInfo;
+    (void)aIsUpgrade;
+    IRLOG_DEBUG5("CIRNetworkController::PreferredCarrierAvailable, old ap : %d, new ap : %d, aIsUpgrade : %d, aIsSeamless : %d", 
+                 aOldAPInfo.AccessPoint(), aNewAPInfo.AccessPoint(), aIsUpgrade, aIsSeamless);
+    
+    if (aIsSeamless)
+        {
+        // It is Seamless. E.g. Mobile IP enabled.
+        }
+    else
+        {
+        // sockets used by the connection should be closed here.
+
+        // We ask to migrate to the Preferred Carrier.
+        if (!IsOfflineMode())
+            {
+            //handling over connection may take some time, during handling over connection,
+            //application should be in disconnected state
+            TRAP_IGNORE( iObserver->IRNetworkEventL(ENetworkConnectionDisconnected ); )
+            
+            iIRNetworkObserver->SetNetworkMonitoring(EFalse);
+            
+            iMobility->MigrateToPreferredCarrier();
+            iHandingOver = ETrue;
+            }
+        }
+
+    IRLOG_DEBUG("CIRNetworkController::PreferredCarrierAvailable - Exiting");
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::NewCarrierActive()
+// -----------------------------------------------------------------------------
+//
+void CIRNetworkController::NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless )
+    {
+    IRLOG_DEBUG("CIRNetworkController::NewCarrierActive - Entering");
+    (void)aNewAPInfo;
+    IRLOG_DEBUG3("CIRNetworkController::NewCarrierActive, new ap : %d, aIsSeamless : %d",
+                 aNewAPInfo.AccessPoint(), aIsSeamless);
+    
+    if (aIsSeamless)
+        {
+        // It is Seamless. E.g. Mobile IP enabled.
+        }
+    else
+        {
+        // sockets used by the connection should be re-opened here.
+        // We accept the new IAP.
+
+        iMobility->NewCarrierAccepted();
+
+        iIsConnectRequestIssued = EFalse;
+        iNetworkConnectionState = EIRNetworkConnectionActive;
+        iIsConnectedToNetwork = ETrue;
+        iConnectionPresent = ETrue;
+        
+        iIRNetworkObserver->SetNetworkMonitoring(ETrue);
+        iIRNetworkObserver->InitializeNetworkObserver();    
+        }
+
+    IRLOG_DEBUG("CIRNetworkController::NewCarrierActive - Exiting");
+    }
+
+// -----------------------------------------------------------------------------
+// CIRNetworkController::Error()
+// -----------------------------------------------------------------------------
+//
+void CIRNetworkController::Error( TInt /*aError*/ )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::Error" );
+    // Does nothing for the moment
+    }
+    
+// -----------------------------------------------------------------------------
+// HandleRunLSuccessL()
+// Handles the success case of Network connection in RunL
+// -------------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::HandleRunLSuccessL()
+    {
+    IRLOG_DEBUG( "CIRNetworkController::HandleRunLSuccessL - Entering" );
+        
+    switch ( iNetworkControllerState )
+        {
+        case EConnectingToNetwork:
+            {
+            iIsConnectedToNetwork = ETrue;
+            // Connection to network sucessful
+            iNetworkConnectionState = EIRNetworkConnectionActive;
+            iConnectionPresent = ETrue;
+            iIsConnectRequestIssued = EFalse;
+            iIRNetworkObserver->InitializeNetworkObserver();
+            }
+            break;
+        default:
+            {
+            // no implementation
+            }
+            break;
+        }
+
+    if ( !iMobility  )
+        {
+        iMobility = CActiveCommsMobilityApiExt::NewL( *iIRNetworkConnection,
+                *this );
+        }
+    IRLOG_DEBUG( "CIRNetworkController::HandleRunLSuccessL - Exiting" );
+    }
+
+// -------------------------------------------------------------------------------------------------
+// HandleRunLErrorL()
+// Handles the error case of Network connection in RunL
+// -------------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::HandleRunLErrorL( TInt aStatusCode )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::HandleRunLErrorL - Entering" );
+    
+    switch ( iNetworkControllerState )
+        {
+        case EConnectingToNetwork:
+            {
+            // Connection to network failure
+            iNetworkConnectionState = EIRNetworkConnectionInActive;
+            iIsConnectedToNetwork = EFalse;
+            iConnectionPresent = EFalse;
+            iIsConnectRequestIssued = EFalse;
+            if ( aStatusCode != KErrCancel )
+                {
+                if (iDefaultConnection)
+                    {
+                    //give user the second chance to select access point manually
+                    ChooseAccessPointL(EFalse);
+                    }
+                else
+                    {
+                    iObserver->IRNetworkEventL(EDisplayNetworkMessageNoConnectivity);
+                    }
+                }
+            else
+                {
+                iObserver->IRNetworkEventL( EAccessPointSelectionCancelled );
+                ResetPendingRequests( EFalse );
+                }
+            }
+            break;
+        
+        default:
+            {
+            // no implementation
+            }
+            break;
+        }
+
+    IRLOG_DEBUG( "CIRNetworkController::HandleRunLErrorL - Exiting" );
+    }
+
+// -------------------------------------------------------------------------------------------------
+// Registers the observer that will be notified for 
+// a network connection.
+// Observer requires notification to reissue pending request
+// -------------------------------------------------------------------------------------------------
+//  
+EXPORT_C void CIRNetworkController::RegisterActiveNetworkObserverL( MIRActiveNetworkObserver&
+                                                                     aActiveNetworkObserver )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::RegisterActiveNetworkObserverL - Entering" );
+    iActiveNetworkObserverArray.AppendL( &aActiveNetworkObserver );
+    IRLOG_DEBUG( "CIRNetworkController::RegisterActiveNetworkObserverL - Exiting" );
+    }
+
+// -----------------------------------------------------------------------------------------------
+// DeleteActiveNetworkObserver()
+// Used to remove an observer for roaming events from the observer array
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::DeleteActiveNetworkObserver( MIRActiveNetworkObserver&
+                                                                 aActiveNetworkObserver )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::DeleteActiveNetworkObserver - Entering" );
+    TInt index = iActiveNetworkObserverArray.Find( &aActiveNetworkObserver );
+    
+    if ( index != KErrNotFound )
+        {
+        iActiveNetworkObserverArray.Remove( index );    
+        }
+
+    IRLOG_DEBUG( "CIRNetworkController::DeleteActiveNetworkObserver - Exiting" );
+    }
+    
+// -----------------------------------------------------------------------------------------------
+// NotifyActiveNetworkObserversL()
+// Used to notify all observers for network events about a change in network event
+// -----------------------------------------------------------------------------------------------
+//
+EXPORT_C void CIRNetworkController::NotifyActiveNetworkObserversL( TIRNetworkEvent aEvent )
+    {
+    IRLOG_DEBUG( "CIRNetworkController::NotifyActiveNetworkObserversL - Entering" );
+
+    for ( TInt i=iActiveNetworkObserverArray.Count()-1; i>=0; i-- )
+        {
+        iActiveNetworkObserverArray[i]->NotifyActiveNetworkObserversL( aEvent );    
+        }
+        
+
+    IRLOG_DEBUG( "CIRNetworkController::NotifyActiveNetworkObserversL - Exiting" );
+    }
+
+// -------------------------------------------------------------------------------------------------
+// IsHandingOverConnection()
+// Indicates if the Hand over of Network connection has happened
+// -------------------------------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRNetworkController::IsHandingOverConnection()
+    {
+	  IRLOG_DEBUG("CIRNetworkController::IsHandingOverConnection - Entering");
+    IRLOG_DEBUG("CIRNetworkController::IsHandingOverConnection - Exiting");
+    return iHandingOver;
+    }
+
+// -------------------------------------------------------------------------------------------------
+// Reset member iHandingOver to EFalse.
+// -------------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::ResetHandingOverConnection()
+    {
+    IRLOG_DEBUG("CIRNetworkController::ResetHandingOverConnection(), Entering");
+    iHandingOver = EFalse;
+    IRLOG_DEBUG("CIRNetworkController::ResetHandingOverConnection(), Exiting");
+    }
+
+// -------------------------------------------------------------------------------------------------
+// Notifies observers when user cancels network connection, to reset 
+// the pending requests  
+// ResetPendingRequests()
+// -------------------------------------------------------------------------------------------------
+//
+void CIRNetworkController::ResetPendingRequests( TBool aValue )
+    {
+    for ( TInt i=0; i<iActiveNetworkObserverArray.Count(); i++ )
+        {
+        iActiveNetworkObserverArray[i]->ResetPendingRequests( aValue );    
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irnetworkcontroller/src/irnetworkobserver.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,459 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#include "irdebug.h"
+#include "irnetworkobserver.h"
+#include "irnetworkcontroller.h"
+
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::NewL
+// Creates an Instance of CIRNetworkObserver
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRNetworkObserver *CIRNetworkObserver::NewL(
+                                CIRNetworkController* aNetworkController )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::NewL - Entering" );
+    CIRNetworkObserver *self = NewLC( aNetworkController );
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRNetworkObserver::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::~CIRNetworkObserver()
+// Default Destructor
+// ---------------------------------------------------------------------------
+//
+CIRNetworkObserver::~CIRNetworkObserver()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Entering" );
+    Cancel();
+    iIRConnectionMonitor.CancelNotifications();
+    iIRConnectionMonitor.Close();
+    IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::InitializeNetworkObserver()
+//  Initializes the Connection monitor
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::InitializeNetworkObserver()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Entering" );
+    iConnectionId = 0;
+    if ( !IsActive() )
+        {
+        iObserverState = EInitializing;
+        iIRConnectionMonitor.GetConnectionCount( iConnectionCount,iStatus );
+        SetActive();
+        }
+    IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::SetObserver( MIRNetworkController* aObserver )
+// Set the observer used to communicate with the IRNetworkController
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::SetObserver( MIRNetworkController* aObserver )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Entering" );
+    iMonitorObserver = aObserver;
+    iMonitoringRequired = ETrue;  
+    IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::CIRNetworkObserver()
+// Default Constructor
+// ---------------------------------------------------------------------------
+//
+CIRNetworkObserver::CIRNetworkObserver( CIRNetworkController* aNetworkController ):
+ CActive( CActive::EPriorityStandard ), iNetworkController( aNetworkController )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Entering" );
+    // Add the AO to the ActiveScheduler
+    CActiveScheduler::Add( this );
+    IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Creates an Instance of CIRNetworkObserver
+// ---------------------------------------------------------------------------
+//
+CIRNetworkObserver *CIRNetworkObserver::NewLC(
+                            CIRNetworkController* aNetworkController )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Entering " );
+    CIRNetworkObserver *self = new( ELeave )CIRNetworkObserver( 
+                                                aNetworkController );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::ConstructL() 
+// Second Phase construction.
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Entering" );
+    iIRConnectionMonitor.ConnectL();
+    iIRConnectionMonitor.NotifyEventL( *this );
+    iMonitoringRequired = EFalse;  
+    IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::RunL()
+// The function is called by the active scheduler when a request completion event occurs,
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::RunL()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::RunL - Entering" );
+    IRNetworkObserverRunL();
+    IRLOG_DEBUG( "CIRNetworkObserver::RunL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::DoCancel()
+// Cancels the pending requests on the CIRNetworkObserver Active object
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::DoCancel()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::DoCancel" );
+    }
+
+// ---------------------------------------------------------------------------    
+// CIRNetworkObserver::RunError()
+// Handles a leave occurring in the request completion event handler RunL()
+// ---------------------------------------------------------------------------
+//    
+TInt CIRNetworkObserver::RunError( TInt /*aError*/ )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::RunError" );
+    iNetworkController->ResetHandingOverConnection();
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::EventL( const CConnMonEventBase &aConnMonEvent )
+// Derived from MConnectionMonitorObserver
+// Implements the EventL method which is called when there is a network event
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::EventL(const CConnMonEventBase &aConnMonEvent)
+    {
+    IRLOG_INFO4( "CIRNetworkObserver::EventL - Event type %d for connection %d, iConnectionId=%d", 
+                 aConnMonEvent.EventType(), aConnMonEvent.ConnectionId(), iConnectionId );
+    switch(aConnMonEvent.EventType())
+        {
+        case EConnMonCreateConnection:
+            {
+            //Triggered when a new connection has been been created
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonDeleteConnection:
+            {
+            //Triggered when a connection has been been deleted.
+            if( aConnMonEvent.ConnectionId() == iConnectionId )
+                {
+                if(iMonitoringRequired)
+                    {
+                    if (iMonitorObserver)
+                         {
+                         iMonitorObserver->IRNetworkEventL(ENetworkConnectionDisconnected);
+                         }
+                    else
+                        {
+                        iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionDisconnected);
+                        }
+                    }
+                }     
+            }
+        break;
+        
+        case EConnMonCreateSubConnection:       
+            {
+            //Triggered when a new subconnection has been been created
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonDeleteSubConnection:       
+            {
+            //Triggered when a subconnection has been been deleted
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonDownlinkDataThreshold:     
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonUplinkDataThreshold:       
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonNetworkStatusChange:       
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonConnectionStatusChange:    
+            {
+            //Triggered when the status of some connection changes.
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonConnectionActivityChange:  
+            {
+            //Triggered when some connection changes from active to idle or vice versa
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonNetworkRegistrationChange: 
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonBearerChange:              
+            {
+            //Triggered when bearer type (GPRS / Edge GPRS / WCDMA) changes
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonSignalStrengthChange:      
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonBearerAvailabilityChange:  
+            {
+            //Triggered when the availability of some bearer changes
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonIapAvailabilityChange:     
+            {
+            // for future implementation
+            }
+        break;
+        
+        case EConnMonTransmitPowerChange:    
+            {
+            // for future implementation
+            }
+        break;
+        default:
+            {
+            // no implementation
+            }
+        break;    
+        }
+    IRLOG_DEBUG( "CIRNetworkObserver::EventL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::IdentifyConnection()
+// Identifies the type of connection we have used to get connected to network
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::IdentifyConnection()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Entering" );
+    if ( !IsActive() )
+        {
+        iObserverState = EGettingConnectionInfo;
+        iIRConnectionMonitor.GetConnectionInfo(
+            iConnectionCount,iConnectionId,iSubConnectionCount );
+        // O Indicates method applies to connection
+        iIRConnectionMonitor.GetIntAttribute(
+            iConnectionId,0,KBearer,iConnectionType,iStatus );
+        SetActive();
+        }
+    IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::GetIAPId()
+// Retrieves the IAP Id of the connection
+// ---------------------------------------------------------------------------
+//
+void CIRNetworkObserver::GetAPId()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Entering" );
+    if ( !IsActive() )
+        {
+        iObserverState = EGettingIAPId;
+        iIRConnectionMonitor.GetConnectionInfo(
+            iConnectionCount, iConnectionId, iSubConnectionCount );
+        // O in RConnectionMonitor::GetIntAttribute indicates method applies to connection
+        iIRConnectionMonitor.GetUintAttribute(
+            iConnectionId, 0, KIAPId, iIAPId, iStatus );
+        SetActive();
+        }
+    IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::IRNetworkObserverRunL()
+// Utility function used just to keep RunL() small
+// ---------------------------------------------------------------------------
+// 
+void CIRNetworkObserver::IRNetworkObserverRunL()
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL - Entering" );
+    switch(iObserverState)
+        {
+        case EInitializing:
+            {
+            if( iStatus.Int() == KErrNone )
+                {
+                // Initializing the Connection Monitor sucessful    
+                IdentifyConnection();
+                }
+            else
+                {
+                // Error initializing the connection monitor
+                iNetworkController->ResetHandingOverConnection();
+                }    
+            }
+        break;
+        
+        case EGettingConnectionInfo:
+            {
+            if( iStatus.Int() == KErrNone )
+                {
+                iIsIAPIdAvailable = EFalse;
+                GetAPId();  
+                }
+            else
+                {
+                // Error initializing the connection monitor
+                iNetworkController->ResetHandingOverConnection();
+                }    
+            }
+        break;   
+        
+        case EGettingIAPId:
+            {
+            iIsIAPIdAvailable = ETrue;   
+            switch(iConnectionType)
+            {
+            case EBearerGPRS:
+                {
+                iIRConnectionType = EGprs;
+                }
+            break;
+                  
+            case EBearerEdgeGPRS:
+                {
+                iIRConnectionType = EEdge;
+                }
+            break;
+                  
+            case EBearerWLAN:
+                {
+                iIRConnectionType = EWiFi;    
+                }
+            break;
+                  
+            case EBearerWCDMA:
+                {
+                iIRConnectionType = EWcdma;
+                }
+                  break;
+                
+            case EBearerCDMA2000:
+                {
+                iIRConnectionType = ECdma2000;
+                }
+            break;
+            
+            default:
+                {
+                #ifdef __WINS__
+                iIRConnectionType = EGprs;
+                #endif
+                }
+            break;
+            }
+            
+                  
+            if (iMonitoringRequired)
+                {
+                if (iMonitorObserver)    
+                    {
+                    // Intimate the connection established event
+                    iMonitorObserver->IRNetworkEventL(ENetworkConnectionEstablished);
+                    }
+                else
+                    {
+                    iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionEstablished);
+                    }
+                }
+                  
+            iNetworkController->ResetHandingOverConnection();
+            }
+        break;
+          
+        default:
+            {
+            // no implementation
+            }
+        break;
+        }
+    IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNetworkObserver::SetNetworkMonitoring()
+// Sets network monitoring observer to decide whether network monitoring is required.
+// ---------------------------------------------------------------------------
+// 
+void CIRNetworkObserver::SetNetworkMonitoring( TBool aValue )
+    {
+    IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Entering" );
+
+    iMonitoringRequired = aValue;    
+    
+    IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Exiting" );
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/bmarm/irpresetpluginu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+	_Z24ImplementationGroupProxyRi @ 1 NONAME
+	_ZTI13CIRPresetImpl @ 2 NONAME
+	_ZTV13CIRPresetImpl @ 3 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/bwinscw/irpresetpluginu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/data/irpresetplugin.rss	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* 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 <registryinfo.rh>
+
+// ---------------------------------------------------------------------------
+// r_ir_preset_plugin_registry_info
+// Registry info for the preset ECOM plugin.
+// ---------------------------------------------------------------------------
+//
+RESOURCE REGISTRY_INFO r_ir_preset_plugin_registry_info
+    {
+    dll_uid     = 0x2000B4AA;
+    interfaces  =
+        {
+        INTERFACE_INFO
+            {
+            interface_uid   = 0x10281CB6;
+            implementations =
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    //implementation_uid  = 0xA0001D79;
+                    implementation_uid  = 0x10009DC1;
+
+                    version_no          = 1;
+                    display_name        = "Internet Radio Preset Plugin";
+                    default_data        = "";
+                    opaque_data         = "";
+                    }
+                };
+            }
+        };        
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+irpresetplugin.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/group/irpresetplugin.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c)  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 <platform_paths.hrh>
+
+
+TARGET                  irpresetplugin.dll
+TARGETTYPE              PLUGIN
+UID                     0x10009D8D 0X2000B4AA
+
+CAPABILITY              CAP_ECOM_PLUGIN
+VENDORID                VID_DEFAULT
+
+PAGED
+
+SOURCEPATH              ../src
+SOURCE                  irpresetimpl.cpp
+SOURCE                  irpresetpluginproxy.cpp
+
+// RESOURCE
+SOURCEPATH              ../data
+START RESOURCE          irpresetplugin.rss
+TARGET                  irpresetplugin.rsc
+END // RESOURCE
+
+USERINCLUDE   ../inc
+USERINCLUDE   ../../inc
+USERINCLUDE   ../../ircommon/inc
+USERINCLUDE   ../../../presetserver/clientinc
+USERINCLUDE   ../../../presetserver/serverinc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE           OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+
+SMPSAFE
+
+LIBRARY                 bafl.lib
+LIBRARY                 estor.lib
+LIBRARY                 euser.lib
+LIBRARY                 irdatastructures.lib
+LIBRARY                 psclient100.lib
+LIBRARY                 flogger.lib
+
+#if defined WINSCW
+DEFFILE                 ../bwinscw/
+#else
+DEFFILE                 ../bmarm/
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/inc/irpreset.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,384 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef C_IRPRESET_H
+#define C_IRPRESET_H
+
+#include <badesca.h>
+#include "pspresetinterface.h"
+
+class CIRIsdsPreset;
+class CIRChannelServerUrl;
+
+const TUid KIRPreset = { 0x10009DC1 };
+
+
+/**
+ * preset abstract class to expose general apis to the app
+ * it is the base class for IRPresetImpl,which is a plugin
+ * the plugin implements all the pure virtual functions
+ */
+class CIRPreset : public CPSPresetInterface
+    {
+
+public:
+
+    /**
+     * CIRPreset::SetId()
+     * sets id
+     * @param TDesC,supplied by xml parser
+     */
+    virtual void SetId( const TDesC &aId ) = 0;
+
+    /**
+     * CIRPreset::SetId()
+     * sets id
+     * @param TInt,provided to manipulate the id number
+     */
+    virtual void SetId( TInt aId ) = 0;
+
+    /**
+     * CIRPreset::SetLangInfoL()
+     * sets the preset language name and the code
+     * @param TdesC,TdesC language id and name to be set
+     */
+    virtual void SetLangInfoL( const TDesC &aLangId,
+                              const TDesC& aLangName ) = 0;
+
+    /**
+     * CIRPreset::SetCountryInfoL()
+     * sets the preset country name and the code
+     * @param TdesC,TdesC country id and country name to be set
+     */
+    virtual void SetCountryInfoL( const TDesC &aCountryId,
+                                 const TDesC& aCountryName ) = 0;
+
+    /**
+     * CIRPreset::SetLangCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    virtual void SetLangCodeL( const TDesC &aLangId )= 0;
+
+    /**
+     * CIRPreset::SetLangL()
+     * sets the language
+     * @param TdesC language
+     */
+    virtual void SetLangL( const TDesC& aLangName ) = 0;
+
+    /**
+     * CIRPreset::SetCountryCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    virtual void SetCountryCodeL( const TDesC &aCountryId ) = 0;
+
+    /**
+     * CIRPreset::SetCountryNameL()
+     * sets the language name
+     * @param TdesC language name
+     */
+    virtual void SetCountryNameL( const TDesC& aCountryName ) = 0;
+
+    /**
+     * CIRPreset::SetLastModifiedTimeL()
+     * gets the channel  url at a particular index
+     * @param TDesC,time stamp
+     */
+    virtual void SetLastModifiedTimeL( const TDesC &aLastModified ) = 0;
+
+    /**
+     * CIRPreset::SetGenreInfoL()
+     * sets the genreid and name
+     * @param aGenreId
+     * @param aGenreName
+     */
+    virtual void SetGenreInfoL( const TDesC& aGenreId,
+                               const TDesC& aGenreName ) = 0;
+
+    /**
+     * CIRPreset::SetImgUrlL()
+     * sets the image url
+     * @param aImgUrl
+     */
+    virtual void SetImgUrlL( const TDesC& aImgUrl ) = 0;
+
+    /**
+     * CIRPreset::SetAdvertisementInUseL()
+     * sets the advertisementinuse url
+     * @param aAdvertisementInUse
+     */
+    virtual void SetAdvertisementInUseL( const TDesC& aAdvertisementInUse ) = 0;
+
+    /**
+     * CIRPreset::SetDescriptionL()
+     * sets the description for the channel
+     * @param aDescription
+     */
+    virtual void SetDescriptionL( const TDesC& aDescription ) = 0;
+
+    /**
+     * CIRPreset::SetAdvertisementUrlL()
+     * sets the advertisement url
+     * @param aAdvertisementUrl
+     */
+    virtual void SetAdvertisementUrlL( const TDesC& aAdvertisementUrl ) = 0;
+
+    /**
+     * CIRPreset::SetUrlCount()
+     * sets the count of the number of urls
+     */
+    virtual void SetUrlCount() = 0;
+
+    /**
+     * CIRPreset::SetShortDescL()
+     * sets the short description
+     * @param aShortDesc
+     */
+    virtual void SetShortDescL( const TDesC& aShortDesc ) = 0;
+
+    /**
+     * CIRPreset::SetMusicStoreStatusL()
+     * sets the musicStoreEnabled flag
+     * @param aMusicStoreStatus
+     */
+    virtual void SetMusicStoreStatusL( const TDesC& aMusicStoreStatus ) = 0;
+
+    /**
+     * CIRPreset::SetUrlCount()
+     * sets the count of the number of urls
+     * @param aCnt ,count
+     */
+    virtual void SetUrlCount( TInt aCnt ) = 0;
+
+    /**
+     * CIRPreset::SetIndex()
+     * sets the index for the preset.used only for presets in the fav list
+     *  @param aInt
+     */
+    //not required
+    //virtual void SetIndex( TInt aInt ) = 0
+
+    /**
+     * CIRPreset::SetUrlL()
+     * sets the channel server url
+     * @param aServerName ,server name
+     * @param aUrl ,server url
+     * @param aBitrate .server bitrate
+     */
+    virtual void SetUrlL( const TDesC &aServerName,
+                          const TDesC &aUrl,
+                          const TDesC &aBitrate ) = 0;
+
+    /**
+     *CIRPreset::SetUrlL()
+     *sets the channel server url
+     *@param aServerName ,server name
+     *@param aUrl ,server url
+     *@param aBitrate ,server bitrate
+     */
+    virtual void SetUrlL( const TDesC &aServerName,
+                          const TDesC &aUrl,
+                          TInt aBitrate )=0;
+
+    /**
+     *CIRPreset::SetChannelType()
+     *sets the channel type
+     *@param aChannelType userdefined,isds,adhoc
+     */
+    virtual void SetChannelType( TInt aChannelType )=0;
+
+    /**
+     *CIRPreset::GetId()
+     *gets the channel id
+     *@return TInt
+     */
+    virtual TInt GetId() const=0;
+
+    /**
+     * CIRPreset::GetLangId()
+     * gets the channel channelangid
+     * @return TDesC
+     */
+    virtual const TDesC& GetLangId() const = 0;
+
+    /**
+     * CIRPreset::GetLangName()
+     * gets the channel language name
+     * @return TDesC
+     */
+    virtual const TDesC& GetLangName() const = 0;
+
+    /**
+     * CIRPreset::GetCountryId()
+     * gets the channel countryid
+     * @return TDesC
+     */
+    virtual const TDesC& GetCountryId() const = 0;
+
+    /**
+     * CIRPreset::GetCountryName()
+     * gets the channel country name
+     * @return TDesC
+     */
+    virtual const TDesC& GetCountryName() const = 0;
+
+    /**
+     * CIRPreset::GetLastModifiedTime()
+     * gets the channel last modified time stamp
+     * @return TDesC
+     */
+    virtual const TDesC& GetLastModifiedTime() const = 0;
+
+    /**
+     * CIRPreset::GetDescription()
+     * gets the channel description
+     * @return TDesC
+     */
+    virtual const TDesC& GetDescription() const = 0;
+
+    /**
+     * CIRPreset::GetShortDescription()
+     * gets the channel  short description
+     * @return TDesC
+     */
+    virtual const TDesC& GetShortDescription() const = 0;
+
+    /**
+     * CIRPreset::GetMusicStoreStatus()
+     * gets the channel  musicStoreEnabled flag
+     * @return TDesC
+     */
+    virtual const TDesC& GetMusicStoreStatus() const = 0;
+
+    /**
+     * CIRPreset::GetChannelType()
+     * gets the channel  Type
+     * @return TInt
+     */
+    virtual TInt GetChannelType() const = 0;
+
+    /**
+     * CIRPreset::GetGenreId()
+     * gets the channel  genreid
+     * @return TDesC
+     */
+    virtual const TDesC& GetGenreId() const = 0;
+
+    /**
+     * CIRPreset::GetGenreName()
+     * gets the channel  genre name
+     * @return TDesC
+     */
+    virtual const TDesC& GetGenreName() const = 0;
+
+    /**
+     * CIRPreset::GetAdvertisementUrl()
+     * gets the channel  advertisement url
+     * @return TDesC
+     */
+    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
+	*@return TDesC
+	*/
+    virtual const TDesC& GetImgUrl() const = 0;
+
+    /**
+     * CIRPreset::GetUrlCount()
+     * gets the channel  url count
+     * @return TDesC
+     */
+    virtual TInt GetUrlCount() const = 0;
+
+	virtual CIRChannelServerUrl& GetUrl(TInt aIndex) const = 0;
+    /*
+     * get the channel url at specified position
+     *
+     */
+    virtual const TDesC& GetChannelUrlAt( TInt aIndex ) const = 0;
+
+    /**
+     *CIRPreset::GetAvailableBitrates()
+     *gets the bitrate array
+     *@return RArray<TInt>
+     */
+    virtual RArray<TInt>& GetAvailableBitrates() = 0;
+
+    /**
+     * CIRPresetImpl::CIRIsdsPresetToCIRPresetImplL()
+     * used to convert the isdspresets to plugnized presets.
+     * Does a deep copy for all the member variables
+     * @param CIRIsdsPreset&,the preset to be copied from
+     */
+    virtual void CIRIsdsPresetToCIRPresetImplL( const CIRIsdsPreset& aIsdsPreset ) = 0;
+
+	/**
+	*CIRPreset::CopyPresetDataL()
+	*copy data to CIRIsdsPreset
+	*@param CIRIsdsPreset&,the preset to be copied into
+	*/
+	virtual void CopyPresetDataL(CIRIsdsPreset& aIsdsPreset) const =0;
+
+	 /**
+     * Sets the logo data for this preset for a specific size.
+     *
+     * @param   aData           Raw image data to set.
+     * @param   aSize           Size of the logo in pixels.
+     */
+    virtual void SetLogoDataL( const TDesC8& aData ) = 0;
+
+    /**
+     * Returns the logo data for this preset.
+     *
+     * If the returned descriptor's length is zero, then it means
+     * that the preset does not have a logo.
+     */
+    virtual  const TDesC8& GetLogoData() const = 0;
+
+    /*
+     * Returns the played times of the channel
+     */
+    virtual TInt GetPlayedTimes() const = 0;
+
+    /*
+     * Set the played times of the channel
+     */
+    virtual void SetPlayedTimes( TInt aPlayedTimes ) = 0;
+    
+    /*
+     * Get Rename status
+     */
+    virtual TBool GetRenamed() const = 0;
+    
+    /*
+     * Set Rename status
+     */
+    virtual void SetRenamed() = 0;
+    };
+
+#endif // C_IRPRESET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/inc/irpresetimpl.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,557 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef C_IRPRESETIMPL_H
+#define C_IRPRESETIMPL_H
+
+#include "irpreset.h"
+
+class CIRChannelServerUrlImpl;
+
+
+/**
+ * This class provides the basic structure to hold the preset
+ *information that is saved in the favourites database
+ *It also provides the basic getter and setter functions to
+ *manage the preset information.
+ *for url selection for a particular bitrate some functionality
+ *has been provided
+ *copy constructor and assignment operator has been provided to
+ *override the default ones
+ *
+ * @code
+ *CIRPresetImpl* preset = CIRPresetImpl::NewL()
+ *preset->SetXXX();
+ *preset->GetXXX()
+ * *preset1 = *preset2
+ * @endcode
+ *
+ */
+
+class CIRPresetImpl : public CIRPreset
+    {
+public:
+
+    /**
+     * CIRPresetImpl::NewL()
+     * Static function
+     * standard two phased constructor
+     * @param void
+     * @return *CIRPresetImpl
+     */
+    static CIRPresetImpl* NewL( TAny* aParams );
+
+    /**
+     * CIRPresetImpl::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @param void
+     * @return *CIRPresetImpl
+     */
+    static CIRPresetImpl* NewLC( TAny* aParams );
+
+    /**
+     * CIRPresetImpl::~CIRIsdsPreset()
+     * standard C++ destructor
+     * @param NA
+     * @return NA
+     */
+    ~CIRPresetImpl();
+
+    /**
+     * CIRPresetImpl::SetId()
+     * sets id
+     * @param TDesC,supplied by xml parser
+     */
+    void SetId( const TDesC &aId );
+
+    /**
+     * CIRPresetImpl::SetId()
+     * sets id
+     * @param TInt,provided to manipulate the id number
+     */
+    void SetId( TInt aId );
+
+    /**
+     * CIRPresetImpl::SetLangInfoL()
+     * sets the preset language name and the code
+     * @param TdesC,TdesC language id and name to be set
+     */
+    void SetLangInfoL( const TDesC &aLangId,
+                      const TDesC& aLangName );
+
+    /**
+     * CIRPresetImpl::SetCountryInfoL()
+     * sets the preset country name and the code
+     * @param TdesC,TdesC country id and country name to be set
+     */
+    void SetCountryInfoL( const TDesC &aCountryId,
+                         const TDesC& aCountryName );
+
+    /**
+     * CIRPresetImpl::SetLangCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    void SetLangCodeL( const TDesC &aLangId );
+
+    /**
+     * CIRPresetImpl::SetLangL()
+     * sets the language
+     * @param TdesC language
+     */
+    void SetLangL( const TDesC& aLangName );
+
+    /**
+     * CIRPresetImpl::SetCountryCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    void SetCountryCodeL( const TDesC &aCountryId );
+
+    /**
+     * CIRPresetImpl::SetCountryNameL()
+     * sets the language name
+     * @param TdesC language name
+     */
+    void SetCountryNameL( const TDesC& aCountryName );
+
+    /**
+     * CIRPresetImpl::SetLastModifiedTimeL()
+     * gets the channel  url at a particular index
+     * @param TDesC,time stamp
+     */
+    void SetLastModifiedTimeL( const TDesC &aLastModified );
+
+    /**
+     * CIRPresetImpl::SetGenreInfoL()
+     * sets the genreid and name
+     * @param aGenreId
+     * @param aGenreName
+     */
+    void SetGenreInfoL( const TDesC& aGenreId,
+                       const TDesC& aGenreName );
+
+    /**
+     * CIRPresetImpl::SetImgUrlL()
+     * sets the image url
+     * @param aImgUrl
+     */
+    void SetImgUrlL( const TDesC& aImgUrl );
+
+    /**
+     * CIRPresetImpl::SetLogoDataL()
+     * sets the Logo Data
+     * @param aData
+     * @param aSize
+     */
+    void SetLogoDataL( const TDesC8& aData );
+
+    /**
+     * CIRPresetImpl::SetAdvertisementInUseL()
+     * sets the advertisementinuse url
+     * @param aAdvertisementInUse
+     */
+    void SetAdvertisementInUseL( const TDesC& aAdvertisementInUse );
+
+    /**
+     * CIRPresetImpl::SetDescriptionL()
+     * sets the description for the channel
+     * @param aDescription
+     */
+    void SetDescriptionL( const TDesC& aDescription );
+
+    /**
+     * CIRPresetImpl::SetAdvertisementUrlL()
+     * sets the advertisement url
+     * @param aAdvertisementUrl
+     */
+    void SetAdvertisementUrlL( const TDesC& aAdvertisementUrl );
+
+    /**
+     * CIRPresetImpl::SetUrlCount()
+     * sets the count of the number of urls
+     */
+    void SetUrlCount();
+
+    /**
+     * CIRPresetImpl::SetShortDescL()
+     * sets the short description
+     * @param aShortDesc
+     */
+    void SetShortDescL( const TDesC& aShortDesc );
+
+    /**
+     * CIRPresetImpl::SetUrlCount()
+     * sets the count of the number of urls
+     * @param aCnt ,count
+     */
+    void SetUrlCount( TInt aCnt );
+
+    /**
+     * CIRPresetImpl::SetUrlL()
+     * sets the channel server url
+     * @param aServerName ,server name
+     * @param aUrl ,server url
+     * @param aBitrate .server bitrate
+     */
+    void SetUrlL( const TDesC &aServerName,
+                  const TDesC &aUrl,
+                  const TDesC &aBitrate );
+
+    /**
+     * CIRPresetImpl::SetUrlL()
+     * sets the channel server url
+     * @param aServerName ,server name
+     * @param aUrl ,server url
+     * @param aBitrate ,server bitrate
+     */
+    void SetUrlL( const TDesC &aServerName,
+                  const TDesC &aUrl,
+                  TInt aBitrate );
+
+    /**
+     * CIRPresetImpl::SetChannelType()
+     * sets the channel type
+     * @param aChannelType userdefined,isds,adhoc
+     */
+    void SetChannelType( TInt aChannelType );
+
+    /**
+     * CIRPresetImpl::SetMusicStoreStatusL()
+     * sets the musicStoreEnabled 
+     * @param aMusicStoreStatus
+     */
+    void SetMusicStoreStatusL( const TDesC& aMusicStoreStatus );
+
+//getter functions
+    /**
+     * CIRPresetImpl::GetId()
+     * gets the channel id
+     * @return TInt
+     */
+    TInt GetId() const;
+    
+    /**
+     * CIRPresetImpl::GetLangId()
+     * gets the channel channelangid
+     * @return TDesC
+     */
+    const TDesC& GetLangId() const;
+
+    /**
+     * CIRPresetImpl::GetLangName()
+     * gets the channel language name
+     * @return TDesC
+     */
+    const TDesC& GetLangName() const;
+
+    /**
+     * CIRPresetImpl::GetCountryId()
+     * gets the channel countryid
+     * @return TDesC
+     */
+    const TDesC& GetCountryId() const;
+
+    /**
+     * CIRPresetImpl::GetCountryName()
+     * gets the channel country name
+     * @return TDesC
+     */
+    const TDesC& GetCountryName() const;
+
+    /**
+     * CIRPresetImpl::GetLastModifiedTime()
+     * gets the channel last modified time stamp
+     * @return TDesC
+     */
+    const TDesC& GetLastModifiedTime() const;
+
+    /**
+     * CIRPresetImpl::GetDescription()
+     * gets the channel description
+     * @return TDesC
+     */
+    const TDesC& GetDescription() const;
+
+    /**
+     * CIRPresetImpl::GetShortDescription()
+     * gets the channel  short description
+     * @return TDesC
+     */
+    const TDesC& GetShortDescription() const;
+
+    /**
+     * CIRPresetImpl::GetChannelType()
+     * gets the channel  Type
+     * @return TInt
+     */
+    TInt GetChannelType() const;
+
+    /**
+     * CIRPresetImpl::GetGenreId()
+     * gets the channel  genreid
+     * @return TDesC
+     */
+    const TDesC& GetGenreId() const;
+
+    /**
+     * CIRPresetImpl::GetGenreName()
+     * gets the channel  genre name
+     * @return TDesC
+     */
+    const TDesC& GetGenreName() const;
+
+    /**
+     * CIRPresetImpl::GetAdvertisementUrl()
+     * gets the channel  advertisement url
+     * @return TDesC
+     */
+    const TDesC& GetAdvertisementUrl() const;
+
+	const TDesC& GetAdvertisementInUse() const;
+    /**
+     * CIRPresetImpl::GetImgUrl()
+     * gets the channel  image url
+     * @return TDesC
+     */
+    const TDesC& GetImgUrl() const;
+
+    /**
+     * CIRPresetImpl::GetUrlCount()
+     * gets the channel  url count
+     * @return TDesC
+     */
+    TInt GetUrlCount() const;
+
+	CIRChannelServerUrl& GetUrl(TInt aIndex) const;
+	/*
+	*CIRPresetImpl::GetLogoData()
+	*gets the Logo Data
+	*@return TDesC8&
+	*/
+    const TDesC8& GetLogoData() const;
+	
+	/*
+	 * get the channel url at specified position
+     *
+     */
+	const TDesC& GetChannelUrlAt(TInt aIndex) const;
+
+    /**
+     * CIRPresetImpl::GetMusicStoreStatus()
+     * gets the musicStoreEnabled 
+     * @return TDesC&
+     */
+    const TDesC& GetMusicStoreStatus() const;
+
+    /**
+     * CIRPresetImpl::operator=()
+     * assignment operator
+     * @param CIRIsdsPreset& aPreset
+     * @return CIRIsdsPreset
+     */
+    CIRPresetImpl& operator=( const CIRPresetImpl& aPreset );
+
+    /**
+     * CIRPresetImpl::CIRIsdsPresetToCIRPresetImplL()
+     * used to convert the isdspresets to plugnized presets.
+     * Does a deep copy for all the member variables
+     * @param CIRIsdsPreset&,the preset to be copied from
+     */
+    void CIRIsdsPresetToCIRPresetImplL( const CIRIsdsPreset& aIsdsPreset );
+
+    /**
+     * CIRPresetImpl::CopyPresetDataL()
+     * copy data to CIRIsdsPreset
+     * @param CIRIsdsPreset&,the preset to be copied into
+     */
+    void CopyPresetDataL( CIRIsdsPreset& aIsdsPreset ) const;
+
+    /**
+     * CIRPresetImpl::GetAvailableBitrates()
+     * gets the bitrate array
+     * @return RArray<TInt>
+     */
+    RArray<TInt>& GetAvailableBitrates();
+
+    /*
+     * Returns the played times of the channel
+     */
+    TInt GetPlayedTimes() const;
+
+    /**
+     * CIRPresetImpl::SetPlayedTimes() 
+     * Set the played times of the channel
+     */
+    void SetPlayedTimes( TInt aPlayedTimes );
+    
+    /*
+     * Get Rename status
+     */
+    TBool GetRenamed() const;
+    
+    /*
+     * Set Rename status
+     */
+    void SetRenamed();
+    
+protected:
+
+    /**
+     * CIRPresetImpl::CIRIsdsPreset()
+     * standard C++ constructor
+     * @param void
+     * @return NA
+     */
+    CIRPresetImpl();
+
+    /**
+     * CIRPresetImpl::ConstructL(TAny* aParams)
+     * standard second phase constructor(Leaveable)
+     * @param void
+     * @return void
+     */
+    void ConstructL( TAny* aParams );
+
+//for serialization
+    /**
+     * CIRPresetImpl::ExternalizeL()
+     * serializes the preset data into a stream
+     * @param aWriteStream
+     */
+    void ExternalizeL( RWriteStream& aWriteStream ) const;
+
+    /**
+     * CIRPresetImpl::InternalizeL()
+     * serializes the preset data from a stream to a structure
+     * @param aReadStream
+     */
+    void InternalizeL( RReadStream& aReadStream );
+
+private:
+
+	/**
+	 * no of channel urls
+	 */
+	TInt iChannelUrlCount;
+
+	/**
+	 * 0 for user defined 1 for isds type.
+	 */
+	TInt iType;
+
+	/**
+	 * isds generated preset id
+	 */
+	TInt iPresetId;
+
+	/**
+	 * preset language code
+	 */
+	RBuf iLanguageCode;
+
+	/**
+	 * preset language
+	 */
+	RBuf iLanguage;
+
+	/**
+	 * preset country of origin code
+	 */
+	RBuf iCountryCode;
+
+	/**
+	 * preset country of origin
+	 */
+	RBuf iCountry;
+
+	/**
+	 * preset last modified
+	 */
+	RBuf iLastModified;
+
+	/**
+	 * not in use
+	 */
+	RBuf iAdvertisementUrl;
+
+	/**
+	 * not in use
+	 */
+	RBuf iAdvertisementInUse;
+
+	/**
+	 * Logo URL
+	 */
+	RBuf iImgUrl;
+
+	/**
+     * Raw image data for the logo.
+     * Owned.
+     */
+    RBuf8 iLogoData;
+
+	/**
+	 * channel description
+	 */
+	RBuf iDescription;
+
+	/**
+	 * channel short desription
+	 */
+	RBuf iShortDesc;
+
+	/**
+	 * channel genre name
+	 */
+	RBuf iGenereName;
+
+	/**
+	 * channel genre id
+	 */
+	RBuf iGenereId;
+	
+	/**
+	 * musicStoreEnabled value
+	 */
+	RBuf iMusicStoreStatus;
+
+	/**
+	 * url array
+	 */
+	CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
+
+    /**
+     * bitrate array
+     */
+    RArray<TInt> iBitrateArray;
+    
+    /**
+     * iPlayedTimes
+     */    
+    TInt iPlayedTimes;   
+    
+    /**
+     *if the station is renamed after it's added into favorites
+     */
+    TBool iRenamed;
+    
+    };
+
+#endif // C_IRPRESETIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/src/irpresetimpl.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1149 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "irchannelserverurl.h"
+#include "irdebug.h"
+#include "irpresetimpl.h"
+#include "irisdspreset.h"
+
+const TInt KUrlArrayMaxLength = 128;
+
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::NewL()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+CIRPresetImpl* CIRPresetImpl::NewL( TAny* aParams )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::NewL" );
+    CIRPresetImpl* self = CIRPresetImpl::NewLC( aParams );
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRPresetImpl::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::NewLC()
+// Static function
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+CIRPresetImpl* CIRPresetImpl::NewLC( TAny* aParams )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::NewLC" );
+    CIRPresetImpl* self = new ( ELeave ) CIRPresetImpl;
+    CleanupStack::PushL( self );
+    self->ConstructL( aParams );
+    IRLOG_DEBUG( "CIRPresetImpl::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::ConstructL()
+// standard second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::ConstructL( TAny* aParams )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::ConstructL" );
+    BaseConstructL( aParams );
+	iUrlArray=
+		new (ELeave) CArrayPtrFlat<CIRChannelServerUrl>(
+		KUrlArrayMaxLength);
+
+    IRLOG_DEBUG( "CIRPresetImpl::ConstructL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::~CIRPresetImpl()
+// standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+CIRPresetImpl::~CIRPresetImpl()
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::~CIRPresetImpl" );
+    iLanguageCode.Close();
+    iLanguage.Close();
+    iCountryCode.Close();
+    iCountry.Close();
+    iLastModified.Close();
+    iAdvertisementUrl.Close();
+    iAdvertisementInUse.Close();
+    iImgUrl.Close();
+    iLogoData.Close();
+    iDescription.Close();
+    iShortDesc.Close();
+    iGenereName.Close();
+    iGenereId.Close();
+    iMusicStoreStatus.Close();
+
+    if ( iUrlArray )
+        {
+        iUrlArray->ResetAndDestroy();
+        }
+
+    delete iUrlArray;
+    iBitrateArray.Close();
+    IRLOG_DEBUG( "CIRPresetImpl::~CIRPresetImpl - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetId()
+// Function to set iPresetId
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetId( TInt aId )
+    {
+    iPresetId = aId;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetId()
+// Function to set iPresetId from a TDesC
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetId( const TDesC &aId )
+    {
+    TLex conv( aId );
+    conv.Val( iPresetId );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetLangCodeL()
+// Function to set iLanguageCode from a TDesC
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetLangCodeL( const TDesC &aLangId )
+    {
+    iLanguageCode.Close();
+    iLanguageCode.CreateL( aLangId );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetLangL()
+// Function to set iLanguage from a TDesC
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetLangL( const TDesC& aLangName )
+    {
+    iLanguage.Close();
+    iLanguage.CreateL( aLangName );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetCountryCodeL()
+// Function to set iCountryCode from a TDesC
+// ---------------------------------------------------------------------------
+void CIRPresetImpl::SetCountryCodeL( const TDesC &aCountryId )
+    {
+    iCountryCode.Close();
+    iCountryCode.CreateL( aCountryId );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetCountryNameL()
+// Function to set iCountry from a TDesC
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetCountryNameL( const TDesC& aCountryName )
+    {
+    iCountry.Close();
+    iCountry.CreateL( aCountryName );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetLangInfoL()
+// Function to set iLanguageCode, iLanguage
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetLangInfoL( const TDesC &aLangId,
+                                 const TDesC& aLangName )
+    {
+    SetLangCodeL( aLangId );
+    SetLangL( aLangName );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetLangInfoL()
+// Function to set iCountryCode, iCountry
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetCountryInfoL( const TDesC &aCountryId,
+                                    const TDesC& aCountryName )
+    {
+    SetCountryCodeL( aCountryId );
+    SetCountryNameL( aCountryName );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetLastModifiedTimeL()
+// Function to set iLastModified
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetLastModifiedTimeL( const TDesC &aLastModified )
+    {
+    iLastModified.Close();
+    iLastModified.CreateL( aLastModified );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetGenreInfoL()
+// Function to set iGenereName, iGenereId
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetGenreInfoL( const TDesC& aGenreId,
+                                  const TDesC& aGenreName )
+    {
+    iGenereName.Close();
+    iGenereName.CreateL( aGenreName );
+    iGenereId.Close();
+    iGenereId.CreateL( aGenreId );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetImgUrlL()
+// Function to set iImgUrl
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetImgUrlL( const TDesC& aImgUrl )
+    {
+    iImgUrl.Close();
+    iImgUrl.CreateL( aImgUrl );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CIRPresetImpl
+// Sets the raw logo image data.
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetLogoDataL( const TDesC8& aData )
+    {
+    iLogoData.Close();
+    iLogoData.CreateL( aData );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CIRPresetImpl
+// Returns the raw logo image data.
+// ---------------------------------------------------------------------------
+//
+const TDesC8& CIRPresetImpl::GetLogoData() const
+    {
+    return iLogoData;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetAdvertisementUrlL()
+// Function to set iAdvertisementUrl
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetAdvertisementUrlL( const TDesC& aAdvertisementUrl )
+    {
+    iAdvertisementUrl.Close();
+    iAdvertisementUrl.CreateL( aAdvertisementUrl );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetAdvertisementInUseL()
+// Function to set iAdvertisementInUse
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetAdvertisementInUseL( const TDesC& aAdvertisementInUse )
+    {
+    iAdvertisementInUse.Close();
+    iAdvertisementInUse.CreateL( aAdvertisementInUse );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetDescriptionL()
+// Function to set iDescription
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetDescriptionL( const TDesC& aDescription )
+    {
+    iDescription.Close();
+    iDescription.CreateL( aDescription );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetShortDescL()
+// Function to set iShortDesc
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetShortDescL( const TDesC& aShortDesc )
+    {
+    iShortDesc.Close();
+    iShortDesc.CreateL( aShortDesc );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetUrlCount()
+// Function to set iChannelUrlCount
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetUrlCount()
+    {
+    iChannelUrlCount = iUrlArray->Count();
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetUrlCount()
+// Function to set iChannelUrlCount
+// ---------------------------------------------------------------------------
+void CIRPresetImpl::SetUrlCount( TInt aCnt )
+    {
+    iChannelUrlCount = aCnt;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetChannelType()
+// Function to set iType
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetChannelType( TInt aType )
+    {
+    iType = aType;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetUrl()
+// Function to set Url parameter
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetUrlL( const TDesC &aServerName,
+                             const TDesC &aUrl,
+                             const TDesC &aBitrate )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::SetUrlL" );
+	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
+    hold->SetServerName( aServerName );
+    hold->SetServerUrl( aUrl );
+    TLex conv( aBitrate );
+    TInt conVal = 0;
+    conv.Val( conVal );
+    hold->SetBitRate( conVal );
+    //ownership transferred to the array
+    //no need to delete hold
+    iUrlArray->AppendL( hold );
+    IRLOG_DEBUG( "CIRPresetImpl::SetUrlL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetUrl()
+// Function to set Url parameter
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetUrlL( const TDesC &aServerName,
+                             const TDesC &aUrl,
+                             TInt aBitrate )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate)" );
+	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
+    hold->SetServerName( aServerName );
+    hold->SetServerUrl( aUrl );
+    hold->SetBitRate( aBitrate );
+    iUrlArray->AppendL( hold );
+    IRLOG_DEBUG( "CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate) - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetMusicStoreStatusL()
+// Function to set iMusicStoreStatus
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetMusicStoreStatusL( const TDesC& aMusicStoreStatus )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::SetMusicStoreStatus - Entering" );
+    iMusicStoreStatus.Close();
+    iMusicStoreStatus.CreateL( aMusicStoreStatus );
+    IRLOG_DEBUG( "CIRPresetImpl::SetMusicStoreStatus - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetId()
+// Function to get iPresetId
+// ---------------------------------------------------------------------------
+//
+TInt CIRPresetImpl::GetId() const
+    {
+    return iPresetId;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetLangId()
+// Function to get iLanguageCode
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetLangId() const
+    {
+    return iLanguageCode;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetLangName()
+// Function to get iLanguage
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetLangName() const
+    {
+    return iLanguage;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetCountryId()
+// Function to get iCountryCode
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetCountryId() const
+    {
+    return iCountryCode;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetCountryName()
+// Function to get iCountry
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetCountryName() const
+    {
+    return iCountry;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetLastModifiedTime()
+// Function to get iLastModified
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetLastModifiedTime() const
+    {
+    return iLastModified;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetGenreId()
+// Function to get iGenereId
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetGenreId() const
+    {
+    return iGenereId;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetGenreName()
+// Function to get iGenereName
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetGenreName() const
+    {
+    return iGenereName;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetAdvertisementUrl()
+// Function to get iAdvertisementUrl
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetAdvertisementUrl() const
+	{
+	return iAdvertisementUrl;
+	}
+
+const TDesC& CIRPresetImpl::GetAdvertisementInUse() const
+{
+    return iAdvertisementInUse;
+}
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetImgUrl()
+// Function to get iImgUrl
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetImgUrl() const
+    {
+    return iImgUrl;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetUrlCount()
+// Function to get iChannelUrlCount
+// ---------------------------------------------------------------------------
+//
+TInt CIRPresetImpl::GetUrlCount() const
+    {
+    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
+ *
+ */
+const TDesC& CIRPresetImpl::GetChannelUrlAt(TInt aIndex) const
+{
+    return iUrlArray->At(aIndex)->GetServerUrl();
+}
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetDescription()
+// Function to get iDescription
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetDescription() const
+    {
+    return iDescription;
+    }
+
+// ---------------------------------------------------------------------------
+//CIRPresetImpl::GetShortDescription()
+//Function to get iDescription
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetShortDescription() const
+    {
+    return iShortDesc;
+    }
+
+// ---------------------------------------------------------------------------
+//CIRPresetImpl::GetMusicStoreStatus()
+//Function to get iMusicStoreStatus
+// ---------------------------------------------------------------------------
+//
+const TDesC& CIRPresetImpl::GetMusicStoreStatus() const
+    {
+    return iMusicStoreStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetChannelType()
+// Function to get iType
+// ---------------------------------------------------------------------------
+//
+TInt CIRPresetImpl::GetChannelType() const
+    {
+    return iType;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl& CIRPresetImpl::operator=(const CIRPresetImpl& preset)
+// assignment operator eg. preset1=preset2
+// shallow copy
+// ---------------------------------------------------------------------------
+//
+CIRPresetImpl& CIRPresetImpl::operator=( const CIRPresetImpl& aPreset )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::operator=" );
+    if ( &aPreset == this )
+        {
+        return *this;
+        }
+    //copy data members
+    iPresetId = aPreset.iPresetId;
+
+        TRAP_IGNORE(SetNameL(aPreset.Name()))
+
+    iLanguageCode.Close();
+    iLanguageCode.Create( aPreset.iLanguageCode );
+
+    iLanguage.Close();
+    iLanguage.Create( aPreset.iLanguage );
+
+    iCountryCode.Close();
+    iCountryCode.Create( aPreset.iCountryCode );
+
+    iCountry.Close();
+    iCountry.Create( aPreset.iCountry );
+
+    iLastModified.Close();
+    iLastModified.Create( aPreset.iLastModified );
+
+    iAdvertisementUrl.Close();
+    iAdvertisementUrl.Create( aPreset.iAdvertisementUrl );
+
+    iAdvertisementInUse.Close();
+    iAdvertisementInUse.Create( aPreset.iAdvertisementInUse );
+
+    iImgUrl.Close();
+    iImgUrl.Create( aPreset.iImgUrl );
+
+    iLogoData.Close();
+    iLogoData.Create( aPreset.iLogoData );
+
+    iDescription.Close();
+    iDescription.Create( aPreset.iDescription );
+
+    iShortDesc.Close();
+    iShortDesc.Create( aPreset.iShortDesc );
+
+    iMusicStoreStatus.Close();
+    iMusicStoreStatus.Create( aPreset.iMusicStoreStatus );
+
+    iGenereName.Close();
+    iGenereName.Create( aPreset.iGenereName );
+
+    iGenereId.Close();
+    iGenereId.Create( aPreset.iGenereId );
+
+    iChannelUrlCount = aPreset.iChannelUrlCount;
+    iType = aPreset.iType; //0 for user defined 1 for isds type.
+    for ( TInt cnt = 0; cnt < iChannelUrlCount; cnt++ )
+        {
+        ASSERT( cnt >= 0 && cnt < aPreset.iUrlArray->Count() );
+        TRAPD(errUrl,SetUrlL( aPreset.iUrlArray->At(cnt)->GetServerName(),
+                              aPreset.iUrlArray->At(cnt)->GetServerUrl(),
+                              aPreset.iUrlArray->At(cnt)->GetBitRate() ) )
+        if ( errUrl != KErrNone )
+            {
+            return *this;
+            }
+        }
+    IRLOG_DEBUG( "CIRPresetImpl::operator= - Exiting." );
+    return *this;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::CIRPresetImpl()
+// default C++ constructor
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+CIRPresetImpl::CIRPresetImpl()
+    {
+    // no implementation
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::CIRPresetImpl()
+// default C++ constructor
+// standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::ExternalizeL( RWriteStream& aWriteStream ) const
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL" );
+    //! externalize TInts s
+    aWriteStream.WriteInt32L( iPresetId );
+    aWriteStream.WriteInt32L( iType );
+    aWriteStream.WriteInt32L( iChannelUrlCount );
+
+    //Externalize HBufC s
+    //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 = 0;
+    if ( !iLanguageCode.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iLanguageCode.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iLanguageCode;
+        }
+
+    if ( !iLanguage.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iLanguage.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iLanguage;
+        }
+
+    if ( !iCountryCode.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iCountryCode.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iCountryCode;
+        }
+
+    if ( !iCountry.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iCountry.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iCountry;
+        }
+
+    if ( !iGenereName.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iGenereName.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iGenereName;
+        }
+
+    if ( !iGenereId.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iGenereId.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iGenereId;
+        }
+
+    if ( !iLastModified.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iLastModified.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iLastModified;
+        }
+
+    if ( !iAdvertisementUrl.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iAdvertisementUrl.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iAdvertisementUrl;
+        }
+
+    if ( !iAdvertisementInUse.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iAdvertisementInUse.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iAdvertisementInUse;
+        }
+
+    if ( !iImgUrl.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iImgUrl.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iImgUrl;
+        }
+
+    if ( !iDescription.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iDescription.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iDescription;
+        }
+
+    if ( !iShortDesc.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iShortDesc.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iShortDesc;
+        }
+
+    if ( !iMusicStoreStatus.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iMusicStoreStatus.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iMusicStoreStatus;
+        }
+
+    if ( !iLogoData.Length() )
+        {
+        len = 0;
+        aWriteStream.WriteInt32L( len );
+        }
+    else
+        {
+        len = iLogoData.Length();
+        aWriteStream.WriteInt32L( len );
+        aWriteStream << iLogoData;
+        }
+
+    //externalizing the preset data
+    for ( TInt cnt = 0; cnt < iChannelUrlCount; cnt++ )
+        {
+        GetUrl( cnt ).ExternalizeL( aWriteStream );
+        }
+
+    //added by Peter on June 23rd, 2009
+    aWriteStream.WriteInt32L( iPlayedTimes );
+
+	aWriteStream.WriteInt32L(iRenamed);
+    IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::CIRPresetImpl()
+// Internalizes the preset data
+// required for being derived from CPSPresetInterface
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::InternalizeL( RReadStream& aReadStream )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::InternalizeL" );
+    //! Internalize TInts s
+    iPresetId = aReadStream.ReadInt32L();
+    iType = aReadStream.ReadInt32L();
+    iChannelUrlCount = aReadStream.ReadInt32L();
+    TInt len = 0;
+
+    //algo
+    //1.get the length of the data
+    //2.read that many bytes
+    //3.if read length is zero. skip.
+    len = aReadStream.ReadInt32L();
+    iLanguageCode.Close();
+    if ( len != 0 )
+        {
+        iLanguageCode.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iLanguage.Close();
+    if ( len != 0 )
+        {
+        iLanguage.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iCountryCode.Close();
+    if ( len != 0 )
+        {
+        iCountryCode.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iCountry.Close();
+    if ( len != 0 )
+        {
+        iCountry.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iGenereName.Close();
+    if ( len != 0 )
+        {
+        iGenereName.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iGenereId.Close();
+    if ( len != 0 )
+        {
+        iGenereId.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iLastModified.Close();
+    if ( len != 0 )
+        {
+        iLastModified.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iAdvertisementUrl.Close();
+    if ( len != 0 )
+        {
+        iAdvertisementUrl.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iAdvertisementInUse.Close();
+    if ( len != 0 )
+        {
+        iAdvertisementInUse.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iImgUrl.Close();
+    if ( len != 0 )
+        {
+        iImgUrl.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iDescription.Close();
+    if ( len != 0 )
+        {
+        iDescription.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iShortDesc.Close();
+    if ( len != 0 )
+        {
+        iShortDesc.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iMusicStoreStatus.Close();
+    if ( len != 0 )
+        {
+        iMusicStoreStatus.CreateL( aReadStream, len );
+        }
+
+    len = aReadStream.ReadInt32L();
+    iLogoData.Close();
+    if ( len != 0 )
+        {
+        iLogoData.CreateL( aReadStream, len );
+        }
+
+	//internalizing the preset data
+	CIRChannelServerUrl *url = NULL;
+	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
+		{
+		url = CIRChannelServerUrl::NewLC();
+		url->InternalizeL(aReadStream);
+		iUrlArray->AppendL(url);
+	    CleanupStack::Pop(url);
+		}
+
+    iPlayedTimes = aReadStream.ReadInt32L();
+	iRenamed = aReadStream.ReadInt32L();
+    IRLOG_DEBUG( "CIRPresetImpl::InternalizeL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// void CIRPresetImpl::CIRIsdsPresetToCIRPresetImplL(const CIRIsdsPreset& aIsdsPreset)
+// used to convert the isdspresets to plugnized presets.
+// Does a deep copy for all the member variables
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::CIRIsdsPresetToCIRPresetImplL( const CIRIsdsPreset& aIsdsPreset )
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl" );
+    iPresetId = aIsdsPreset.GetId();
+    iChannelUrlCount = aIsdsPreset.GetUrlCount();
+    iType = aIsdsPreset.GetChannelType(); //0 for user defined 1 for isds type.
+
+    TRAP_IGNORE( SetNameL( aIsdsPreset.GetName() ) )
+    SetLangCodeL( aIsdsPreset.GetLangId() );
+
+    SetLogoDataL( aIsdsPreset.GetLogoData() );
+    SetLangL( aIsdsPreset.GetLangName() );
+    SetCountryCodeL( aIsdsPreset.GetCountryId() );
+    SetCountryNameL( aIsdsPreset.GetCountryName() );
+    SetLastModifiedTimeL( aIsdsPreset.GetLastModifiedTime() );
+    SetAdvertisementUrlL( aIsdsPreset.GetAdvertisementUrl() );
+    SetAdvertisementInUseL( aIsdsPreset.GetAdvertisementInUse() );
+    SetImgUrlL( aIsdsPreset.GetImgUrl() );
+    SetDescriptionL( aIsdsPreset.GetDescription() );
+    SetShortDescL( aIsdsPreset.GetShortDescription() );
+    SetMusicStoreStatusL( aIsdsPreset.GetMusicStoreStatus() );
+    SetGenreInfoL( aIsdsPreset.GetGenreId(), aIsdsPreset.GetGenreName() );
+
+
+    iUrlArray->ResetAndDestroy();
+
+    for ( TInt cnt = 0; cnt < aIsdsPreset.GetUrlCount(); cnt++ )
+        {
+        ASSERT( cnt >= 0 && cnt < aIsdsPreset.iUrlArray->Count() );
+        TRAPD(errUrl,SetUrlL( aIsdsPreset.iUrlArray->At(cnt)->GetServerName(),
+                              aIsdsPreset.iUrlArray->At(cnt)->GetServerUrl(),
+                              aIsdsPreset.iUrlArray->At(cnt)->GetBitRate() ) )
+        if ( errUrl != KErrNone )
+            {
+            return;
+            }
+        }
+    IRLOG_DEBUG( "CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl - Exiting." );
+    }
+/*
+ // ---------------------------------------------------------------------------
+ // void CIRPresetImpl::UserDefinedPresetToCIRPresetImpl
+ // used to convert the userdefined preset to plugnized presets.
+ // Does a deep copy for all the member variables
+ // ---------------------------------------------------------------------------
+ //
+ void CIRPresetImpl::UserDefinedPresetToCIRPresetImpl(const TDesC& aName,
+ const TDesC& aURl,TInt aId,TInt aIndex)
+ {
+ IRLOG_DEBUG( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl" );
+ iPresetId=aId;
+ TRAP_IGNORE(SetNameL(aName))
+ SetChannelType(0);//type set to user defined
+ //done to match the API,new API should be exposed by DS to accept only Url
+ _LIT(KServerName,"NA");
+ //copy the url
+ TRAPD(errUrl,SetUrlL(KServerName,aURl,0))
+ if(errUrl!=KErrNone)
+ {
+ IRLOG_ERROR2( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl - SetUrlL left with %d.", errUrl );
+ return ; // WHATTHEHECK
+ }
+ // manually added channels have only one channel url
+ SetUrlCount(1);
+ IRLOG_DEBUG( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl - Exiting." );
+ }
+ */
+
+// ---------------------------------------------------------------------------
+//CIRPresetImpl::CopyPresetDataL()
+// copy data to CIRIsdsPreset
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::CopyPresetDataL( CIRIsdsPreset& aIsdsPreset ) const
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::CopyPresetDataL" );
+    aIsdsPreset.SetId( iPresetId );
+    aIsdsPreset.SetUrlCount( iChannelUrlCount );
+    aIsdsPreset.SetChannelType( iType ); //0 for user defined 1 for isds type.
+    //algo
+    //1.check if the CIRIsdsPreset,member contains any data
+    //2.if yes delete it and set it to null
+    //3.allocate memory and copy data
+    aIsdsPreset.SetGenreNameL( iGenereName );
+    aIsdsPreset.SetGenreIdL( iGenereId );
+    aIsdsPreset.SetLangCodeL( iLanguageCode );
+
+    aIsdsPreset.SetLogoDataL( iLogoData );
+    aIsdsPreset.SetLangL( iLanguage );
+    aIsdsPreset.SetCountryCodeL( iCountryCode );
+    aIsdsPreset.SetCountryNameL( iCountry );
+    aIsdsPreset.SetNameL( Name() );
+    aIsdsPreset.SetLastModifiedTimeL( iLastModified );
+    aIsdsPreset.SetAdvertisementUrlL( iAdvertisementUrl );
+    aIsdsPreset.SetAdvertisementInUseL( iAdvertisementInUse );
+    aIsdsPreset.SetImgUrlL( iImgUrl );
+    aIsdsPreset.SetDescriptionL( iDescription );
+    aIsdsPreset.SetShortDescL( iShortDesc );
+    aIsdsPreset.SetMusicStoreStatusL( iMusicStoreStatus );
+
+    aIsdsPreset.iUrlArray->ResetAndDestroy();
+
+    for ( TInt cnt = 0; cnt < iChannelUrlCount; cnt++ )
+        {
+        ASSERT( cnt >= 0 && cnt < iUrlArray->Count() );
+        TRAPD(errUrl,aIsdsPreset.SetUrlL( iUrlArray->At(cnt)->GetServerName(),
+                                          iUrlArray->At(cnt)->GetServerUrl(),
+                                          iUrlArray->At(cnt)->GetBitRate() ) )
+        if ( errUrl != KErrNone )
+            {
+            return;
+            }
+        }
+    IRLOG_DEBUG( "CIRPresetImpl::CopyPresetDataL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetAvailableBitrates()
+// Function to get available bitrates
+// ---------------------------------------------------------------------------
+//
+RArray<TInt>& CIRPresetImpl::GetAvailableBitrates()
+    {
+    IRLOG_DEBUG( "CIRPresetImpl::GetAvailableBitrates" );
+    iBitrateArray.Reset();
+    //creates an array of bitrates(int)that are available for a particular preset
+    for ( TInt loop = 0; loop < iUrlArray->Count(); loop++ )
+        {
+        iBitrateArray.InsertInOrder( iUrlArray->At( loop )->GetBitRate() );
+        }
+    IRLOG_DEBUG( "CIRPresetImpl::GetAvailableBitrates - Exiting." );
+    return iBitrateArray;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetPlayedTimes()
+// Returns the played times of the channel
+// ---------------------------------------------------------------------------
+//
+TInt CIRPresetImpl::GetPlayedTimes() const
+    {
+    return iPlayedTimes;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the played times of the channel
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetPlayedTimes( TInt aPlayedTimes )
+    {
+    iPlayedTimes = aPlayedTimes;
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::GetRenamed()
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CIRPresetImpl::GetRenamed() const
+    {
+    return iRenamed;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRPresetImpl::SetRenamed()
+// 
+// ---------------------------------------------------------------------------
+//
+void CIRPresetImpl::SetRenamed()
+    {
+    iRenamed = ETrue;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/src/irpresetpluginproxy.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+#include <implementationproxy.h>
+
+#include "irpresetimpl.h"
+
+// The implementation proxy table that lists all interfaces and 
+// their implementations contained within this plugin.
+const TImplementationProxy KIRPresetPluginImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( 0x10009DC1, CIRPresetImpl:: NewL) 
+    };
+
+
+// ---------------------------------------------------------------------------
+// Entry point for ECOM plugins.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof( KIRPresetPluginImplementationTable ) / 
+                  sizeof(TImplementationProxy);
+    return KIRPresetPluginImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irrfsplugin/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+irrfsplugin.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irrfsplugin/group/irrfsplugin.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Project definition file for project Internet Radio RFS plugin
+*
+*/
+
+#include 		<platform_paths.hrh>
+
+TARGET                  irrfsplugin.dll
+TARGETTYPE              PLUGIN
+UID                     0x10009D8D 0x2000B4AC
+
+CAPABILITY              CAP_ECOM_PLUGIN
+VENDORID                VID_DEFAULT
+
+PAGED
+
+SOURCEPATH              ../src
+SOURCE                  irrfsplugin.cpp
+SOURCE                  irrfspluginproxy.cpp
+
+SOURCEPATH              ../../resources
+START RESOURCE          2000b4ac.rss
+TARGET                  irrfsplugin.rsc
+END // RESOURCE
+
+USERINCLUDE             ../inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+
+SMPSAFE
+
+LIBRARY                 ecom.lib
+LIBRARY                 efsrv.lib
+LIBRARY                 euser.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irrfsplugin/inc/irrfsplugin.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  RFS ECOM plugin for Internet Radio
+*
+*/
+
+
+#ifndef C_IRRFSPLUGIN_H
+#define C_IRRFSPLUGIN_H
+
+#include <rfsPlugin.h>
+
+/**
+ *  Internet Radio RFS ECOM plugin implementation.
+ *
+ *  Handles deleting of Internet Radio files when RFS operation is invoked.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CIRRfsPlugin ) : public CRFSPlugin
+    {
+
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since   S60 v3.2
+     * @param   aInitParams   Initialisation parameters.
+     * @return  The created object.
+     */
+    static CIRRfsPlugin* NewL( TAny* aInitParams );
+
+    /**
+     * Destructor.
+     *
+     * @since   S60 v3.2
+     */
+    ~CIRRfsPlugin();
+
+private:
+
+    /**
+     * Constructor.
+     *
+     * @since   S60 v3.2
+     * @param   aInitParams   Initialisation parameters.
+     */
+    CIRRfsPlugin( TAny* aInitParams );
+
+    /**
+     * Second-phase constructor.
+     *
+     * @since   S60 v3.2
+     */
+    void ConstructL();
+
+// from base class CRFSPlugin
+
+    void RestoreFactorySettingsL( const TRfsReason aType );
+    void GetScriptL( const TRfsReason aType, TDes& aPath );
+    void ExecuteCustomCommandL( const TRfsReason aType, TDesC& aCommand );
+
+    };
+
+#endif // C_CIRRFSPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irrfsplugin/src/irrfsplugin.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Internet Radio RFS ECOM plugin implementation
+*
+*/
+
+
+#include <apacmdln.h>
+#include <apgcli.h>
+
+#include "irrfsplugin.h"
+
+// Files that are deleted upon RFS.
+_LIT( KIRLastPlayedFile, "c:\\private\\2000b499\\lastPlayed.dat" );
+_LIT( KIRCacheDatabaseFile, "c:\\private\\2000b499\\cacheDb.db" );
+_LIT( KIRSdsResponseFile, "c:\\private\\2000b499\\iSdsResponse.xml" );
+_LIT( KIRSessionFile, "c:\\private\\2000b499\\Session" );
+_LIT( KIRRadioReportFile, "c:\\private\\2000b499\\RadioReport.xml" );
+_LIT( KIRLogUsageFile, "c:\\private\\2000b499\\LogUsage.gz" );
+_LIT( KIRSettingsFile, "c:\\private\\2000b499\\irsettings.ini" );
+_LIT( KIRBackedUpSettingsFile, "c:\\private\\2000b499\\irsettings_backed_up.ini" );
+_LIT( KIRSettingscreFile, "c:\\private\\10202be9\\persists\\2000B499.cre" );
+
+//for History Database Deletion
+_LIT(KSongHistoryDbFile,"songhistoryDb.db");
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CIRRfsPlugin* CIRRfsPlugin::NewL( TAny* aInitParams )
+    {
+    CIRRfsPlugin* self = new ( ELeave ) CIRRfsPlugin( aInitParams );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CIRRfsPlugin::CIRRfsPlugin( TAny* /*aInitParams*/ )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CIRRfsPlugin::ConstructL()
+    {
+	return;
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CIRRfsPlugin::~CIRRfsPlugin()
+    {
+    // Base class handles the ECOM cleanup.
+    }
+
+// ---------------------------------------------------------------------------
+// From base class CRFSPlugin
+// ---------------------------------------------------------------------------
+//
+void CIRRfsPlugin::RestoreFactorySettingsL( const TRfsReason aType )
+    {
+    if ( aType == ENormalRfs )
+        {
+        RFs fsSession;
+        User::LeaveIfError( fsSession.Connect() );
+
+        fsSession.Delete( KIRLastPlayedFile );
+        fsSession.Delete( KIRCacheDatabaseFile );
+        fsSession.Delete( KIRSdsResponseFile );
+        fsSession.Delete( KIRSessionFile );
+        fsSession.Delete( KIRRadioReportFile );
+        fsSession.Delete( KIRLogUsageFile );
+
+        fsSession.Delete( KIRSettingsFile );
+        fsSession.Delete( KIRBackedUpSettingsFile );
+        fsSession.Delete( KIRSettingscreFile );
+    	fsSession.Delete(KSongHistoryDbFile);
+        
+        fsSession.Close();
+        }
+    else
+        {
+        // RFS type not supported.
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// From base class CRFSPlugin
+// ---------------------------------------------------------------------------
+//
+void CIRRfsPlugin::GetScriptL( const TRfsReason /*aType*/, TDes& aPath )
+    {
+    aPath.Zero();
+	return;
+	}
+
+// ---------------------------------------------------------------------------
+// From base class CRFSPlugin
+// ---------------------------------------------------------------------------
+//
+void CIRRfsPlugin::ExecuteCustomCommandL( const TRfsReason /*aType*/, TDesC& /*aCommand*/ )
+    {
+	return;
+	}
+
+// ======== GLOBAL FUNCTIONS ========
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irrfsplugin/src/irrfspluginproxy.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the RFS ECOM plugin proxy
+*
+*/
+
+
+#include <implementationproxy.h>
+
+#include "irrfsplugin.h"
+
+// The implementation proxy table that lists all interfaces and their implementations contained within this plugin.
+const TImplementationProxy KIRRfsPluginImplementationTable[] =
+    {
+    /*lint -save -e611 (Warning -- Suspicious cast)*/
+    IMPLEMENTATION_PROXY_ENTRY( 0x2000B4DD, CIRRfsPlugin::NewL )
+    /*lint -restore*/
+    };
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ======== GLOBAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Entry point for ECOM plugins.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof( KIRRfsPluginImplementationTable ) / sizeof( TImplementationProxy );
+    return KIRRfsPluginImplementationTable;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/bmarm/irsessionlogu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,26 @@
+EXPORTS
+	_ZN18CIRReportGenerator10ReportSentEv @ 1 NONAME
+	_ZN18CIRReportGenerator11SessionEndLEv @ 2 NONAME
+	_ZN18CIRReportGenerator12LogSongRecogEv @ 3 NONAME
+	_ZN18CIRReportGenerator13UpdateNmsTypeERK7TDesC16 @ 4 NONAME
+	_ZN18CIRReportGenerator14NmsLogStartedLEv @ 5 NONAME
+	_ZN18CIRReportGenerator15LogServerResultERK7TDesC169TResponse @ 6 NONAME
+	_ZN18CIRReportGenerator15SessionStartedLEv @ 7 NONAME
+	_ZN18CIRReportGenerator15UpdateChannelIDEi @ 8 NONAME
+	_ZN18CIRReportGenerator16HandleStopEventsEi @ 9 NONAME
+	_ZN18CIRReportGenerator16MarkSessionStartEv @ 10 NONAME
+	_ZN18CIRReportGenerator17WriteNmsLogtoXmlLEv @ 11 NONAME
+	_ZN18CIRReportGenerator18UpdateHomeOperatorEi @ 12 NONAME
+	_ZN18CIRReportGenerator18UpdateNmsChannelIDEi @ 13 NONAME
+	_ZN18CIRReportGenerator18UpdateTerminatedByE18TTerminationStatus @ 14 NONAME
+	_ZN18CIRReportGenerator19SetDbStatusObserserEP22MIRLogDbStatusObserver @ 15 NONAME
+	_ZN18CIRReportGenerator19UpdateConnectedFromE14TConnectedFrom @ 16 NONAME
+	_ZN18CIRReportGenerator20UpdateConnectionTypeERK7TDesC16 @ 17 NONAME
+	_ZN18CIRReportGenerator20UpdateCurrentNetworkEi @ 18 NONAME
+	_ZN18CIRReportGenerator21UpdateNmsHomeOperatorEi @ 19 NONAME
+	_ZN18CIRReportGenerator23ReponseFromISDSObtainedEv @ 20 NONAME
+	_ZN18CIRReportGenerator23UpdateNmsCurrentNetworkEi @ 21 NONAME
+	_ZN18CIRReportGenerator26UpdateCurrentBrowseNetworkEi @ 22 NONAME
+	_ZN18CIRReportGenerator5OpenLEv @ 23 NONAME
+	_ZN18CIRReportGenerator9BrowseUrlERK7TDesC16i @ 24 NONAME
+	_ZN18CIRReportGenerator9LogBrowseERK6TDesC8i @ 25 NONAME
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/bwinscw/irsessionlogu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,26 @@
+EXPORTS
+	?MarkSessionStart@CIRReportGenerator@@QAEXXZ @ 1  NONAME ; void CIRReportGenerator::MarkSessionStart(void)
+	?BrowseUrl@CIRReportGenerator@@QAEXABVTDesC16@@H@Z @ 2  NONAME ; void CIRReportGenerator::BrowseUrl(class TDesC16 const &, int)
+	?LogServerResult@CIRReportGenerator@@QAEXABVTDesC16@@W4TResponse@@@Z @ 3  NONAME ; void CIRReportGenerator::LogServerResult(class TDesC16 const &, enum TResponse)
+	?UpdateNmsChannelID@CIRReportGenerator@@QAEXH@Z @ 4  NONAME ; void CIRReportGenerator::UpdateNmsChannelID(int)
+	?LogSongRecog@CIRReportGenerator@@QAEXXZ @ 5  NONAME ; void CIRReportGenerator::LogSongRecog(void)
+	?UpdateConnectionType@CIRReportGenerator@@QAEXABVTDesC16@@@Z @ 6  NONAME ; void CIRReportGenerator::UpdateConnectionType(class TDesC16 const &)
+	?UpdateNmsType@CIRReportGenerator@@QAEXABVTDesC16@@@Z @ 7  NONAME ; void CIRReportGenerator::UpdateNmsType(class TDesC16 const &)
+	?UpdateNmsCurrentNetwork@CIRReportGenerator@@QAEXH@Z @ 8  NONAME ; void CIRReportGenerator::UpdateNmsCurrentNetwork(int)
+	?UpdateHomeOperator@CIRReportGenerator@@QAEXH@Z @ 9  NONAME ; void CIRReportGenerator::UpdateHomeOperator(int)
+	?UpdateConnectedFrom@CIRReportGenerator@@QAEXW4TConnectedFrom@@@Z @ 10  NONAME ; void CIRReportGenerator::UpdateConnectedFrom(enum TConnectedFrom)
+	?ReponseFromISDSObtained@CIRReportGenerator@@QAEXXZ @ 11  NONAME ; void CIRReportGenerator::ReponseFromISDSObtained(void)
+	?WriteNmsLogtoXmlL@CIRReportGenerator@@QAEXXZ @ 12  NONAME ; void CIRReportGenerator::WriteNmsLogtoXmlL(void)
+	?UpdateCurrentBrowseNetwork@CIRReportGenerator@@QAEXH@Z @ 13  NONAME ; void CIRReportGenerator::UpdateCurrentBrowseNetwork(int)
+	?LogBrowse@CIRReportGenerator@@QAEXABVTDesC8@@H@Z @ 14  NONAME ; void CIRReportGenerator::LogBrowse(class TDesC8 const &, int)
+	?NmsLogStartedL@CIRReportGenerator@@QAEXXZ @ 15  NONAME ; void CIRReportGenerator::NmsLogStartedL(void)
+	?UpdateCurrentNetwork@CIRReportGenerator@@QAEXH@Z @ 16  NONAME ; void CIRReportGenerator::UpdateCurrentNetwork(int)
+	?UpdateChannelID@CIRReportGenerator@@QAEXH@Z @ 17  NONAME ; void CIRReportGenerator::UpdateChannelID(int)
+	?SetDbStatusObserser@CIRReportGenerator@@QAEXPAVMIRLogDbStatusObserver@@@Z @ 18  NONAME ; void CIRReportGenerator::SetDbStatusObserser(class MIRLogDbStatusObserver *)
+	?OpenL@CIRReportGenerator@@SAPAV1@XZ @ 19  NONAME ; class CIRReportGenerator * CIRReportGenerator::OpenL(void)
+	?SessionStartedL@CIRReportGenerator@@QAEXXZ @ 20  NONAME ; void CIRReportGenerator::SessionStartedL(void)
+	?SessionEndL@CIRReportGenerator@@QAEXXZ @ 21  NONAME ; void CIRReportGenerator::SessionEndL(void)
+	?UpdateTerminatedBy@CIRReportGenerator@@QAEXW4TTerminationStatus@@@Z @ 22  NONAME ; void CIRReportGenerator::UpdateTerminatedBy(enum TTerminationStatus)
+	?UpdateNmsHomeOperator@CIRReportGenerator@@QAEXH@Z @ 23  NONAME ; void CIRReportGenerator::UpdateNmsHomeOperator(int)
+	?HandleStopEvents@CIRReportGenerator@@QAEXH@Z @ 24  NONAME ; void CIRReportGenerator::HandleStopEvents(int)
+	?ReportSent@CIRReportGenerator@@QAEXXZ @ 25  NONAME ; void CIRReportGenerator::ReportSent(void)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+prj_mmpfiles
+irsessionlog.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/group/irsessionlog.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Project definition file for project Internet Radio sessionlog
+*
+*/
+
+#include 		<platform_paths.hrh>
+
+TARGET        irsessionlog.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x2000B4A6
+
+SOURCEPATH    ../src
+//CAPABILITY NetworkServices ProtServ ReadDeviceData ReadUserData SwEvent UserEnvironment WriteDeviceData WriteUserData TrustedUI
+CAPABILITY				CAP_GENERAL_DLL
+
+PAGED
+
+
+SOURCE        irsessionlogger.cpp
+SOURCE        irsessionloggerutility.cpp
+SOURCE	      irsessiondb.cpp
+SOURCE        irnmslogdb.cpp
+SOURCE        irnmslogger.cpp
+SOURCE        irphoneinfo.cpp
+
+USERINCLUDE   ../inc
+USERINCLUDE   ../../inc
+USERINCLUDE   ../../irsettings/inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             charconv.lib 
+LIBRARY             cone.lib 
+LIBRARY             edbms.lib 
+LIBRARY             efsrv.lib
+LIBRARY             estor.lib 
+LIBRARY             euser.lib
+LIBRARY             ezlib.lib 
+LIBRARY             irsettings.lib
+LIBRARY             sysutil.lib
+LIBRARY             etel3rdparty.lib
+LIBRARY             imut.lib
+LIBRARY             flogger.lib
+
+#if defined( WINSCW )
+DEFFILE         ../bwinscw/ 
+#else
+DEFFILE         ../bmarm/ 
+#endif
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irdbstatusobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef M_IRDBSTATUSOBSERVER_H
+#define M_IRDBSTATUSOBSERVER_H
+
+class MIRLogDbStatusObserver
+    {
+	
+public:
+	
+    virtual void LogDbNeedFlush() = 0;
+    
+    };
+
+#endif //M_IRDBSTATUSOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irnmslogdb.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,145 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef C_IRNMSLOGDB_H
+#define C_IRNMSLOGDB_H
+
+#include <d32dbms.h>
+
+class CIRNmsLogger;
+
+NONSHARABLE_CLASS( CIRNmsLogDb ) : public CBase
+    {                                                
+    //member functions
+public:
+
+    /**
+    * Function : NewL()
+    * Two phased construction
+    * @return instance of CIRNmsLogDb
+    */
+    static CIRNmsLogDb* NewL();
+    
+    /**
+    * Function : NewLC()
+    * Two phased construction
+    * @return instance of CIRNmsLogDb
+    */    
+    static CIRNmsLogDb* NewLC();
+    
+    /**
+    * Function : ~CIRNmsLogDb()
+    * default destructor
+    */    
+    ~CIRNmsLogDb();
+
+    /**
+    * Function : CreateDbConditional()
+    * Creates both the dbms files conditionally(only if not yet created)
+    * @param session database file
+    * @return errcode
+    */    
+    TInt CreateDbConditional( TFileName &aNmsLog );
+
+    /**
+    * Function : AddNmsLogStartL()
+    * adds the NmsLog log entry into data base
+    * @param NmsLog data instance
+    */
+    void AddNmsLogStartL( CIRNmsLogger& aNmsLog );
+    
+    /**
+    * CIRNmsLogDb::GetAllNmsLogL()
+    * gets all the preset into an array 
+    */
+    void GetAllNmsLogL( CArrayPtrFlat<CIRNmsLogger>& aNmsLogDataList );
+    
+    /**
+    * Function : DeleteAllNmsLogL
+    * delete all the NmsLog from NmsLog log entry
+    */
+    void DeleteAllNmsLogL();
+
+private: 
+
+    /**
+    * Function : ConstructL()
+    * two phase construction
+    */   
+    void ConstructL();
+    
+    /**
+    * Function : CloseDb()
+    * Closes the database 
+    */
+    void CloseDb();
+    
+    /**
+    * Function : CreateNmsLogTableL
+    * creates NmsLoglogtable with two column one is NmsLogid and rest of NmsLog
+    * log data
+    * ---------------------------------------------------------------------------
+    * NmsLogTable
+    *---------------------------
+    *| KID   |     KNmsLogCol |
+    *---------------------------
+    *|TInt32 | EDbColLongText8 |
+    *---------------------------
+    */    
+    void CreateNmsLogTableL();
+    
+    /**
+    * Function : CreateNmsLogIndexL
+    * sets NmsLogid as the primary key
+    */  
+    void CreateNmsLogIndexL();
+    
+    /**
+    * Function : OpenDbL()
+    * opening the data base 
+    */
+    void OpenDbL();
+    
+    /**
+    * Function : CreateDbL()
+    * creates both the dbms files 
+    * database filename
+    */    
+    void CreateDbL( TFileName& aNmsLog );
+
+    //data members                                        
+private:
+
+    /**
+    * database file
+    */
+    TFileName iDbFile;
+    
+    /**
+    * file session
+    */
+    RFs iFsSession;
+    
+    /**
+    * data base handler
+    */
+    RDbNamedDatabase iNmsLogDb;
+    
+    };
+
+#endif  //C_IRNMSLOGDB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irnmslogger.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,243 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef C_IRNMSLOGGER_H
+#define C_IRNMSLOGGER_H
+
+#include <e32base.h>
+
+#include "irsessionparams.h"
+
+class RReadStream;
+class RWriteStream;
+
+/**
+* This class can hold data for Nms log 
+*/
+
+NONSHARABLE_CLASS( CIRNmsLogger ) : public CBase
+    {
+public:
+    /**
+    * Function: NewL
+    * Two phase constructor returns the instance of CIRNmsLogger
+    * @returns instance of CIRNmsLogger
+    */
+    static CIRNmsLogger* NewL();
+
+    /**
+    * Function: NewLC
+    * Two phase constructor creates the instance of CIRNmsLogger
+    * @returns instance of CIRNmsLogger
+    */
+    static CIRNmsLogger* NewLC(); 
+
+    /**
+    * Function: ~CIRNmsLogger
+    * default destructor
+    */    
+    ~CIRNmsLogger();
+    
+private:
+    /**
+    * Function: ConstructL
+    * Two phase constructor
+    */    
+    void ConstructL();
+    
+    /**
+    * Function: CIRNmsLogger
+    * default constructor
+    */    
+    CIRNmsLogger();    
+
+public:
+    
+
+    /**
+    * Function: ResetResource
+    * reset data from channel server
+    */
+    void ResetResource();
+
+
+    /**
+    * Function: UpdateChannelID
+    * updates the channel id
+    * @param channel id
+    */    
+    void UpdateChannelID( TInt aChanneldID );
+    
+    /**
+    * Function: UpdateCurrentNetwork
+    * updates the current network
+    * @param current network
+    */
+    void UpdateCurrentNetwork( TInt aCurrentNetwork );
+    
+    /**
+    * Function: UpdateHomeOperator
+    * updates the home network
+    * @param home network
+    */
+    void UpdateHomeOperator( TInt aHomeOperator );
+
+    /**
+    * Function : UpdateNmsStartGMTTime
+    * function updates Nms start time with current GMT time
+    */
+    void UpdateNmsStartGMTTime();
+    
+    /**
+    * Function: UpdateNmsType
+    * updates the nms type
+    * @param nms type
+    */
+    void UpdateNmsType( const TDesC& aNmsType );
+
+    /**    
+    * Function: ChannelID
+    * return the channel id
+    * @return channel id
+    */    
+    TInt ChannelID() const;
+    
+    /**
+    * Function: CurrentNetwork
+    * returns the Current Network
+    * @return Current Network
+    */    
+    TInt CurrentNetwork() const;
+    
+    /**
+    * Function: HomeOperator
+    * returns the home network
+    * @return home network
+    */
+    TInt HomeOperator() const;
+    
+    
+    /**
+    * Function: StartTime
+    * returns the start time
+    * @return start time
+    */    
+    TDes& StartTime();
+    
+    /**
+    * Function: NmsType
+    * returns the nms type
+    * @return nms type
+    */    
+    TDesC& NmsType();
+
+    /**
+    * Function: NmsLogId
+    * returns the nmslog id
+    * @return n nmslog id
+    */    
+    
+    TInt NmsLogId() const;
+    
+    
+    /**
+    * Function: FileName
+    * returns file name
+    * @return file name
+    */
+    TFileName FileName();
+    
+    /** 
+    * Function: DateTime
+    * returns Nms start time
+    * @return Nms start time
+    */
+    TTime DateTime();
+    
+    /**
+    * Function: GetBackedUp
+    * Back up the given Nms, copies the data of the Nms
+    * @param Nms logs instance which to be copied
+    */
+    void GetBackedUp( CIRNmsLogger& aNms );
+    
+    /**
+    * Function: ExternalizeL
+    * externialize the stream to the given stream
+    * @param write stream
+    */
+    void ExternalizeL( RWriteStream& aWriteStream );
+    
+    /**
+    * Function: InternalizeL
+    * gets the data from the stream
+    * @param read stream
+    */
+    void InternalizeL( RReadStream& aReadStream );
+    
+
+private:  
+    /**                                    
+    * file name 
+    */                                    
+    TFileName iFilePath;
+    
+    /**
+    * Nms start time
+    */
+    TTime iStartNmsTime;
+    
+    /**
+    * time current Nms become active started
+    */
+    TTime iActiveNmsTime;
+    
+    
+    /**
+    * start time is stored
+    */
+    TBuf<64> iStartTime;
+    
+
+    /**
+    * NmsLog id
+    */
+    TInt iNmsLogId;
+    
+    /**
+    * channel id
+    */
+    TInt iChannelId;
+    
+    /**
+    * home operator mcc+mnc
+    */
+    TInt iHomeOperator;
+    
+    /**
+    * current operator mcc+mnc
+    */
+    TInt iNmsCurrentNetwork;
+    
+    /**
+    * nms type information    
+    */
+	TBuf<16> iNmsType;
+    };
+
+#endif //C_IRNMSLOGGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irphoneinfo.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRPHONEINFO_H
+#define IRPHONEINFO_H
+
+#include <e32base.h>
+#include <etel3rdparty.h>
+
+class CTelephony;
+class MIRPhoneInfoObserver;
+
+NONSHARABLE_CLASS(CPhoneInfo) : public CActive
+    {
+public:
+    static CPhoneInfo* NewL(MIRPhoneInfoObserver* aObserver);
+    ~CPhoneInfo();
+
+    void StartUpdating();
+
+private:
+    CPhoneInfo(MIRPhoneInfoObserver* aObserver);
+    void ConstructL();
+
+    void RunL();
+    void DoCancel();
+
+private:
+    CTelephony::TPhoneIdV1 iPhoneIdV1;
+    CTelephony::TPhoneIdV1Pckg iPhoneIdV1Pckg;
+
+    CTelephony* iTelephony;
+    MIRPhoneInfoObserver* iObserver;
+    };
+
+#endif // IRPHONEINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irreportsettings.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRREPORTSETTINGS_H
+#define IRREPORTSETTINGS_H
+
+#include <e32def.h>
+
+_LIT( KSession, "Session" );
+
+_LIT( KNmsLog, "NmsLog" );
+
+_LIT( KLogFileName, "RadioReport.xml" );
+
+_LIT( KGZipLogFileName, "LogUsage.gz" );
+
+_LIT( KField, "Field" );
+
+_LIT( KXmlHeader, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
+
+
+//RadioReport
+
+_LIT(KRPSTARTTAG,"<radioReport ver=\"Field\"  IRID=\"Field\" id=\"Field\">");
+
+_LIT( KRPENDTAG, "</radioReport>" );
+
+//Session log
+
+_LIT( KSESSIONSTARTTAG, "<session starttime=\"Field\" duration=\"Field\" terminatedBy=\"Field\" connectedFrom=\"Field\" id=\"Field\"><channelid>Field</channelid>" );
+
+_LIT( KSERVERRESULTTAG, "<serverResult url=\"Field\">Field</serverResult>" );
+
+_LIT( KCONNECTIONTAG, "<connection type=\"Field\"><operator currentNetwork=\"Field\" homeOperator=\"Field\"/></connection>" );
+
+_LIT( KSESSIONENDTAG, "</session>" );
+
+//Browse log
+
+_LIT( KBROWSESTARTTAG, "<browseLog>" );
+
+_LIT( KBROWSEENDTAG, "</browseLog>" );
+
+_LIT( KBROWSETAG, "<browse url=\"Field\" timeStamp=\"Field\" currentNetwork=\"Field\"/>" );
+
+
+/**
+ * for nmsLogs ( Nokia Music Store Logs Information )
+ * 
+ */
+_LIT( KNMSLOGSTARTTAG, "<nmsLog>" );
+_LIT( KNMSLOGENDTAG, "</nmsLog>" );
+_LIT(KNMSEVENTTAG, "<nmsEvent timeStamp=\"Field\" channelId=\"Field\" type=\"Field\"><operator currentNetwork=\"Field\" homeOperator=\"Field\"/></nmsEvent>" );
+
+/**
+ * for song recognition Logs (Shazam Logs Information)
+ * 
+ */
+_LIT(KSONGRECOGLOGSTARTTAG, "<songRecogLog>");
+_LIT(KSONGRECOGLOGENDTAG, "</songRecogLog>");
+_LIT(KSONGRECOGEVENTTAG, "<songRecogEvent timeStamp=\"Field\"></songRecogEvent>");
+
+
+//Advertisement log
+
+//Terminatedby
+_LIT( KUSER, "user" );
+
+_LIT( KNOCONNECTIONTOSERVER, "noConnectionToServer" );
+
+_LIT( KNOCONNECTIONTONETWORK, "noConnectionToNetwork" );
+
+//Connected from
+
+_LIT( KISDS,"isds" );
+
+_LIT( KPRESETADHOC,"preset-adhoc" );
+_LIT( KPRESETISDS,"preset-isds" );
+
+_LIT( KHISTORYADHOC,"history-adhoc" );
+_LIT( KHISTORYISDS,"history-isds" );
+_LIT( KADHOCMANUAL,"adhoc-manual" );
+_LIT( KADHOCEXTERNAL,"adhoc-external" );
+
+//Connection type
+
+//ServerResult
+_LIT( KConnected, "Connected" );
+
+_LIT( KFull, "ServerFull" );
+
+_LIT( KConnTimeOut, "ConnectionTimeOut" );
+
+_LIT( KConnectionFailed, "ConnectionFailed" );
+
+#endif //IRREPORTSETTINGS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irsessiondb.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef C_IRSESSIONDB_H
+#define C_IRSESSIONDB_H
+
+#include <d32dbms.h>
+
+class CIRSessionLogger;
+
+NONSHARABLE_CLASS( CIRSessionDb ) : public CBase
+    {                                                
+    //member functions
+public:
+
+    /**
+    * Function : NewL()
+    * Two phased construction
+    * @return instance of CIRSessionDb
+    */
+    static CIRSessionDb* NewL();
+    
+    /**
+    * Function : NewLC()
+    * Two phased construction
+    * @return instance of CIRSessionDb
+    */    
+    static CIRSessionDb* NewLC();
+    
+    /**
+    * Function : ~CIRSessionDb()
+    * default destructor
+    */    
+    ~CIRSessionDb();
+
+    /**
+    * Function : CreateDbConditional()
+    * Creates both the dbms files conditionally( only if not yet created )
+    * @param session database file
+    * @return errcode
+    */    
+    TInt CreateDbConditional( TFileName &aSession );
+
+    /**
+    * Function : AddSessionStartL()
+    * adds the session log entry into data base
+    * @param session data instance
+    */
+    void AddSessionStartL( CIRSessionLogger& aSession );
+    
+    /**
+    * CIRSessionDb::GetAllPresetL()
+    * gets all the preset into an array 
+    */
+    void GetAllSessionL( CArrayPtrFlat<CIRSessionLogger>& aSessionDataList );
+    
+    /**
+    * Function : DeleteAllSessionL
+    * delete all the session from session log entry
+    */
+    void DeleteAllSessionL();
+
+private: 
+
+    /**
+    * Function : ConstructL()
+    * two phase construction
+    */   
+    void ConstructL();
+    
+    /**
+    * Function : CloseDb()
+    * Closes the database 
+    */
+    void CloseDb();
+    
+    /**
+    * Function : CreateSessionTableL
+    * creates sessionlogtable with two column one is sessionid and rest of session
+    * log data
+    * ---------------------------------------------------------------------------
+    * SessionTable
+    *---------------------------
+    *| KID   |     KSessionLogCol |
+    *---------------------------
+    *|TInt32 | EDbColLongText8 |
+    *---------------------------
+    */    
+    void CreateSessionTableL();
+    
+    /**
+    * Function : CreateSessionIndexL
+    * sets sessionid as the primary key
+    */  
+    void CreateSessionIndexL();
+    
+    /**
+    * Function : OpenDbL()
+    * opening the data base 
+    */
+    void OpenDbL();
+    
+    /**
+    * Function : CreateDbL()
+    * creates both the dbms files 
+    * database filename
+    */    
+    void CreateDbL( TFileName& aSession );
+
+    //data members                                        
+private:
+
+    /**
+    * database file
+    */
+    TFileName iDbFile;
+    
+    /**
+    * file session
+    */
+    RFs iFsSession;
+    
+    /**
+    * data base handler
+    */
+    RDbNamedDatabase iSessionDb;   
+    };
+
+#endif  //C_IRSESSIONDB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irsessionlogger.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,525 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef C_IRSESSIONLOGGER_H
+#define C_IRSESSIONLOGGER_H
+
+#include <f32file.h>
+
+#include "irsessionparams.h"
+#include "mirphoneinfoobserver.h"
+
+class CIRSessionDb;
+class CIRSessionLogger;
+class CIRSettings;
+class CIRNmsLogDb;
+class CIRNmsLogger;
+class CPhoneInfo;
+class MIRLogDbStatusObserver;
+
+/**
+ * This class is used to provide usage log, various function are to log session
+ * information as well as others, like browse log information. Session logs can be 
+ * stored in internel data base for last 5 session, it is deleted only if the 
+ * response is given. If more than 5 session is happening at any point of time
+ * first one based on session id is removed.
+ * When you end a session a gzip file is generated in private path
+ * This zip file has ( xml file ) session log in xml format
+ * This is single ton implementation use DeleteInstance to delete its 
+ * instance
+ *
+ * @lib irsessionlog.lib
+ * @since S_60 3.0
+ *
+ */
+
+//============================ class declaration ========================
+
+NONSHARABLE_CLASS(CIRReportGenerator) : public CObject,
+                                        public MIRPhoneInfoObserver
+    {
+    //member function
+public:
+
+    /**
+    * Function: NewL
+    * Two phase constructor returns the instance of CIRReportGenerator
+    * this is a single ton implementation
+    * @note Deleting this object directly is not allowed. Please use Close().
+    * @note CleanupClosePushL( generator ) must be used if the object is to be pushed onto cleanup stack.
+    * @returns instance of CIRReportGenerator
+    */    
+    IMPORT_C static CIRReportGenerator* OpenL();
+    
+private:    
+    /**
+    * Function: ~CIRReportGenerator
+    * default destructor
+    */    
+    ~CIRReportGenerator();
+    
+    /**
+    * Function: ConstructL
+    * Two phase constructor
+    */    
+    void ConstructL();
+    
+    /**
+    * Function: CIRReportGenerator
+    * default constructor
+    */    
+    CIRReportGenerator();
+
+public:
+
+    /**
+    * Function: LogServerResult
+    * logs server connection result
+    * @param URL to which connection is attempted
+    * @param response from server
+    */        
+    IMPORT_C void LogServerResult( const TDesC& aUrl, TResponse aResult );    
+    
+    /**
+    * Function: LogSongRecog
+    * logs song recog
+    */  
+    IMPORT_C void LogSongRecog();
+    
+    /**
+    * Function: UpdateCurrentBrowseNetwork
+    * logs network during browsing
+    * @param mcc+ mnc code of current network
+    */  
+    IMPORT_C void UpdateCurrentBrowseNetwork(TInt aNetwork);
+        
+    /**
+    * Function: LogBrowse
+    * logs browse url and status information
+    * @param browse url
+    * @param status information
+    */  
+    IMPORT_C void LogBrowse(const TDesC8& aUrl,TInt aStatus);
+            
+    /**
+    * Function: SessionStartedL
+    * starts a new session
+    */  
+    IMPORT_C void SessionStartedL();
+    /**
+    * Function: NmsLogStartedL
+    * starts a new nmslog
+    */  
+    IMPORT_C void NmsLogStartedL();
+    /**
+    * Function: SessionEnd
+    * marks the a session
+    */      
+    IMPORT_C void SessionEndL();
+    
+    /**
+    * Function: MarkSessionStart
+    * marks the a start of a session
+    */  
+    IMPORT_C void MarkSessionStart();
+    
+    /**
+    * Function: HandleStopEvents
+    * function handle session state change events
+    * @param ETrue if session is progressing and EFalse if not progressing
+    */
+    IMPORT_C void HandleStopEvents(TBool aIsSessionProgressing );
+    
+    /**
+    * Function: UpdateTerminatedBy
+    * updates the termination status
+    * @param terminated by information
+    */  
+    IMPORT_C void UpdateTerminatedBy(TTerminationStatus aTerminatedBy);
+    
+    /**
+    * Function: UpdateConnectedFrom
+    * connected information is stored
+    * @param connected from information
+    */      
+    IMPORT_C void UpdateConnectedFrom( TConnectedFrom aConnectedFrom );
+    
+    /**
+    * Function: BrowseUrl
+    * logs browse url and result
+    * @param URL to which connection is attempted
+    * @param response from server
+    */    
+    IMPORT_C void BrowseUrl( const TDesC& aBrowseUrl, TInt aStatus );
+    
+    /**
+    * Function: UpdateChannelID
+    * updates the channel id
+    * @param channel id
+    */    
+    IMPORT_C void UpdateChannelID( TInt aChanneldID );
+    
+    /**
+    * Function: UpdateCurrentNetwork
+    * updates the current network
+    * @param current network
+    */    
+    IMPORT_C void UpdateCurrentNetwork( TInt aCurrentNetwork );
+    
+    /**
+    * Function: UpdateHomeOperator
+    * updates the home network
+    * @param home network
+    */    
+    IMPORT_C void UpdateHomeOperator( TInt aHomeOperator );
+    
+    /**
+    * Function: UpdateConnectionType
+    * updates the connection type
+    * @param connection type
+    */    
+    IMPORT_C void UpdateConnectionType( const TDesC& aConnectionType );    
+    
+    /**
+    * Function : ReponseFromISDSObtained
+    * This function is called when session log is successfully sent
+    * removes all session log entries from sessiondb
+    */    
+    IMPORT_C void ReponseFromISDSObtained();
+    
+    
+    /**
+     * The following methods are for Nms Event Usage Logging 
+     */
+    
+    
+    /**
+     * Function: UpdateNmsCurrentNetwork
+     * logs network during Music Store launching
+     * @param mcc+ mnc code of current network
+     */    
+    IMPORT_C void UpdateNmsCurrentNetwork( TInt aNetwork );
+    
+    /**
+     * Function: UpdateNmsHomeOperator
+     * logs network during Music Store launching
+     */    
+    IMPORT_C void UpdateNmsHomeOperator( TInt aNetwork );
+    
+    /**
+     * Function: WriteNmsLogtoXmlL
+     * logs nmsEvents to Xml file
+     */    
+    IMPORT_C void WriteNmsLogtoXmlL();
+    /**
+    * Function: UpdateNmsType
+    * updates the Nms type
+    * @param Nms type
+    */    
+    IMPORT_C void UpdateNmsType( const TDesC& aNmsType );        
+    /**
+    * Function: UpdateNmsChannelID
+    * updates the Nms channel id
+    * @param Nms channel id
+    */    
+    IMPORT_C void UpdateNmsChannelID( TInt aChanneldID );
+    /**
+    * Function: SetDbStatusObserser
+    * @param Db Status Observer
+    */    
+    IMPORT_C void SetDbStatusObserser( MIRLogDbStatusObserver *aDbStatusObserver );
+    
+    /**
+    * Function: ReportSent();
+    * notify that the usage report is just sent out to isds server
+    */    
+    IMPORT_C void ReportSent();    
+private:
+
+    /**
+    * Function: CollectSettingsData
+    * collect information during starting of session
+    * like irid, version information.
+    */        
+    void CollectSettingsData();
+    
+    /**
+    * Function: WriteToXmlL
+    * gathers the information and generates sesion log file and zip file
+    * file will be stored in private path
+    */    
+    void WriteToXmlL();        
+    
+    /**
+    * Function: WriteSessionData
+    * gathers session log data and writes to XML file
+    * @param no of urls tried to connect in that particular session
+    */        
+    void WriteSessionData(TInt aIndex);
+    
+    /**
+    * Function: WriteBrowseLog
+    * gathers browse log data and writes to XML file
+    */    
+    void WriteBrowseLog();
+    
+    /**
+    * Function: ZipFileL
+    * generates the zip file from the input xml file
+    * output file is in gzip format and is stored in private path
+    */    
+    void ZipFileL();
+    
+    /**
+    * Function: FormatDateTime
+    * formats the date time given in "%d-%d-%d %d:%d:%d GMT\n" format
+    * copies the result to a descriptor
+    * @param reference of descriptor to which the data is to be copied
+    * @param time to be copied
+    */    
+    void FormatDateTime( TDes& aBuffer, TDateTime aDateTime );
+    
+    /**
+    * Function : WriteSessionLog
+    * Write buffer content to log file
+    */
+    void WriteBufferToLogFile();
+    
+    /**
+    * Function : UnForceSessionEndedL
+    * Write session log
+    * @param instance of session which ended
+    */
+    void UnForceSessionEndedL( CIRSessionLogger* aSession );
+
+    /**
+     * The following methods are for Nms Event Usage Logging 
+     */
+    
+    /**
+    * Function: WriteNmsLogData
+    * gathers Nmslog data and writes to XML file
+    * @param position of the log in the log data array
+    */      
+    void WriteNmsLogData( TInt aIndex );
+    
+    /**
+     * From MIRPhoneInfoObserver
+     */
+    void ImeiUpdatedL( const TDesC& aImei );
+    
+private:
+    /**
+    * opsetting instance 
+    */
+    CIRSettings* iSettingsData;
+    
+    /**
+    * Phone Info 
+    */  
+    CPhoneInfo* iPhoneInfo;
+    
+    /**
+    * instance of session logger
+    */
+    CIRSessionLogger* iSessionLog;
+    /**
+    * instance of nms logger
+    */
+    CIRNmsLogger* iNmsLog;
+    
+    /**
+    * instance of sessiondb
+    */ 
+    CIRSessionDb* iLogSessionDb;
+    /**
+    * instance of NmsLogdb
+    */ 
+    CIRNmsLogDb* iNmsLogDb;
+    /**
+    * instance of Db Status Observer
+    */
+    MIRLogDbStatusObserver *iDbStatusObserver;
+    /**
+    * Indicate whether Nms Log Db has been updated
+    */
+    TBool iNmsLogDbUpdated;
+    /**
+    * Indicate whether Session Log Db has been updated
+    */
+    TBool iSessionLogDbUpdated;
+    /**
+    * Indicate whether usage report sent to isds server has received successful response
+    */
+    TBool iUnComfirmedReportSent;
+    /**
+    * it holds the sessions
+    */
+    CArrayPtrFlat<CIRSessionLogger> *iSessionData;
+    /**
+    * it holds the NmsLog
+    */
+    CArrayPtrFlat<CIRNmsLogger> *iNmsLogData;
+    
+    /**
+    * position in xml file
+    */
+    TInt iFileWritePos;
+
+    /**
+    * stores the network during browsing
+    */
+    TInt iCurrentBrowseNetwork;
+    
+    /**
+    * Checks whether any error has occured while 
+    * writing or retriving from data base
+    */
+    TBool iSessionLogUpdationFailed;
+    /**
+    * Checks whether any error has occured while 
+    * writing or retriving from data base
+    */
+    TBool iNmsLogUpdationFailed;
+    
+    /**
+    * Checks whether db creation is failure or success
+    */
+    TBool iSessionDbCreationFailed;
+    /**
+    * Checks whether db creation is failure or success
+    */
+    TBool iNmsDbCreationFailed;
+    /*
+    * sets when an nms event is generated
+    */
+    TBool iNmsEventFlag;
+    /**
+    * log file
+    */
+    RFile iLogFile;
+    
+    /*
+    * file session
+    */
+    RFs iFsSession;
+    
+    /**
+    * unicode buffer
+    */ 
+    //"MAX_URL_CHARACTOR_NUMBER = 255" is defined 
+    // in iropenwebaddressview.cpp, it is 8bit len char.
+    // the memory should be double when tranfer 8bit to 16bit.  
+    TBuf<512> iUniCodeBuf;  //Unicode
+    
+    /**
+    * utf 8 buffer
+    */
+    TBuf8<256> iUTF8Buffer; //UTF-8
+    
+    /**
+    * version number
+    */
+    TBuf<5> iReportVersion;
+    
+    /**
+    * irid
+    */
+    TBuf<30>  iIRId;
+    
+    /**
+    * Base64 encoded IMEI
+    */
+    HBufC *iImeiBase64;
+    
+    /**
+    * session database file
+    */
+    TFileName iSessFile;
+    /**
+    * session database file
+    */
+    TFileName iNmsLogFile;
+    
+    /**
+    * log files path
+    */
+    TFileName iLogFilePath;
+    
+    /**
+    * instance of browse log    
+    */
+    TIRBrowseLog iRBrowseLog;
+    
+    /**
+    * session start time
+    */
+    TTime iSessionStartTime;
+    
+    /**
+     * Timestamp
+    */
+    TTime iSongRecogTimestamp;  
+    
+    /**
+    * time stamp
+    */
+    TTime iBrowseLogTimeStamp;
+    
+    /**
+    * date
+    */
+    TDateTime iDate;
+    
+    /**
+    * array for storing browse log
+    */    
+    RArray<TIRBrowseLog> iBrowseLog;
+    
+    /**
+    * number of browse logs written to xml
+    */
+    TInt iBrowseLogsCntToXml;
+
+    
+    /**
+     * The following methods are for Nms Event Usage Logging 
+     */
+        
+    /**
+     * Timestamp
+     */
+    TTime iNmsTimestamp; 
+    
+    /**
+     * Type of Event ( i.e., "find" or "launch" )
+     */
+    TInt iNmsType;
+    
+    /**
+     * Nms Event Current netwrok type
+     */
+    TInt iNmsCurrentNetwork;
+    
+    /**
+     * Nms Event Home Operator
+     */
+    TInt iNmsHomeOperator;   
+    };
+
+#endif //C_IRSESSIONLOGGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irsessionloggerutility.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,422 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef C_IRSESSIONLOGGERUTILITY_H
+#define C_IRSESSIONLOGGERUTILITY_H
+
+#include <e32base.h>
+
+#include "irsessionparams.h"
+
+class RReadStream;
+class RWriteStream;
+
+/**
+* This class can hold data for session log 
+*/
+
+NONSHARABLE_CLASS( CIRSessionLogger ) : public CBase
+    {
+public:
+    /**
+    * Function: NewL
+    * Two phase constructor returns the instance of CIRSessionLogger
+    * @returns instance of CIRSessionLogger
+    */
+    static CIRSessionLogger* NewL();
+
+    /**
+    * Function: NewLC
+    * Two phase constructor creates the instance of CIRSessionLogger
+    * @returns instance of CIRSessionLogger
+    */
+    static CIRSessionLogger* NewLC(); 
+
+    /**
+    * Function: ~CIRSessionLogger
+    * default destructor
+    */    
+    ~CIRSessionLogger();
+    
+private:
+    /**
+    * Function: ConstructL
+    * Two phase constructor
+    */    
+    void ConstructL();
+    
+    /**
+    * Function: CIRSessionLogger
+    * default constructor
+    */    
+    CIRSessionLogger();    
+
+public:
+    /**
+    * Function: EndLogging
+    * logs the termination condition
+    */
+    void EndLogging();
+    
+    /**
+    * Function: HandleStartEvents
+    * functtion handles start events
+    */
+    void HandleStartEvents();
+    
+    /**
+    * Function: HandleStopEvents
+    * functtion handles stop events
+    */
+    void HandleStopEvents();
+    
+    /**
+    * Function: MarkSession
+    * Marks the start of a session
+    */
+    void MarkSession();
+
+    /**
+    * Function: UnMarkSession
+    * UnMarks the start of a sessiom
+    */
+    void UnMarkSession();
+    
+    /**
+    * Function: SessionMarked
+    * Returns whether session is marked or not
+    * @return session marked flag
+    */    
+    TBool SessionMarked();
+    
+    /**
+    * Function: LogServerResult
+    * logs server connection result
+    * @param URL to which connection is attempted
+    * @param response from server
+    */
+    void LogServerResult( const TDesC& aUrl, TResponse aResult );    
+	
+    /**
+    * Function: LogSongRecog
+    * logs song recog
+    * @param aTimeStamp song recog timestamp.
+    */	
+	void LogSongRecog( const TDesC& aTimeStamp );
+	
+	/**
+	* Function: GetConnectedFrom
+	* connected information is stored
+	* @param connected from information
+    */
+	void GetConnectedFrom( TConnectedFrom aConnectedFrom );
+    
+    /**
+    * Function: UpdateSessionLog
+    * update the session logs
+    * @param TIRServer structure which holds url response and cound
+    */
+    void UpdateSessionLog( TIRServer& aServer );
+    
+    /**
+    * Function: ResetResource
+    * reset data from channel server
+    */
+    void ResetResource();
+
+    /**
+    * Function: IsSessionProgressing
+    * checks whether session is active or not
+    * @return EFalse if session is currently not progressing
+    */
+    TBool IsSessionProgressing();
+
+    /**
+    * Function: CompensationTime
+    * returns time at which session become active
+    * @return time at which session become active
+    */    
+    TTime CompensationTime();
+
+    /**
+    * Function: UpdateSessionId
+    * updates the session id
+    * @param session id
+    */
+    void UpdateSessionId( TInt aSessionId );
+    
+    /**
+    * Function: UpdateTerminationStatus
+    * updates the termination status
+    * @param terminated by information
+    */    
+    void UpdateTerminationStatus( TTerminationStatus aTerminatedBy );
+    
+    /**
+    * Function: UpdateChannelID
+    * updates the channel id
+    * @param channel id
+    */    
+    void UpdateChannelID( TInt aChanneldID );
+    
+    /**
+    * Function: UpdateCurrentNetwork
+    * updates the current network
+    * @param current network
+    */
+    void UpdateCurrentNetwork( TInt aCurrentNetwork );
+    
+    /**
+    * Function: UpdateHomeOperator
+    * updates the home network
+    * @param home network
+    */
+    void UpdateHomeOperator( TInt aHomeOperator );
+    
+    /**
+    * Function: UpdateConnectionType
+    * updates the connection type
+    * @param connection type
+    */
+    void UpdateConnectionType( const TDesC& aConnectionType );
+    
+    /**
+    * Function : UpdateSessionStartGMTTime
+    * function updates session start time with current GMT time
+    */
+    void UpdateSessionStartGMTTime();
+    
+    /**
+    * Function: TerminationStatus
+    * returns termination status
+    * @return termination status
+    */
+    TDesC& TerminationStatus();
+        
+    /**    
+    * Function: ChannelID
+    * return the channel id
+    * @return channel id
+    */    
+    TInt ChannelID() const;
+    
+    /**
+    * Function: CurrentNetwork
+    * returns the Current Network
+    * @return Current Network
+    */    
+    TInt CurrentNetwork() const;
+    
+    /**
+    * Function: HomeOperator
+    * returns the home network
+    * @return home network
+    */
+    TInt HomeOperator() const;
+    
+    /**
+    * Function: ConnectionType
+    * returns the connection type
+    * @return connection type
+    */    
+    TDesC& ConnectionType();
+    
+    /**
+    * Function: StartTime
+    * returns the start time
+    * @return start time
+    */    
+    TDes& StartTime();
+    
+    /**
+    * Function: ConnectionType
+    * returns the connection type
+    * @return connection type
+    */    
+    TDesC& ConnectedFrom();
+    
+    /**
+    * Function: SessionId
+    * returns the session id
+    * @return session id
+    */    
+    TInt SessionId() const;
+    
+    
+    /**
+    * Function: SessionDuration
+    * returns the duration of the session
+    * @return duration of the session
+    */    
+    TInt SessionDuration() const;
+    
+    /**
+    * Function: FileName
+    * returns file name
+    * @return file name
+    */
+    TFileName FileName();
+    
+    /** 
+    * Function: DateTime
+    * returns session start time
+    * @return session start time
+    */
+    TTime DateTime();
+    
+    /** 
+    *  Function: SessionData
+    *  function returns instance session log array
+    *  @return session log RArray of session log
+    */
+    const RArray<TIRServer>& SessionData()const;
+
+    /** 
+    *  Function: SongRecogLog
+    *  function returns instance song recog log array
+    *  @return song recog log RArray of song recog log
+    */
+    const RArray<TIRSongRecogLog>& SongRecogLog()const;
+    
+    /**
+    * Function: GetBackedUp
+    * Back up the given session, copies the data of the session
+    * @param session logs instance which to be copied
+    */
+    void GetBackedUp( CIRSessionLogger& aSession );
+    
+    /**
+    * Function: ExternalizeL
+    * externialize the stream to the given stream
+    * @param write stream
+    */
+    void ExternalizeL( RWriteStream& aWriteStream );
+    
+    /**
+    * Function: InternalizeL
+    * gets the data from the stream
+    * @param read stream
+    */
+    void InternalizeL( RReadStream& aReadStream );
+    
+    /**
+    * Function: DurationValue
+    * Duration value
+    * @return duration
+    */
+    TTimeIntervalSeconds DurationValue();
+    
+private:  
+    /**                                    
+    * file name 
+    */                                    
+    TFileName iFilePath;
+    
+    /**
+    * session start time
+    */
+    TTime iStartSessionTime;
+    
+    /**
+    * time current session become active started
+    */
+    TTime iActiveSessionTime;
+    
+    /**
+    * session duration
+    */
+    TTimeIntervalSeconds iDurationValue;
+    
+    /**
+    * start time is stored
+    */
+    TBuf<64> iStartTime;
+    
+    /**
+    * terminated by status is stored
+    */
+	TBuf<32> iTerminatedBy;
+    
+    /**
+    * connected from information
+    */
+	TBuf<32> iConnectedFrom;
+    
+    /**
+    * connection type information    
+    */
+	TBuf<32> iSessionConnectionType;
+    
+    /**
+    * session duration
+    */
+    TInt iDuration;
+    
+    /**
+    * Termination status
+    */
+    TTerminationStatus iTerminateBy;
+    
+    /**
+    * Session id
+    */
+    TInt iSessionId;
+    
+    
+    /**
+    * NmsLog id
+    */
+    TInt iNmsLogId;
+    
+    /**
+    * channel id
+    */
+    TInt iChannelId;
+    
+    /**
+    * home operator mcc+mnc
+    */
+    TInt iHomeOperator;
+    
+    /**
+    * current operator mcc+mnc
+    */
+    TInt iSessionCurrentNetwork;
+    
+    /**
+    * Checks whether session is actually started 
+    */    
+    TBool iSessionMarked;    
+    
+    /**
+    * Checks whether application is playing or not 
+    */    
+    TBool iIsSessionProgressing;    
+    
+    /**
+    * session log holder's array
+    */
+    RArray<TIRServer> iRServer;
+		
+    /**
+    * song recog log holder's array
+    */
+    RArray<TIRSongRecogLog> iRSongRecogLog;
+    };
+
+#endif //C_IRSESSIONLOGGERUTILITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/irsessionparams.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef T_IRSESSIONPARAMS_H
+#define T_IRSESSIONPARAMS_H
+
+#include <e32cmn.h>
+
+// Browse Log Url Class
+class TIRBrowseLog
+    {    
+public:
+    //browse url    
+    TBuf<256>     iBrowseUrl;
+    //time stamp
+	TBuf<32> 	iTimeStamp;	
+    //connected from
+	TBuf<16> 	iCurrentNetwork;
+    TInt          iStatus;    //TO check the status for browse url,1 for channel BRowse url
+    }; 
+
+
+// Channel Server Results
+class TIRServer
+    {
+public:
+    //channel url
+    TBuf<256> iServerUrl;
+    //channel url connection result
+	TBuf<32>  iServerResult;
+    TInt       iCount;
+    };
+
+// Song Recog Log
+class TIRSongRecogLog
+    {
+public:
+    TBuf<64> iTimeStamp;
+    };
+
+enum TTerminationStatus
+    {
+    //terminated by user
+    EUserTerminated = 0,
+    //no connection to the server
+    ENoConnectionToServer,
+    //no connection to the network
+    ENoConnectionToNetwork,    
+    };
+    
+enum TConnectedFrom
+	{
+    //when session started straight from station details in iSDS
+    EIRIsds = 0,
+    //when session started from a station details saved to iRAPP favorites and the station is not from iSDS (channel_Id = 0 )
+    EIRPresetAdhoc,
+    //when session started from a station details saved to iRAPP favorites and the station is from iSDS (channel_ID is iSDS channel_ID)
+    EIRPresetIsds,
+    //when session started from iRAPP 'station play history' and the station is not from iSDS (channel_Id = 0 )
+    EIRHistoryAdhoc,
+    //when session started from iRAPP 'station play history' and the station is from iSDS (channel_ID is iSDS channel_ID )
+    EIRHistoryIsds,
+    //when session started from manually entered stream url
+    EIRAdhocManual,
+    //when iRAPP session started/triggered from any iRAPP external client e.g. Browser or SMS/MMS
+    EIRAdhocExternal
+	};
+
+enum TResponse
+    {
+    //connected 
+    EIRConnected = 0,
+    //connection failed because server is full (not responding)
+    EIRFull,
+    //connection timed out
+    EIRConnTimeOut,
+    //connection failed generic senerio like invalid url    
+    EIRConnFailed,
+    };
+
+#endif //T_IRSESSIONPARAMS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/mirphoneinfoobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef MIRPHONEINFOOBSERVER_H
+#define MIRPHONEINFOOBSERVER_H
+
+class MIRPhoneInfoObserver
+	{
+	
+public:
+	
+	virtual void ImeiUpdatedL(const TDesC& aImei) = 0;
+	
+	};
+
+
+#endif //MIRPHONEINFOOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/inc/mirsessionobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef M_IRSESSIONOBSERVER_H
+#define M_IRSESSIONOBSERVER_H
+
+class MIRSessionObserver
+
+    {
+	
+public:
+    virtual void CollectSessionData() = 0;
+    
+    virtual void CollectPresetData( TInt aChannelType ) = 0;
+    
+    virtual void CollectBrowseLog( const TDesC& aBrowseUrl, TInt aStatus ) = 0;
+    
+    };
+
+#endif //M_IRSESSIONOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irnmslogdb.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,433 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <bautils.h>
+
+#include "irdebug.h" 
+#include "irnmslogdb.h"
+#include "irnmslogger.h"
+
+_LIT( KNmsLogTable, "NmsLog" ); 
+_LIT( KID, "id" );
+_LIT( KNmsLogCol,  "NmsLogData" );
+_LIT( KNmsLogIndex, "NmsLogIndex" );
+
+const TInt KMaxNoNmsLog = 15;
+
+// ---------------------------------------------------------------------------
+// Function : NewL()
+// two phased construction
+// ---------------------------------------------------------------------------
+//
+  CIRNmsLogDb* CIRNmsLogDb::NewL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::NewL" );
+    CIRNmsLogDb* self;
+    self = CIRNmsLogDb::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRNmsLogDb::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Function : NewLC()
+// Two phased construction
+// ---------------------------------------------------------------------------
+//
+  CIRNmsLogDb* CIRNmsLogDb::NewLC()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::NewLC" );
+    CIRNmsLogDb *self;
+    self = new( ELeave )CIRNmsLogDb;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRNmsLogDb::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::~CIRNmsLogDb()
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRNmsLogDb::~CIRNmsLogDb()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::~CIRNmsLogDb" );
+    CloseDb();
+    iFsSession.Close();
+    IRLOG_DEBUG( "CIRNmsLogDb::~CIRNmsLogDb - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::CreateDbConditional()
+// Creates both the dbms files conditionally( only if not yet created )
+// calls CreateDbL()
+// ---------------------------------------------------------------------------
+//
+ TInt CIRNmsLogDb::CreateDbConditional( TFileName &aNmsLog )
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional" );
+    iDbFile.Copy( aNmsLog );
+    if ( !BaflUtils::FileExists( iFsSession, iDbFile ) )
+        {
+        TRAPD( error, CreateDbL( iDbFile ) );
+        if ( error )
+            {
+            IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional - Exiting ( 1 )." );
+            return error;
+            }    
+        }
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional - Exiting ( 2 )." );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb:AddNmsLogStartL()
+// adds the NmsLog log entry into data base
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::AddNmsLogStartL( CIRNmsLogger& aNmsLog )
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::AddNmsLogStartL" );
+    OpenDbL();
+    RDbTable nmsLogtable;
+    TInt error=nmsLogtable.Open( iNmsLogDb, KNmsLogTable, nmsLogtable.
+        EUpdatable );
+    CleanupClosePushL( nmsLogtable );
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    
+    //! arrange the presets in incresing order of index
+    nmsLogtable.SetIndex( KNmsLogIndex );
+    nmsLogtable.Reset();
+
+    //if NmsLog log is greater or equal to than 5
+    if ( nmsLogtable.CountL() >= KMaxNoNmsLog )
+        {
+        //first row is selected
+        nmsLogtable.FirstL();
+        //the current row is selected
+        nmsLogtable.GetL();
+        //delete that entry
+        nmsLogtable.DeleteL();
+        }    
+    CleanupStack::PopAndDestroy( &nmsLogtable );
+    //Algorithm : else condition need not handle seperatly
+    //Algorithm : add NmsLogid and informations like
+    //starttime,connectedfrom,NmsLogid,connectiontype,channelid
+    //currentnetwork,homenetwork,NmsLogtable 
+    //Algorithm: if no. of NmsLog is greater than 5
+
+    _LIT( query, "SELECT * FROM %S" );    
+    HBufC* sqlStr=HBufC::NewLC( query().Length() + KNmsLogTable().Length() );
+    sqlStr->Des().Format( query, &KNmsLogTable );
+    
+    // Create a view on the database
+    RDbView view;     
+    error = view.Prepare( iNmsLogDb, *sqlStr );
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    CleanupStack::PopAndDestroy( sqlStr );     
+    CleanupClosePushL( view );
+    error = view.EvaluateAll();
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    CDbColSet* columns = view.ColSetL();
+    CleanupStack::PushL( columns );
+    
+    RDbColWriteStream writeStream;
+    TRAP( error, //trap start
+       // Insert a row. Column order matches sql select statement
+        view.InsertL();
+        //get index
+        view.SetColL( columns->ColNo( KID ), aNmsLog.NmsLogId() );    
+        //!open stream
+        writeStream.OpenLC( view, columns->ColNo( KNmsLogCol ) );
+        aNmsLog.ExternalizeL( writeStream );
+        writeStream.CommitL();
+        CleanupStack::PopAndDestroy( &writeStream );
+         );
+         
+     CleanupStack::PopAndDestroy( columns );
+     if ( error != KErrNone )
+         {
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+    view.PutL();
+     CleanupStack::PopAndDestroy( &view );
+     CloseDb();
+     IRLOG_DEBUG( "CIRNmsLogDb::AddNmsLogStartL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::GetAllNmsLogL()
+// gets all the preset into an array 
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::GetAllNmsLogL(
+    CArrayPtrFlat<CIRNmsLogger>& aNmsLogDataList )
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::GetAllNmsLogL" );
+    OpenDbL();
+    //not sure about this resetanddestroy
+     //! Open for preset master
+    aNmsLogDataList.ResetAndDestroy();        
+    //! temp item for holding the retrived data
+    CIRNmsLogger *item;
+    RDbColReadStream instream;    
+    RDbTable table;
+    TInt error = table.Open( iNmsLogDb, KNmsLogTable, table.EReadOnly );
+    CleanupClosePushL( table );
+    if ( error!=KErrNone )
+         {
+         //if open fails function leaves
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+
+    CDbColSet* colSet = table.ColSetL();
+    CleanupStack::PushL( colSet );
+
+    //! arrange the presets in incresing order of index
+    table.SetIndex( KNmsLogIndex );
+    table.Reset();
+    //! recursively retrive the preset data from the master table
+    for ( table.FirstL(); table.AtRow(); table.NextL() )
+        {
+        item = CIRNmsLogger::NewL();
+        CleanupStack::PushL( item );
+        table.GetL();
+        instream.OpenLC( table, colSet->ColNo( KNmsLogCol ) );
+        item->InternalizeL( instream );
+        //update NmsLogid
+        aNmsLogDataList.AppendL( item );
+        CleanupStack::PopAndDestroy( &instream );
+        CleanupStack::Pop( item );
+        }
+        
+    CleanupStack::PopAndDestroy( colSet );
+    //!close the master table
+    CleanupStack::PopAndDestroy( &table );
+    CloseDb();
+    IRLOG_DEBUG( "CIRNmsLogDb::GetAllNmsLogL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : DeleteAllNmsLog
+// delete all the NmsLog from NmsLog log entry
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::DeleteAllNmsLogL()
+    { 
+    IRLOG_DEBUG( "CIRNmsLogDb::DeleteAllNmsLogL" ); 
+    //opening a data base 
+    OpenDbL();
+    RDbTable nmsLogtable;
+    //data base table opened
+    TInt error = nmsLogtable.Open( iNmsLogDb, KNmsLogTable, nmsLogtable.
+        EUpdatable );
+    CleanupClosePushL( nmsLogtable );
+    if ( error != KErrNone )
+         {
+         //if error we leave
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+    //data base begin     
+    error = iNmsLogDb.Begin();
+    if ( error != KErrNone )
+         {
+         //if open fails function leaves
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+
+    //! arrange the presets in incresing order of index
+    nmsLogtable.SetIndex( KNmsLogIndex );
+    nmsLogtable.Reset();
+    nmsLogtable.FirstL();
+    while( nmsLogtable.AtRow() )
+        {
+        //deleting all the rows in the table
+        nmsLogtable.GetL();
+        nmsLogtable.DeleteL();
+        nmsLogtable.FirstL();
+        }
+    //saving the change
+    CleanupStack::PopAndDestroy( &nmsLogtable );
+    iNmsLogDb.Commit();
+    CloseDb();    
+    IRLOG_DEBUG( "CIRNmsLogDb::DeleteAllNmsLogL - Exiting." );
+    }   
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::ConstructL()
+// Standard 2nd phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::ConstructL" );
+    User::LeaveIfError( iFsSession.Connect() );
+    IRLOG_DEBUG( "CIRNmsLogDb::ConstructL- Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::CloseDb()
+// Closes the database 
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::CloseDb()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::CloseDb" );
+    iNmsLogDb.Close();
+    IRLOG_DEBUG( "CIRNmsLogDb::CloseDb - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function : CreateNmsLogTableL
+// creates NmsLogtable with two column one is NmsLogid and rest of NmsLog
+// log data
+// ---------------------------------------------------------------------------
+//NmsLogTable
+//---------------------------
+//| KID   |     KNmsLogCol |
+//---------------------------
+//|TInt32 | EDbColLongText8 |
+//---------------------------
+//
+void CIRNmsLogDb::CreateNmsLogTableL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogTableL" );
+    //start time of NmsLog
+    TDbCol nmsLogid( KID, EDbColInt32 );
+    nmsLogid.iAttributes = TDbCol::ENotNull; 
+    
+    //!this column is used to store preset data
+    //!The column stores a potentially large amount of non-Unicode text data.
+    TDbCol nmsLogcol( KNmsLogCol, EDbColLongText8 );
+    nmsLogcol.iAttributes = TDbCol::ENotNull; 
+       
+    CDbColSet* nmsLogcolset = CDbColSet::NewLC();
+    nmsLogcolset->AddL( nmsLogid );
+    nmsLogcolset->AddL( nmsLogcol );
+
+    // Create the NmsLoglog table with two columns
+    
+    User::LeaveIfError( iNmsLogDb.CreateTable( KNmsLogTable,
+         *nmsLogcolset ) );
+    
+    //Create the KeyIndex for the table
+    CreateNmsLogIndexL();
+    CleanupStack::PopAndDestroy( nmsLogcolset );
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogTableL - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CreateNmsLogIndexL
+// sets NmsLogid as the primary key
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogDb::CreateNmsLogIndexL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogIndexL" );
+    TDbKeyCol nmsLogid( KID );
+    CDbKey* index = CDbKey::NewLC();
+    index->AddL( nmsLogid );
+    User::LeaveIfError( iNmsLogDb.CreateIndex( KNmsLogIndex, KNmsLogTable,
+        *index ) );
+    CleanupStack::PopAndDestroy( index );
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogIndexL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::OpenDbL()
+// opening the data base 
+// ---------------------------------------------------------------------------
+//
+ void CIRNmsLogDb::OpenDbL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::OpenDbL" );
+    CloseDb();
+    TInt error = KErrNone;
+    if ( !BaflUtils::FileExists( iFsSession, iDbFile ) )
+        {
+        //if file doesn't exist function leaves with error code
+        //KErrNotFound
+        error = KErrNotFound;
+        User::LeaveIfError( error );
+        }
+
+    error = iNmsLogDb.Open( iFsSession, iDbFile );    
+    if ( error!=KErrNone )
+        {
+        //if database is failed to open then 
+        //function leaves
+        IRLOG_ERROR2( "CIRNmsLogDb::OpenDbL - \
+        		Opening NmsLog database failed ( %d )", error );
+        User::LeaveIfError( error );
+        }
+    if ( iNmsLogDb.IsDamaged() || !iNmsLogDb.InTransaction() )
+        {
+        //if data base is damaged then 
+        //it tried to recover
+        //if recovery is not possible function leaves
+        error = iNmsLogDb.Recover();
+        if ( KErrNone == error )
+            {
+            //if recovered data base is compacted
+            error = iNmsLogDb.Compact();    
+            }
+        User::LeaveIfError( error );    
+        }
+    IRLOG_DEBUG( "CIRNmsLogDb::OpenDbL - Exiting." );
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CIRNmsLogDb::CreateDbL()
+// Creates both the dbms files 
+// calls CreateFavMasterTableL(),CreateFavUrlTableL
+// database filename
+// ---------------------------------------------------------------------------
+//
+ void CIRNmsLogDb::CreateDbL( TFileName& aNmsLog )
+    {
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateDbL" );
+    CloseDb();
+    TInt error = iNmsLogDb.Replace( iFsSession, aNmsLog );
+    if ( error != KErrNone )
+        {
+        IRLOG_ERROR2( "CIRNmsLogDb::CreateDbL - \
+        		Creating NmsLog database failed ( %d )", error );
+        }
+    User::LeaveIfError( error );
+    CreateNmsLogTableL();
+    IRLOG_DEBUG( "CIRNmsLogDb::CreateDbL - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irnmslogger.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,324 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "irdebug.h"
+#include "irreportsettings.h"
+#include "irnmslogger.h"
+
+//const TInt KMaxUrlLength = 256
+
+// ============================== Function declaration =======================
+
+// ---------------------------------------------------------------------------
+// Function: NewL
+// Two phase constructor returns the instance of CIRNmsLogger
+// ---------------------------------------------------------------------------
+//
+CIRNmsLogger* CIRNmsLogger::NewL()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::NewL" );
+    CIRNmsLogger* self = CIRNmsLogger::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRNmsLogger::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: NewLC
+// Two phase constructor creates the instance of CIRNmsLogger
+// ---------------------------------------------------------------------------
+//
+CIRNmsLogger* CIRNmsLogger::NewLC()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::NewLC" );
+    CIRNmsLogger* self = new ( ELeave ) CIRNmsLogger;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRNmsLogger::NewLC - Exiting." );
+    return self;
+    }    
+
+// ---------------------------------------------------------------------------
+// Function: ~CIRNmsLogger
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRNmsLogger::~CIRNmsLogger()    
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConstructL
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::ConstructL()        
+    {
+    //No implementation
+    //return;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CIRNmsLogger
+// default constructor
+// ---------------------------------------------------------------------------
+//
+CIRNmsLogger::CIRNmsLogger()    
+    {
+    //No implementation
+    }
+
+    
+// ---------------------------------------------------------------------------
+// Function: ResetResource
+// reset data from channel server
+// ---------------------------------------------------------------------------
+//    
+void CIRNmsLogger::ResetResource()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::ResetResource" );
+    //reseting of resource
+    }
+
+
+    
+// ---------------------------------------------------------------------------
+// Function: UpdateChannelID
+// updates the channel id
+// ---------------------------------------------------------------------------
+//    
+void CIRNmsLogger::UpdateChannelID( TInt aChanneldID )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::UpdateChannelID" );
+    iChannelId = aChanneldID;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateCurrentNetwork
+// updates the current network
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::UpdateCurrentNetwork( TInt aCurrentNetwork )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::UpdateCurrentNetwork" );
+    iNmsCurrentNetwork = aCurrentNetwork;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateHomeOperator
+// updates the home network
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::UpdateHomeOperator( TInt aHomeOperator )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::UpdateHomeOperator" );
+    iHomeOperator = aHomeOperator;
+    }
+
+// ---------------------------------------------------------------------------
+// Function : UpdateNmsStartGMTTime
+// function updates Nms start time with current GMT time
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::UpdateNmsStartGMTTime()
+    {
+    iStartNmsTime.UniversalTime();    
+    }
+// ---------------------------------------------------------------------------
+// CIRNmsLogger: UpdateNmsType
+// updates the Nms type
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::UpdateNmsType( const TDesC& aNmsType )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::UpdateNmsType" );
+    iNmsType.Copy( aNmsType );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ChannelID
+// returns the channel id
+// ---------------------------------------------------------------------------
+//    
+TInt CIRNmsLogger::ChannelID() const
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::ChannelID" );
+    return iChannelId;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CurrentNetwork
+// returns the Current Network
+// ---------------------------------------------------------------------------
+//    
+TInt CIRNmsLogger::CurrentNetwork() const
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::CurrentNetwork" );
+    return iNmsCurrentNetwork;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: HomeOperator
+// returns the home network
+// ---------------------------------------------------------------------------
+//
+TInt CIRNmsLogger::HomeOperator() const
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::HomeOperator" );
+    return iHomeOperator;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function: StartTime
+// returns the start time
+// ---------------------------------------------------------------------------
+//    
+TDes& CIRNmsLogger::StartTime()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::StartTime" );
+    return iStartTime;    
+    }
+// ---------------------------------------------------------------------------
+// Function: NmsLogId
+// returns the NmsLog id
+// ---------------------------------------------------------------------------
+//    
+TInt CIRNmsLogger::NmsLogId() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::NmsLogId" );
+    return iNmsLogId;
+    }
+// ---------------------------------------------------------------------------
+// Function: NmsType
+// returns the Nms type
+// ---------------------------------------------------------------------------
+//    
+TDesC& CIRNmsLogger::NmsType()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::ConnectionType" );
+    return iNmsType;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: FileName
+// returns file name
+// ---------------------------------------------------------------------------
+//
+TFileName CIRNmsLogger::FileName()
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::FileName" );
+    return iFilePath;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: DateTime
+// returns Nms start time
+// ---------------------------------------------------------------------------
+//
+TTime CIRNmsLogger::DateTime()
+    {
+    return iStartNmsTime;    
+    }
+    
+
+    
+// ---------------------------------------------------------------------------
+// Function: GetBackedUp
+// Back up the Nms log of a Nms
+// ---------------------------------------------------------------------------
+//    
+void CIRNmsLogger::GetBackedUp( CIRNmsLogger& aNms )
+    {
+    //Nms start time
+    iStartNmsTime = aNms.DateTime();
+    //start time 
+    iStartTime.Copy( aNms.StartTime() );
+    //channel id
+    iChannelId = aNms.ChannelID();
+    //home operator
+    iHomeOperator = aNms.HomeOperator();
+    //current network
+    iNmsCurrentNetwork = aNms.CurrentNetwork();
+    // Newly added    
+    ResetResource();
+    }
+            
+// ---------------------------------------------------------------------------
+// Function: ExternalizeL
+// externialize the stream to the given stream
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::ExternalizeL( RWriteStream& aWriteStream )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::ExternalizeL" );
+    TInt length;
+    //start time
+    length = iStartTime.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iStartTime, length );
+    
+    //channel id
+    aWriteStream.WriteInt32L( iChannelId );
+
+    //Type
+    length = iNmsType.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iNmsType, length );
+    
+    //current network
+    aWriteStream.WriteInt32L( iNmsCurrentNetwork );
+    
+    //home operator
+    aWriteStream.WriteInt32L( iHomeOperator );
+
+    IRLOG_DEBUG( "CIRNmsLogger::ExternalizeL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: InternalizeL
+// gets the data from the stream
+// ---------------------------------------------------------------------------
+//
+void CIRNmsLogger::InternalizeL( RReadStream& aReadStream )
+    {
+    IRLOG_DEBUG( "CIRNmsLogger::InternalizeL" );
+    TInt length;
+    
+    //Start Time
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iStartTime, length );
+    
+    
+    //Channel Id
+    iChannelId = aReadStream.ReadInt32L();
+
+    //Nms Type
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iNmsType, length );
+
+    //Nms Current Network
+    iNmsCurrentNetwork = aReadStream.ReadInt32L();
+    
+    //Home Operator
+    iHomeOperator = aReadStream.ReadInt32L();
+            
+    IRLOG_DEBUG( "CIRNmsLogger::InternalizeL - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irphoneinfo.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* 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 "irphoneinfo.h"
+#include "mirphoneinfoobserver.h"
+
+// ---------------------------------------------------------------------------
+// Function: NewL
+// ---------------------------------------------------------------------------
+//
+CPhoneInfo* CPhoneInfo::NewL(MIRPhoneInfoObserver* aObserver)
+    {
+    CPhoneInfo* self = new(ELeave) CPhoneInfo(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ~CPhoneInfo
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CPhoneInfo::~CPhoneInfo()
+    {
+    Cancel();
+    delete iTelephony;
+    iTelephony = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: StartUpdatingL
+// ---------------------------------------------------------------------------
+//
+void CPhoneInfo::StartUpdating()
+    {
+    // Retrieves the model information and unique identification of the mobile device.
+    if( !IsActive() && iTelephony )
+        {    
+        iTelephony->GetPhoneId( iStatus, iPhoneIdV1Pckg );
+        SetActive();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CPhoneInfo
+// default constructor
+// ---------------------------------------------------------------------------
+//
+CPhoneInfo::CPhoneInfo( MIRPhoneInfoObserver* aObserver )
+    : CActive( EPriorityLow ),
+      iPhoneIdV1Pckg( iPhoneIdV1 ),
+      iTelephony( NULL ),
+      iObserver( aObserver )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConstructL
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPhoneInfo::ConstructL()
+    {
+    iTelephony = CTelephony::NewL();
+    CActiveScheduler::Add(this);
+    }
+
+// ---------------------------------------------------------------------------
+// Function: RunL
+// From CActive
+// ---------------------------------------------------------------------------
+//
+void CPhoneInfo::RunL()
+    {
+    if( NULL != iObserver )
+        {
+        if( KErrNone == iStatus.Int() )
+            {
+            TRAP_IGNORE( iObserver->ImeiUpdatedL(iPhoneIdV1.iSerialNumber) );
+            }
+        else
+            {
+            TRAP_IGNORE( iObserver->ImeiUpdatedL(KNullDesC) );
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Function: DoCancel
+// From CActive
+// ---------------------------------------------------------------------------
+//
+void CPhoneInfo::DoCancel()
+    {
+    // Cancels an outstanding asynchronous request.
+    if( IsActive() && iTelephony )
+        {    
+        iTelephony->CancelAsync( CTelephony::EGetPhoneIdCancel );
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irsessiondb.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,430 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <bautils.h>
+
+#include "irdebug.h" 
+#include "irsessiondb.h"
+#include "irsessionloggerutility.h"
+
+_LIT( KSessionTable, "Session" ); 
+_LIT( KID, "id" );
+_LIT( KSessionLogCol,  "SessionData" );
+_LIT( KSessionIndex, "SessionIndex" );
+
+const TInt KMaxNoSession = 15;
+
+
+// ---------------------------------------------------------------------------
+// Function : NewL()
+// two phased construction
+// ---------------------------------------------------------------------------
+//
+  CIRSessionDb* CIRSessionDb::NewL()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::NewL" );
+    CIRSessionDb* self;
+    self = CIRSessionDb::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRSessionDb::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Function : NewLC()
+// Two phased construction
+// ---------------------------------------------------------------------------
+//
+  CIRSessionDb* CIRSessionDb::NewLC()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::NewLC" );
+    CIRSessionDb *self;
+    self = new( ELeave )CIRSessionDb;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRSessionDb::NewLC - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::~CIRSessionDb()
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRSessionDb::~CIRSessionDb()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::~CIRSessionDb" );
+    CloseDb();
+    iFsSession.Close();
+    IRLOG_DEBUG( "CIRSessionDb::~CIRSessionDb - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::CreateDbConditional()
+// Creates both the dbms files conditionally( only if not yet created )
+// calls CreateDbL()
+// ---------------------------------------------------------------------------
+//
+ TInt CIRSessionDb::CreateDbConditional( TFileName &aSession )
+    {
+    IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional" );
+    iDbFile.Copy( aSession );
+    if ( !BaflUtils::FileExists( iFsSession, iDbFile ) )
+        {
+        TRAPD( error, CreateDbL( iDbFile ) );
+        if ( error )
+            {
+            IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional - Exiting ( 1 )." );
+            return error;
+            }    
+        }
+    IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional - Exiting ( 2 )." );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb:AddSessionStartL()
+// adds the session log entry into data base
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::AddSessionStartL( CIRSessionLogger& aSession )
+    {
+    IRLOG_DEBUG( "CIRSessionDb::AddSessionStartL" );
+    OpenDbL();
+    RDbTable sessionlogtable;
+    TInt error=sessionlogtable.Open( iSessionDb, KSessionTable, sessionlogtable.
+        EUpdatable );
+    CleanupClosePushL( sessionlogtable );
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    
+    //! arrange the presets in incresing order of index
+    sessionlogtable.SetIndex( KSessionIndex );
+    sessionlogtable.Reset();
+
+    //if session log is greater or equal to than 5
+    if ( sessionlogtable.CountL() >= KMaxNoSession )
+        {
+        //first row is selected
+        sessionlogtable.FirstL();
+        //the current row is selected
+        sessionlogtable.GetL();
+        //delete that entry
+        sessionlogtable.DeleteL();
+        }    
+    CleanupStack::PopAndDestroy( &sessionlogtable );
+    //Algorithm : else condition need not handle seperatly
+    //Algorithm : add sessionid and informations like
+    //starttime,connectedfrom,sessionid,connectiontype,channelid
+    //currentnetwork,homenetwork,sessiontable 
+    //Algorithm: if no. of session is greater than 5
+
+    _LIT( query, "SELECT * FROM %S" );    
+    HBufC* sqlStr = HBufC::NewLC( query().Length() + KSessionTable().Length() );
+    sqlStr->Des().Format( query, &KSessionTable );
+    
+    // Create a view on the database
+    RDbView view;     
+    error = view.Prepare( iSessionDb, *sqlStr );
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    CleanupStack::PopAndDestroy( sqlStr );     
+    CleanupClosePushL( view );
+    error = view.EvaluateAll();
+    if ( error )
+        {
+        CloseDb();
+        User::LeaveIfError( error );    
+        }
+    CDbColSet* columns = view.ColSetL();
+    CleanupStack::PushL( columns );
+    
+    RDbColWriteStream writeStream;
+    TRAP( error, //trap start
+       // Insert a row. Column order matches sql select statement
+        view.InsertL();
+        //get index
+        view.SetColL( columns->ColNo( KID ), aSession.SessionId() );    
+        //!open stream
+        writeStream.OpenLC( view, columns->ColNo( KSessionLogCol ) );
+        aSession.ExternalizeL( writeStream );
+        writeStream.CommitL();
+        CleanupStack::PopAndDestroy( &writeStream );
+         );
+         
+    CleanupStack::PopAndDestroy( columns );
+    if ( error != KErrNone )
+        {
+        CloseDb();
+        User::LeaveIfError( error );
+        }
+    view.PutL();
+    CleanupStack::PopAndDestroy( &view );
+    CloseDb();
+    IRLOG_DEBUG( "CIRSessionDb::AddSessionStartL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::GetAllPresetL()
+// gets all the preset into an array 
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::GetAllSessionL(
+    CArrayPtrFlat<CIRSessionLogger>& aSessionDataList )
+    {
+    IRLOG_DEBUG( "CIRSessionDb::GetAllSessionL" );
+    OpenDbL();
+    //not sure about this resetanddestroy
+     //! Open for preset master
+    aSessionDataList.ResetAndDestroy();        
+    //! temp item for holding the retrived data
+    CIRSessionLogger *item;
+    RDbColReadStream instream;    
+    RDbTable table;
+    TInt error = table.Open( iSessionDb, KSessionTable, table.EReadOnly );
+    CleanupClosePushL( table );
+    if ( error != KErrNone )
+         {
+         //if open fails function leaves
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+
+    CDbColSet* colSet = table.ColSetL();
+    CleanupStack::PushL( colSet );
+
+    //! arrange the presets in incresing order of index
+    table.SetIndex( KSessionIndex );
+    table.Reset();
+    //! recursively retrive the preset data from the master table
+    for ( table.FirstL(); table.AtRow(); table.NextL() )
+        {
+        item = CIRSessionLogger::NewL();
+        CleanupStack::PushL( item );
+        table.GetL();
+        instream.OpenLC( table, colSet->ColNo( KSessionLogCol ) );
+        item->InternalizeL( instream );
+        //update sessionid
+        aSessionDataList.AppendL( item );
+        CleanupStack::PopAndDestroy( &instream );
+        CleanupStack::Pop( item );
+        }
+        
+    CleanupStack::PopAndDestroy( colSet );
+    //!close the master table
+    CleanupStack::PopAndDestroy( &table );
+    CloseDb();
+    IRLOG_DEBUG( "CIRSessionDb::GetAllSessionL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : DeleteAllSession
+// delete all the session from session log entry
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::DeleteAllSessionL()
+    { 
+    IRLOG_DEBUG( "CIRSessionDb::DeleteAllSessionL" ); 
+    //opening a data base 
+    OpenDbL();
+    RDbTable sessionlogtable;
+    //data base table opened
+    TInt error = sessionlogtable.Open( iSessionDb, KSessionTable, sessionlogtable.
+        EUpdatable );
+    CleanupClosePushL( sessionlogtable );
+    if ( error != KErrNone )
+         {
+         //if error we leave
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+    //data base begin     
+    error = iSessionDb.Begin();
+    if ( error != KErrNone )
+         {
+         //if open fails function leaves
+         CloseDb();
+         User::LeaveIfError( error );
+         }
+
+    //! arrange the presets in incresing order of index
+    sessionlogtable.SetIndex( KSessionIndex );
+    sessionlogtable.Reset();
+    sessionlogtable.FirstL();
+    while( sessionlogtable.AtRow() )
+        {
+        //deleting all the rows in the table
+        sessionlogtable.GetL();
+        sessionlogtable.DeleteL();
+        sessionlogtable.FirstL();
+        }
+    //saving the change
+    CleanupStack::PopAndDestroy( &sessionlogtable );
+    iSessionDb.Commit();
+    CloseDb();    
+    IRLOG_DEBUG( "CIRSessionDb::DeleteAllSessionL - Exiting." );
+    }   
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::ConstructL()
+// Standard 2nd phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::ConstructL" );
+    User::LeaveIfError( iFsSession.Connect() );
+    IRLOG_DEBUG( "CIRSessionDb::ConstructL- Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::CloseDb()
+// Closes the database 
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::CloseDb()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::CloseDb" );
+    iSessionDb.Close();
+    IRLOG_DEBUG( "CIRSessionDb::CloseDb - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CreateSessionTableL
+// creates sessionlogtable with two column one is sessionid and rest of session
+// log data
+// ---------------------------------------------------------------------------
+//SessionTable
+//---------------------------
+//| KID   |     KSessionLogCol |
+//---------------------------
+//|TInt32 | EDbColLongText8 |
+//---------------------------
+//
+void CIRSessionDb::CreateSessionTableL()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::CreateSessionTableL" );
+    //start time of session
+    TDbCol sessionid( KID, EDbColInt32 );
+    sessionid.iAttributes = TDbCol::ENotNull; 
+    
+    //!this column is used to store preset data
+    //!The column stores a potentially large amount of non-Unicode text data.
+    TDbCol sessionlogcol( KSessionLogCol, EDbColLongText8 );
+       sessionlogcol.iAttributes = TDbCol::ENotNull; 
+       
+    CDbColSet* sessionlogcolset = CDbColSet::NewLC();
+    sessionlogcolset->AddL( sessionid );
+    sessionlogcolset->AddL( sessionlogcol );
+
+    // Create the sessionlog table with two columns
+    
+    User::LeaveIfError( iSessionDb.CreateTable( KSessionTable,
+         *sessionlogcolset ) );
+    
+    //Create the KeyIndex for the table
+    CreateSessionIndexL();
+    CleanupStack::PopAndDestroy( sessionlogcolset );
+    IRLOG_DEBUG( "CIRSessionDb::CreateSessionTableL - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// Function : CreateSessionIndexL
+// sets sessionid as the primary key
+// ---------------------------------------------------------------------------
+//
+void CIRSessionDb::CreateSessionIndexL()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::CreateSessionIndexL" );
+    TDbKeyCol sessionid( KID );
+    CDbKey* index = CDbKey::NewLC();
+    index->AddL( sessionid );
+    User::LeaveIfError( iSessionDb.CreateIndex( KSessionIndex, KSessionTable,
+        *index ) );
+    CleanupStack::PopAndDestroy( index );
+    IRLOG_DEBUG( "CIRSessionDb::CreateSessionIndexL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRSessionDb::OpenDbL()
+// opening the data base 
+// ---------------------------------------------------------------------------
+//
+ void CIRSessionDb::OpenDbL()
+    {
+    IRLOG_DEBUG( "CIRSessionDb::OpenDbL" );
+    CloseDb();
+    TInt error = KErrNone;
+    if ( !BaflUtils::FileExists( iFsSession, iDbFile ) )
+        {
+        //if file doesn't exist function leaves with error code
+        //KErrNotFound
+        error = KErrNotFound;
+        User::LeaveIfError( error );
+        }
+
+    error = iSessionDb.Open( iFsSession, iDbFile );    
+    if ( error != KErrNone )
+        {
+        //if database is failed to open then 
+        //function leaves
+        IRLOG_ERROR2( "CIRSessionDb::OpenDbL - Opening session database failed ( %d )", error );
+        User::LeaveIfError( error );
+        }
+    if ( iSessionDb.IsDamaged() || !iSessionDb.InTransaction() )
+        {
+        //if data base is damaged then 
+        //it tried to recover
+        //if recovery is not possible function leaves
+        error = iSessionDb.Recover();
+        if ( KErrNone == error )
+            {
+            //if recovered data base is compacted
+            error = iSessionDb.Compact();    
+            }
+        User::LeaveIfError( error );    
+        }
+    IRLOG_DEBUG( "CIRSessionDb::OpenDbL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRSessionDb::CreateDbL()
+// Creates both the dbms files 
+// calls CreateFavMasterTableL(),CreateFavUrlTableL
+// database filename
+// ---------------------------------------------------------------------------
+//
+ void CIRSessionDb::CreateDbL( TFileName& aSession )
+    {
+    IRLOG_DEBUG( "CIRSessionDb::CreateDbL" );
+    CloseDb();
+    TInt error = iSessionDb.Replace( iFsSession, aSession );
+    if ( error != KErrNone )
+        {
+        IRLOG_ERROR2( "CIRSessionDb::CreateDbL - Creating session database failed ( %d )", error );
+        }
+    User::LeaveIfError( error );
+    CreateSessionTableL();
+    IRLOG_DEBUG( "CIRSessionDb::CreateDbL - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irsessionlogger.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1173 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <coemain.h>
+#include <ezgzip.h>
+#include <sysutil.h>
+#include <utf.h>
+#include <etel3rdparty.h>
+#include <imcvcodc.h>
+#include "irdebug.h"
+#include "irreportsettings.h"
+#include "irsessiondb.h"
+#include "irsessionlogger.h"
+#include "irsessionloggerutility.h"
+#include "irsettings.h"
+#include "irnmslogdb.h"
+#include "irnmslogger.h"
+#include "irdbstatusobserver.h"
+#include "irphoneinfo.h"
+
+const TUint KFieldPosition = 5;
+const TInt KAmpMaxLength = 5;
+const TInt KFormatBuffMaxLength = 6;
+const TInt KMaxUrlSize = 256;
+const TUint KSessionLogGranularity = 4;
+const TUint KNmsLogGranularity = 5;
+const TUint KSessionLogThreshold = 5; // Session Log Maximum 15
+const TUint KNmsLogThreshold = 5;     // Nms Log Maximum 15
+
+// ---------------------------------------------------------------------------
+// Function: OpenL
+// Two phase constructor returns the instance of CIRReportGenerator
+// this is a single ton implementation
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRReportGenerator* CIRReportGenerator::OpenL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::OpenL" );
+    CIRReportGenerator* reportGenerator = 
+            reinterpret_cast<CIRReportGenerator*>( Dll::Tls() );
+    
+    if ( reportGenerator )
+        {
+        User::LeaveIfError( reportGenerator->Open() );
+        IRLOG_INFO( "CIRReportGenerator::OpenL - \
+                Opened singleton for new user." );
+        }
+    else
+        {
+        reportGenerator = new ( ELeave ) CIRReportGenerator;
+        CleanupClosePushL( *reportGenerator );
+        reportGenerator->ConstructL();
+        User::LeaveIfError( Dll::SetTls( reportGenerator ) );
+        CleanupStack::Pop( reportGenerator );
+        IRLOG_INFO( "CIRSessionLogger::OpenL - \
+                Created the CIRReportGenerator singleton." );
+        }
+    IRLOG_DEBUG( "CIRReportGenerator::OpenL - Exiting." );
+    return reportGenerator;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function: ~CIRReportGenerator
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRReportGenerator::~CIRReportGenerator()    
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::~CIRReportGenerator" );
+    
+    delete iImeiBase64;
+    iImeiBase64 = NULL;
+    
+    delete iPhoneInfo;
+    iPhoneInfo = NULL;
+    
+    //operation settings instance is removed
+    if ( iSettingsData )
+        {
+        iSettingsData->Close(); // delete is handled like this.
+        }
+    delete iSessionLog;
+    delete iNmsLog;
+    
+    //CIRSessionDb object is deleted
+    delete iLogSessionDb;
+
+    //CIRNmsLogDb object is deleted
+    delete iNmsLogDb;
+    //session data is also removed
+    if ( iSessionData )
+        {
+        iSessionData->ResetAndDestroy();
+        }
+    delete iSessionData;
+    //NmsLog data is also removed
+    if ( iNmsLogData )
+        {
+        iNmsLogData->ResetAndDestroy();
+        }
+    delete iNmsLogData;    
+    iBrowseLog.Close(); //browse log array is closed
+    iLogFile.Close();
+    //file session is closed
+    iFsSession.Close();
+    Dll::FreeTls();
+    IRLOG_DEBUG( "CIRReportGenerator::~CIRReportGenerator - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConstructL
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//    
+void CIRReportGenerator::ConstructL()        
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::ConstructL" );
+    //file session is connected
+    //Create the IROperation Settings Instance
+    iSettingsData = CIRSettings::OpenL();
+    User::LeaveIfError( iFsSession.Connect() );
+    //session logger is created
+    iSessionLog = CIRSessionLogger::NewL();
+       //session logger is created
+    iNmsLog = CIRNmsLogger::NewL();
+    //session db is created
+    iLogSessionDb = CIRSessionDb::NewL();
+    //NmsLog db is created
+    iNmsLogDb = CIRNmsLogDb::NewL();
+
+    iSessFile =iSettingsData->PrivatePath();
+    iSessFile.Append( KSession );
+    TInt error = iLogSessionDb->CreateDbConditional( iSessFile );
+    if ( error )
+        {
+        iSessionDbCreationFailed = ETrue;
+        }
+    else
+        {
+        iSessionDbCreationFailed = EFalse;    
+        }
+  
+    iNmsLogFile =iSettingsData->PrivatePath();
+    iNmsLogFile.Append( KNmsLog );
+    TInt nmsError = iNmsLogDb->CreateDbConditional( iNmsLogFile );
+    if ( nmsError )
+        {
+        iNmsDbCreationFailed = ETrue;
+        }
+    else
+        {
+        iNmsDbCreationFailed = EFalse;    
+        }
+
+  
+      //session log for five session are to be stored
+      //and is stored in session data      
+    iSessionData = new (ELeave) CArrayPtrFlat<CIRSessionLogger>(KSessionLogGranularity);
+    iNmsLogData = new ( ELeave ) CArrayPtrFlat<CIRNmsLogger>( KNmsLogGranularity );
+        
+    iPhoneInfo = CPhoneInfo::NewL(this);
+    iPhoneInfo->StartUpdating();
+    
+    IRLOG_DEBUG( "CIRReportGenerator::ConstructL - Exiting." );    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CIRReportGenerator
+// default constructor
+// ---------------------------------------------------------------------------
+//
+CIRReportGenerator::CIRReportGenerator():iPhoneInfo(NULL),
+                                         iDbStatusObserver(NULL),
+                                         iNmsLogDbUpdated( EFalse ),
+                                         iSessionLogDbUpdated( EFalse ),
+                                         iUnComfirmedReportSent( EFalse ),
+                                         iSessionLogUpdationFailed(EFalse),
+                                         iNmsLogUpdationFailed(EFalse),
+                                         iSessionDbCreationFailed(EFalse),
+                                         iNmsDbCreationFailed(EFalse),
+                                         iImeiBase64(NULL)
+    {
+    //No Implementation    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: LogServerResult
+// logs server connection result
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::LogServerResult( const TDesC& aUrl,
+        TResponse aResult )    
+    {
+    iSessionLog->LogServerResult( aUrl,aResult );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: LogSongRecog
+// logs song recog
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::LogSongRecog()  
+    {
+    //taking the session start time in GMT    
+    iSongRecogTimestamp.UniversalTime();
+    TTimeIntervalSeconds offset( iSettingsData->TimeCorrection() );
+    iSongRecogTimestamp -= offset;
+    iDate = iSongRecogTimestamp.DateTime();
+    TBuf<64> songRecogTimestamp;
+    FormatDateTime( songRecogTimestamp, iDate );
+    iSessionLog->LogSongRecog( songRecogTimestamp );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateCurrentBrowseNetwork
+// logs network browsing
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateCurrentBrowseNetwork( TInt aNetwork )
+    {
+    iCurrentBrowseNetwork = aNetwork;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: LogBrowse
+// logs browse url and status information
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CIRReportGenerator::LogBrowse( const TDesC8& aUrl, TInt aStatus )    
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::LogBrowse" );
+    //browse url is copied
+    iRBrowseLog.iBrowseUrl.Copy( aUrl );
+    //time stamp in GMT is onbtained
+    iBrowseLogTimeStamp.UniversalTime();
+
+    TInt time_val = 0;
+    time_val = iSettingsData->TimeCorrection();
+    TTimeIntervalSeconds offset( time_val );
+
+    iBrowseLogTimeStamp -= offset;
+    iDate = iBrowseLogTimeStamp.DateTime();
+    //formated
+    FormatDateTime( iRBrowseLog.iTimeStamp, iDate );
+    _LIT( KFormat, "%d" );
+    ( iRBrowseLog.iCurrentNetwork ).Format( KFormat,
+                                    iCurrentBrowseNetwork );    
+    //status is stored
+    iRBrowseLog.iStatus = aStatus;
+    TRAP_IGNORE( iBrowseLog.AppendL( iRBrowseLog ) )
+    IRLOG_DEBUG( "CIRReportGenerator::LogBrowse - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: SessionStartedL
+// starts a new session
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::SessionStartedL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL" );
+    //gets the session id for new session
+    iSessionLog->ResetResource();
+    
+    iSessionLog->UpdateSessionId(iSettingsData->GetLogRunningNo());
+    iSettingsData->SetLogRunningNoL();
+    iFileWritePos = 0;    
+    
+    iLogFilePath = iSettingsData->PrivatePath();
+    iLogFilePath.Append( KLogFileName );
+    //taking the session start time in GMT    
+    iSessionStartTime.UniversalTime();
+    iSessionLog->UpdateSessionStartGMTTime();
+    TTimeIntervalSeconds offset( iSettingsData->TimeCorrection() );
+    iSessionStartTime -= offset;
+    iDate = iSessionStartTime.DateTime();
+    FormatDateTime( iSessionLog->StartTime(), iDate );
+    iSessionLog->UnMarkSession();
+    //collect the neccessary information    
+    CollectSettingsData();
+    iSessionLogUpdationFailed = EFalse;
+    //start adding the intial information in db    
+    IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL - Exiting." );    
+    }
+// ---------------------------------------------------------------------------
+// Function: NmsLogStartedL
+// starts a new nmslog
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::NmsLogStartedL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL" );
+    iNmsTimestamp.UniversalTime();
+    TInt time_val = 0;
+    time_val = iSettingsData->TimeCorrection();
+    TTimeIntervalSeconds offset( time_val );
+
+    iNmsTimestamp -= offset;
+    iDate = iNmsTimestamp.DateTime();
+    //formated
+    FormatDateTime( iNmsLog->StartTime(), iDate );    
+    iNmsLogUpdationFailed = EFalse;
+    //start adding the intial information in db    
+    IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL - Exiting." );    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: SessionEnd
+// marks the a session
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::SessionEndL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::SessionEndL" );
+    iSessionLog->EndLogging();
+    UnForceSessionEndedL(iSessionLog);
+    IRLOG_DEBUG( "CIRReportGenerator::SessionEndL - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateTerminatedBy
+// updates the termination status
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateTerminatedBy( TTerminationStatus 
+    aTerminatedBy )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateTerminatedBy" );
+    iSessionLog->UpdateTerminationStatus( aTerminatedBy );      
+    }
+
+// ---------------------------------------------------------------------------
+// Function: GetConnectedFrom
+// connected information is stored
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CIRReportGenerator::UpdateConnectedFrom(TConnectedFrom aConnectedFrom)
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateConnectedFrom" );
+    iSessionLog->GetConnectedFrom( aConnectedFrom );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: BrowseUrl
+// logs browse url and result
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::BrowseUrl( const TDesC& aBrowseUrl,
+                                                    TInt aStatus )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::BrowseUrl" );
+    _LIT( KAmp, "&amp;" );
+    TBuf8<KAmpMaxLength> amp;
+    amp.Copy( KAmp );    
+    TBuf8<KMaxUrlSize> url;
+    url.Copy( aBrowseUrl );
+    _LIT8( KAmpnd, "&" );
+    TInt pos = url.Find( KAmpnd );
+    if ( pos > 0 )
+        {
+        url.Replace( pos, 1, amp );    
+        }
+    LogBrowse( url, aStatus );
+    IRLOG_DEBUG( "CIRReportGenerator::BrowseUrl - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateChannelID
+// updates the channel id
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateChannelID( TInt aChanneldID )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateChannelID" );
+    iSessionLog->UpdateChannelID( aChanneldID );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateCurrentNetwork
+// updates the current network
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateCurrentNetwork( TInt aCurrentNetwork )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateCurrentNetwork" );
+    iSessionLog->UpdateCurrentNetwork( aCurrentNetwork );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateHomeOperator
+// updates the home network
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateHomeOperator( TInt aHomeOperator )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateHomeOperator" );
+    iSessionLog->UpdateHomeOperator( aHomeOperator );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: MarkSessionStart
+// updates the termination status
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::MarkSessionStart()
+    {
+    iSessionStartTime.UniversalTime();
+
+    TInt time_val = 0;
+    time_val = iSettingsData->TimeCorrection();
+    TTimeIntervalSeconds offset( time_val );
+    
+    iSessionStartTime -= offset; 
+    iDate = iSessionStartTime.DateTime();
+    FormatDateTime( iSessionLog->StartTime(), iDate );
+    //setting session start time
+    iSessionLog->UpdateSessionStartGMTTime();
+    iSessionLog->MarkSession();
+    }
+
+// ---------------------------------------------------------------------------
+// Function: HandleStopEvents
+// function handles session state changes
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::HandleStopEvents( TBool aIsSessionProgressing )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::HandleStopEvents" );
+    if ( !aIsSessionProgressing )
+        {
+        iSessionLog->HandleStopEvents();
+        }
+    else
+        {
+        iSessionLog->HandleStartEvents();
+        }
+    IRLOG_DEBUG( "CIRReportGenerator::HandleStopEvents - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateConnectionType
+// updates the connection type
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateConnectionType( const TDesC& 
+    aConnectionType )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateConnectionType" );
+    iSessionLog->UpdateConnectionType( aConnectionType );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateNmsType
+// updates the connection type
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateNmsType( const TDesC& aNmsType )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateNmsType" );
+    iNmsLog->UpdateNmsType( aNmsType );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: SetDbStatusObserser
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::SetDbStatusObserser( 
+        MIRLogDbStatusObserver *aDbStatusObserver )
+{
+    iDbStatusObserver = aDbStatusObserver;
+}    
+
+// ---------------------------------------------------------------------------
+// Function: reportSent
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::ReportSent()
+{
+    iUnComfirmedReportSent = ETrue;
+}    
+
+
+// ---------------------------------------------------------------------------
+// Function : ReponseFromISDSObtained
+// This function is called when session log is successfully sent
+// removes all session log entries from sessiondb
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::ReponseFromISDSObtained()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::ReponseFromISDSObtained" );
+    iUnComfirmedReportSent = EFalse;
+    TRAP_IGNORE( iLogSessionDb->DeleteAllSessionL() )
+    TRAP_IGNORE( iNmsLogDb->DeleteAllNmsLogL() )
+    for ( TInt i = 0; i < iBrowseLogsCntToXml; i++ )
+        {
+        if ( iBrowseLog.Count() > 0 )
+            iBrowseLog.Remove( 0 );
+        }
+    }    
+
+// ---------------------------------------------------------------------------
+// Function: CollectSettingsData
+// collect information during starting of session
+// like irid, version information.
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::CollectSettingsData()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::CollectSettingsData" );
+    _LIT( KData, "1.0" );
+    _LIT( KIRID, "NO IRID" );
+    //gets irid from opsetting
+    TRAP_IGNORE( iIRId.Copy( iSettingsData->GetIRIDL() ) );
+    //if length of irid is zero "no irid" is assigned
+    if ( ( iIRId ).Length() == 0 )
+       {
+       iIRId.Copy( KIRID );
+       }
+    //version copied
+    iReportVersion.Copy( KData );
+    IRLOG_DEBUG( "CIRReportGenerator::CollectSettingsData - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: WriteToXmlL
+// gathers the information and generates sesion log file and zip file
+// file will be stored in private path
+// ---------------------------------------------------------------------------
+//    
+void CIRReportGenerator::WriteToXmlL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteToXmlL" );    
+    //1. log file is created
+    User::LeaveIfError( iLogFile.Replace( iFsSession,
+            iLogFilePath, EFileWrite ) );   
+    iLogFile.Seek( ESeekStart,iFileWritePos );
+    
+    
+    //2. Write file header.
+    iUniCodeBuf.Copy(KXmlHeader);
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer,iUniCodeBuf );   
+    WriteBufferToLogFile();
+    
+    //3. Write Version + IRID + IMEI
+    iUniCodeBuf.Copy( KRPSTARTTAG );
+    iFileWritePos =  iUniCodeBuf.Find( KField );
+    //3.1 Write Version
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, iReportVersion );
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    //3.2 Write IRID
+    RBuf tempIRID;
+    TRAP_IGNORE( tempIRID.CreateL( iSettingsData->GetIRIDL() ) );
+    if ( ( tempIRID ).Length() != 0 )
+        {
+        iIRId.Copy( tempIRID );
+        }
+    tempIRID.Close();
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, iIRId );
+    //3.3 Write IMEI
+    iFileWritePos = iUniCodeBuf.Find(KField);
+    if ( NULL == iImeiBase64 )
+        {
+        iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, KNullDesC );
+        }
+    else
+        {
+        iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, *iImeiBase64 );     
+        }    
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    WriteBufferToLogFile();
+    
+    //4. Write session log
+    if ( !iSessionLogUpdationFailed )
+        {
+        for( TInt count = 0; count<(iSessionData->Count()); count++ )
+            {
+            WriteSessionData( count );      
+            }
+        }
+    
+    //5. Write browse log           
+    WriteBrowseLog();
+
+    //6. Write nms log  
+    if ( !iNmsLogUpdationFailed )
+        {
+        TInt nmsLogCount = iNmsLogData->Count();
+        if(nmsLogCount > 0)
+            {
+            iUniCodeBuf.Copy(KNMSLOGSTARTTAG);
+            CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+            WriteBufferToLogFile();
+    
+            for(TInt count = 0; count < nmsLogCount; count++)
+                {
+                WriteNmsLogData(count);     
+                }
+            iUniCodeBuf.Copy(KNMSLOGENDTAG);
+            CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+            WriteBufferToLogFile(); 
+            }   
+        }
+
+    //7. Write file ending
+    iUniCodeBuf.Copy( KRPENDTAG );
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    WriteBufferToLogFile();
+    
+    iLogFile.Close();
+    ZipFileL();
+    
+    iBrowseLogsCntToXml = iBrowseLog.Count();
+    
+    IRLOG_DEBUG( "CIRReportGenerator::WriteToXmlL - Exiting." );
+    }
+// ---------------------------------------------------------------------------
+// Function: WriteNmsLogtoXmlL
+// logs nmsEvents to Xml file
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::WriteNmsLogtoXmlL()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogtoXmlL" );
+    iNmsEventFlag = ETrue;
+    UnForceSessionEndedL(iSessionLog);
+    iNmsEventFlag = EFalse;
+    IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogtoXmlL - Leaving" );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Function: WriteSessionData
+// gathers session log data and writes to XML file
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::WriteSessionData( TInt aIndex )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteSessionData" );
+    
+    ASSERT( aIndex >= 0 && aIndex < iSessionData->Count() );
+    TBuf< KFormatBuffMaxLength > FormatBuff;
+    _LIT( KConvert, "%d" );
+    
+    // 1. session start time is copied
+    iUniCodeBuf.Copy( KSESSIONSTARTTAG );
+    
+    iFileWritePos = iUniCodeBuf.Find( KField );    
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+        At(aIndex))->StartTime() );
+    
+    // 2. session duration is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );    
+    TInt duration = ( iSessionData->At(aIndex))->SessionDuration();
+    FormatBuff.Format( KConvert, duration );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    
+    // 3. termination status is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+        At(aIndex))->TerminationStatus() );
+    
+    // 4. connected from information is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+        At(aIndex))->ConnectedFrom() );
+    
+    // 5. session id is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    FormatBuff.Format( KConvert, ( iSessionData->At( aIndex ) )->SessionId() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    
+    // 6. channel id is copied
+    iFileWritePos = iUniCodeBuf.Find(KField);
+    FormatBuff.Format( KConvert,( iSessionData->At( aIndex ) )->ChannelID() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    
+    WriteBufferToLogFile();
+        
+    // 8. Write ServerResult    
+    TInt ServerResultCount = ( iSessionData->At( aIndex ) )->
+        SessionData().Count();
+    
+    for ( TInt count=0; count < ServerResultCount; count++ )
+        {
+        //channel server urls are copied for the session            
+        iUniCodeBuf.Copy( KSERVERRESULTTAG );
+        iFileWritePos = iUniCodeBuf.Find( KField );
+        iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+        At( aIndex )->SessionData()[count].iServerUrl ) );
+            
+        //status is copied
+        iFileWritePos = iUniCodeBuf.Find( KField );
+        iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+            At(aIndex)->SessionData()[count].iServerResult) );
+        CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+        //writting the information to the xml file    
+        WriteBufferToLogFile();
+        }
+    
+    // 9. connection type is copied
+    iUniCodeBuf.Copy( KCONNECTIONTAG );
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iSessionData->
+        At( aIndex ) )->ConnectionType() );
+    
+    // 10. current network is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    FormatBuff.Format( KConvert, ( iSessionData->At( aIndex ) )->
+            CurrentNetwork() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    
+    // 11. home operator is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    FormatBuff.Format( KConvert,( iSessionData->At( aIndex ) )->HomeOperator() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    
+    WriteBufferToLogFile();
+    
+    // 12. Write Song Recog Log
+    TInt songRecogLogCount = ( iSessionData->At( aIndex ) )->
+        SongRecogLog().Count();
+    if(songRecogLogCount > 0)
+        {
+        iUniCodeBuf.Copy(KSONGRECOGLOGSTARTTAG);    
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+        WriteBufferToLogFile(); 
+        
+        for(TInt count=0; count < songRecogLogCount; count++)
+            {        
+            iUniCodeBuf.Copy(KSONGRECOGEVENTTAG);
+            iFileWritePos = iUniCodeBuf.Find(KField);
+            iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
+            At(aIndex)->SongRecogLog()[count].iTimeStamp));
+            CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+            WriteBufferToLogFile();
+            }
+    
+        iUniCodeBuf.Copy(KSONGRECOGLOGENDTAG);
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+        WriteBufferToLogFile();
+        }
+    
+    // write ending tag </session>
+    iUniCodeBuf.Copy( KSESSIONENDTAG );
+    //tags are also written into xml file
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    WriteBufferToLogFile();
+    IRLOG_DEBUG( "CIRReportGenerator::WriteSessionData - Exiting." );            
+    }    
+
+// ---------------------------------------------------------------------------
+// Function: WriteBrowseLog
+// gathers browse log data and writes to XML file
+// ---------------------------------------------------------------------------
+//    
+ void CIRReportGenerator::WriteBrowseLog()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteBrowseLog" );
+    //browse log
+    //browse log tag is written
+    TInt browseLogCount = iBrowseLog.Count();
+    if(browseLogCount > 0)
+        {
+        iUniCodeBuf.Copy(KBROWSESTARTTAG);
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+        WriteBufferToLogFile();
+        for(TInt count = 0; count < browseLogCount; count++)
+            {
+            //browse log url is copied              
+            iUniCodeBuf.Copy(KBROWSETAG);
+            iFileWritePos = iUniCodeBuf.Find(KField);
+            iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
+                (iBrowseLog).operator[](count).iBrowseUrl);
+            iFileWritePos = iUniCodeBuf.Find(KField);
+            //browse log time stamp is copied
+            iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
+                (iBrowseLog).operator[](count).iTimeStamp);
+            iFileWritePos = iUniCodeBuf.Find(KField);
+            //browse log current network is copied
+            iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
+                (iBrowseLog).operator[](count).iCurrentNetwork);
+            CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+            //browse log is written to xml
+            WriteBufferToLogFile();
+            }
+        
+        //browse log end tag is copied  
+        iUniCodeBuf.Copy(KBROWSEENDTAG);
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
+        WriteBufferToLogFile();
+        }
+    IRLOG_DEBUG( "CIRReportGenerator::WriteBrowseLog - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ZipFileL
+// generates the zip file from the input xml file
+// output file is in gzip format and is stored in private path
+// ---------------------------------------------------------------------------
+//    
+ void CIRReportGenerator::ZipFileL()
+     {
+     IRLOG_DEBUG( "CIRReportGenerator::ZipFileL" );
+     //input file is the xml file in private path and output is a gzip file stored 
+     //private path
+     //xml file
+    RFile iplogfile;
+    //getting path of zip file
+    TFileName gzipfilepath = iSessionLog->FileName();
+    gzipfilepath.Append( KGZipLogFileName );
+    
+    iLogFilePath = iSettingsData->PrivatePath();
+    iLogFilePath.Append( KLogFileName );
+
+    //input file is opened
+    TInt error = iplogfile.Open( iFsSession, iLogFilePath, EFileStream | EFileRead );
+    CleanupClosePushL( iplogfile );
+    
+    if ( KErrNone != error )
+        {
+        User::LeaveIfError( error );    
+        }
+    
+    //generating zip file
+    
+    TInt fileSize( 0 );
+    TInt err = iplogfile.Size( fileSize );
+    
+    if ( !err )
+        {    
+        TParse zipParse;
+        zipParse.Set( iLogFilePath, NULL, NULL );
+        
+        TPtrC zipDrive = zipParse.Drive();
+        
+        TChar driveChar = zipDrive[0];
+        TInt driveNum( 0 );
+        RFs::CharToDrive( driveChar, driveNum );
+        
+        TDriveInfo driveInfo;
+        TInt driveErr = iplogfile.Drive( driveNum, driveInfo );
+           if ( !driveErr
+            && driveNum != EDriveZ
+            && !SysUtil::DiskSpaceBelowCriticalLevelL(
+                     &CCoeEnv::Static()->FsSession(), iUTF8Buffer.Size(),
+                     driveNum ) )
+            {
+            // disk space is not below critical level
+            // Next generate the zip file
+            CEZFileToGZip* zip = CEZFileToGZip::NewLC( iFsSession, 
+                    gzipfilepath, iplogfile );
+     while( zip->DeflateL() )
+        {
+        }
+    CleanupStack::PopAndDestroy( zip );
+            }
+        else
+            {
+            // disk space is below critical level
+            // Do not generate the zip file
+            }
+        }
+
+    //file is closed 
+    CleanupStack::PopAndDestroy(); // iplogfile
+    IRLOG_DEBUG( "CIRReportGenerator::ZipFileL - Exiting." );    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: FormatDateTime
+// formats the date time given in "%d-%d-%d %d:%d:%d GMT\n" format
+// copies the result to a descriptor
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::FormatDateTime( TDes& aBuffer, TDateTime aDateTime )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::FormatDateTime" );          
+    _LIT( KFormatTxt, "%d-%d-%d %d:%d:%d GMT\n" );
+    aBuffer.Format( KFormatTxt, aDateTime.Year(), TInt( aDateTime.Month() + 1 ), 
+        //Format the month as a TInt to preserve locale independence
+        //aDateTime.Day()+1, 
+        aDateTime.Day() + 1, 
+        // Day and month ranges begin at zero ( 0-30 and 0-11 ), 
+        // so add one when formatting
+        aDateTime.Hour(), aDateTime.Minute(), aDateTime.Second()
+        //aDateTime.MicroSecond()
+        );
+    IRLOG_DEBUG( "CIRReportGenerator::FormatDateTime - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: WriteBufferToLogFile
+// Writes the content of iUTF8Buffer to iLogFile
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::WriteBufferToLogFile()
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteBufferToLogFile" );   
+    // Get the drive where iLogFile is located.
+
+    TInt driveNumber( 0 );
+    TDriveInfo driveInfo;
+    
+    TInt err = iLogFile.Drive( driveNumber, driveInfo );
+
+    // Write the log file only if:
+    // Drive was fetched successflly,
+    // the drive is not Z
+    // and free disk space is not below critical level ( 128kB )
+
+    if ( !err && driveNumber != EDriveZ )
+        {
+        TBool ret = ETrue;
+        TRAP_IGNORE( ret = SysUtil::DiskSpaceBelowCriticalLevelL( 
+        &CCoeEnv::Static()->FsSession(), iUTF8Buffer.Size(), driveNumber ) )
+        if ( !ret )
+            {
+            iLogFile.Write( iUTF8Buffer );
+            }
+        else
+            {
+            // Do not write the session log.
+            }
+        }
+    else
+        {
+        // Do not write the session log.
+        }
+    IRLOG_DEBUG( "CIRReportGenerator::WriteBufferToLogFile - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UnForceSessionEndedL
+// Handles Unforced end of the session
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::UnForceSessionEndedL( CIRSessionLogger* aSession )
+    {
+    // 1. retrieve session log from db
+    if ( iSessionDbCreationFailed )
+        {
+        iSessionLogUpdationFailed = ETrue;    
+        }
+    else
+        {
+        if ( iNmsEventFlag )
+            {
+            TRAPD( error,
+            //count is stored    
+            iLogSessionDb->GetAllSessionL( *iSessionData );
+            );
+            if ( error )
+                {
+                iSessionLogUpdationFailed = ETrue;    
+                }    
+            }
+        else
+            {
+            TRAPD( error,
+        //loads the information into the db at the end of the session
+        iLogSessionDb->AddSessionStartL( *aSession );
+        //count is stored    
+        iLogSessionDb->GetAllSessionL( *iSessionData );
+        );
+        if ( error )
+            {
+            iSessionLogUpdationFailed = ETrue;    
+                }   
+            else
+                {
+                TInt count = iSessionData->Count();
+                if ( (count>0 ) && ( count%KSessionLogThreshold == 0 ) )
+                    {
+                    iSessionLogDbUpdated = ETrue;
+                    }
+                }
+            }
+        }
+
+    // 2. retrieve nms log from db  
+    if ( iNmsDbCreationFailed )
+        {
+        iNmsLogUpdationFailed = ETrue;    
+        }
+    else
+        {
+        if(!iNmsEventFlag)
+            {
+            TRAPD( error, iNmsLogDb->GetAllNmsLogL( *iNmsLogData ) );
+            if ( error )
+                {
+                iNmsLogUpdationFailed = ETrue;    
+                }    
+            }
+        else
+            {
+            TRAPD( error,
+            //loads the information into the db at the end of the session
+            iNmsLogDb->AddNmsLogStartL( *iNmsLog );
+            //count is stored    
+            iNmsLogDb->GetAllNmsLogL( *iNmsLogData );
+            );
+            if ( error )
+                {
+                iNmsLogUpdationFailed = ETrue;    
+                }
+            else
+                {
+                TInt count = iNmsLogData->Count();
+                if ( ( count>0 ) && ( count%KNmsLogThreshold == 0 ) )
+                    {
+                    iNmsLogDbUpdated = ETrue;
+                    }
+                }
+            }
+        }
+    //xml file is created and is zipped
+    WriteToXmlL();
+    
+    if( iDbStatusObserver && 
+           ( iNmsLogDbUpdated ||
+             iSessionLogDbUpdated ||
+             iUnComfirmedReportSent
+           )
+      )
+      {
+          iDbStatusObserver->LogDbNeedFlush();
+          iNmsLogDbUpdated = EFalse;
+          iSessionLogDbUpdated = EFalse;
+      }
+    }
+
+/**
+ * The following methods are for Nms Event Usage Logging 
+ */
+// ---------------------------------------------------------------------------
+// Function: UpdateNmsCurrentNetwork
+// logs network during Music Store launching
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateNmsCurrentNetwork( TInt aNetwork )
+    {
+    iNmsLog->UpdateCurrentNetwork( aNetwork );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: UpdateNmsHomeOperator
+// logs network during Music Store Launching
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateNmsHomeOperator( TInt aNetwork )
+    {
+    iNmsLog->UpdateHomeOperator( aNetwork );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: UpdateNmsChannelID
+// updates the channel id
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRReportGenerator::UpdateNmsChannelID( TInt aChanneldID )
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::UpdateNmsChannelID" );
+    iNmsLog->UpdateChannelID( aChanneldID );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: WriteNmsLogData
+// gathers Nmslog data and writes to XML file
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::WriteNmsLogData(TInt aIndex)
+    {
+    IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogData" );
+    TBuf<KFormatBuffMaxLength> FormatBuff;
+    _LIT( KConvert, "%d" );
+
+    //NmsEvent Tag is written
+    iUniCodeBuf.Copy( KNMSEVENTTAG );
+
+    iFileWritePos = iUniCodeBuf.Find( KField );    
+    //Nms Event timestamp is copied
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iNmsLogData->
+    At(aIndex))->StartTime());
+
+    //channel id is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
+    FormatBuff.Format( KConvert,( iNmsLogData->At(aIndex) )->ChannelID() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+
+    //type is copied
+    iFileWritePos = iUniCodeBuf.Find( KField );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, ( iNmsLogData->
+    At( aIndex ))->NmsType() );
+    iFileWritePos = iUniCodeBuf.Find( KField );
+
+    //current network is copied
+    ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
+    FormatBuff.Format( KConvert, ( iNmsLogData->At( aIndex ))->
+    CurrentNetwork() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+    iFileWritePos = iUniCodeBuf.Find( KField );
+
+    //home operator is copied
+    ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
+    FormatBuff.Format( KConvert, (iNmsLogData->At( aIndex ))->HomeOperator() );
+    iUniCodeBuf.Replace( iFileWritePos, KFieldPosition, FormatBuff );
+
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( iUTF8Buffer, iUniCodeBuf );
+    //writting the information to the xml file    
+    WriteBufferToLogFile();
+
+    IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogData - Exiting." );
+    }   
+
+// ---------------------------------------------------------------------------
+// Function: ImeiUpdated
+// From MIRPhoneInfoObserver
+// ---------------------------------------------------------------------------
+//
+void CIRReportGenerator::ImeiUpdatedL( const TDesC& aImei )
+    {
+    if(0 == aImei.Length())
+        {
+        iPhoneInfo->StartUpdating();
+        return;
+        }
+    // prepare base64 codec input
+    HBufC8 *imei = HBufC8::NewLC( aImei.Length() );
+    TPtr8 imeiPtr = imei->Des();    
+    imeiPtr.Copy( aImei );
+    
+    // prepare base64 codec output
+    HBufC8 *buffer = HBufC8::NewLC( aImei.Length() * 2 );
+    TPtr8 bufferPtr = buffer->Des();
+    
+    // Encoding
+    TImCodecB64 base64Codec;
+    base64Codec.Initialise();
+    base64Codec.Encode( *imei, bufferPtr );
+    
+    // store to data member
+    if(NULL == iImeiBase64)
+        {
+        iImeiBase64 = HBufC16::NewL( aImei.Length() * 2 );
+        }
+    TPtr imeiBase64Ptr = iImeiBase64->Des();
+    imeiBase64Ptr.Copy( bufferPtr );
+    
+    CleanupStack::PopAndDestroy( buffer );
+    CleanupStack::PopAndDestroy( imei );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsessionlog/src/irsessionloggerutility.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,830 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "irdebug.h"
+#include "irreportsettings.h"
+#include "irsessionloggerutility.h"
+
+const TInt KMaxUrlLength = 256;
+const TInt KMaxTimeStampLength = 64;
+
+// ============================== Function declaration =======================
+
+// ---------------------------------------------------------------------------
+// Function: NewL
+// Two phase constructor returns the instance of CIRSessionLogger
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger* CIRSessionLogger::NewL()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::NewL" );
+    CIRSessionLogger* self = CIRSessionLogger::NewLC();
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRSessionLogger::NewL - Exiting." );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: NewLC
+// Two phase constructor creates the instance of CIRSessionLogger
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger* CIRSessionLogger::NewLC()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::NewLC" );
+    CIRSessionLogger* self = new ( ELeave ) CIRSessionLogger;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRSessionLogger::NewLC - Exiting." );
+    return self;
+    }    
+
+// ---------------------------------------------------------------------------
+// Function: ~CIRSessionLogger
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger::~CIRSessionLogger()    
+    {
+    iRServer.Reset();
+    iRServer.Close();    
+	iRSongRecogLog.Reset();
+	iRSongRecogLog.Close();	
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConstructL
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::ConstructL()        
+    {
+    //No implementation
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CIRSessionLogger
+// default constructor
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger::CIRSessionLogger()    
+    {
+    //No implementation
+    }
+
+// ---------------------------------------------------------------------------
+// Function: EndLogging
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::EndLogging()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::EndLogging" );    
+    if ( iSessionMarked )
+        {
+        HandleStopEvents();
+        }
+    else
+        {
+        iDuration = 0;    
+        }
+    switch ( iTerminateBy )
+        {
+        case EUserTerminated:
+            {
+            //error condition for termination is disconnected by the user
+            iTerminatedBy.Copy( KUSER );
+            break;
+            }
+        case ENoConnectionToServer:
+            {
+            //error condition for termination is no connection to server            
+            iTerminatedBy.Copy( KNOCONNECTIONTOSERVER );
+            break;
+            }
+        case ENoConnectionToNetwork:
+            {
+            //error condition for termination is no connection to network
+            iTerminatedBy.Copy( KNOCONNECTIONTONETWORK );
+            break;
+            }
+        default:
+            {
+            break;    
+            }                                
+        }
+    IRLOG_DEBUG( "CIRSessionLogger::EndLogging - Exiting." );        
+    }
+
+    
+// ---------------------------------------------------------------------------
+// Function: HandleStopEvents
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::HandleStartEvents()
+    {
+    if ( !iIsSessionProgressing )
+        {
+        iActiveSessionTime.UniversalTime();
+        iIsSessionProgressing = ETrue;
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: HandleStartEvents
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::HandleStopEvents()
+    {
+    if ( iIsSessionProgressing )
+        {
+        TTime endtime;    
+        //endtime has session end time in GMT format
+        endtime.UniversalTime();
+        //session duration compensation value is calculated 
+        //as difference between Compensation Time [time when it stopped] and
+        //end time
+        TTimeIntervalSeconds timeelaspsed;
+        endtime.SecondsFrom( iActiveSessionTime, timeelaspsed );
+        //compensation value session duration is converted to integer
+        iDuration += timeelaspsed.Int();
+        iIsSessionProgressing = EFalse;
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: MarkSession
+// Marks the start of a session
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::MarkSession()
+    {
+    iSessionMarked = ETrue;    
+    iDuration = 0;
+    HandleStartEvents();
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UnMarkSession
+// UnMarks the start of a sessiom
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UnMarkSession()
+    {
+    iSessionMarked = EFalse;    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: SessionMarked
+// Returns the session mark flag
+// ---------------------------------------------------------------------------
+//    
+TBool CIRSessionLogger::SessionMarked()
+    {
+    return iSessionMarked;    
+    }    
+// ---------------------------------------------------------------------------
+// Function: ResetResource
+// reset data from channel server
+// ---------------------------------------------------------------------------
+//    
+void CIRSessionLogger::ResetResource()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::ResetResource" );
+    //reseting of resource
+    iRServer.Reset();
+	iRSongRecogLog.Reset();
+    }
+// ---------------------------------------------------------------------------
+// Function: IsSessionProgressing
+// checks whether session is progressing or not
+// ---------------------------------------------------------------------------
+//
+TBool CIRSessionLogger::IsSessionProgressing()
+    {
+    return iIsSessionProgressing;    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: CompensationTime
+// Returns the session mark flag
+// ---------------------------------------------------------------------------
+//    
+TTime CIRSessionLogger::CompensationTime()
+    {
+    return iActiveSessionTime;    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: LogServerResult
+// logs server connection result
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::LogServerResult( const TDesC& aUrl, TResponse aResponse )
+    {
+    IRLOG_INFO3( "CIRSessionLogger::LogServerResult - %S ( %d )", &aUrl, aResponse );
+	TIRServer tempServer;
+    if ( aUrl.Length() <= KMaxUrlLength )
+        {
+        //channel server url is copied
+		tempServer.iServerUrl.Copy(aUrl);
+        }
+    switch ( aResponse )
+        {
+        //connected to the channel server
+        case EIRConnected:
+            {
+			tempServer.iServerResult.Copy(KConnected);
+            }
+            break;
+        //not connected to channel server
+        //since server is not responding
+        case EIRFull:
+            {
+			tempServer.iServerResult.Copy(KFull);
+            }
+            break;
+        //not connected to channel server
+        //since connection time out     
+        case EIRConnTimeOut:
+            {
+			tempServer.iServerResult.Copy(KConnTimeOut);
+            }
+            break;
+        //not connected to channel server ( may be invalid urls )
+        case EIRConnFailed:
+            {
+			tempServer.iServerResult.Copy(KConnectionFailed);
+            }
+            break;
+        default:
+            {
+            break;    
+            }    
+        }
+	UpdateSessionLog(tempServer);
+    IRLOG_DEBUG( "CIRSessionLogger::LogServerResult - Exiting." );            
+	}
+
+// ---------------------------------------------------------------------------
+// Function: LogSongRecog
+// logs song recog
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::LogSongRecog(const TDesC& aTimeStamp)
+    {
+    if( aTimeStamp.Length() <= KMaxTimeStampLength )
+        {
+        TIRSongRecogLog tempSongRecogLog;
+        tempSongRecogLog.iTimeStamp.Copy(aTimeStamp);   
+        TRAP_IGNORE(iRSongRecogLog.AppendL(tempSongRecogLog));
+        }    
+
+    }
+
+// ---------------------------------------------------------------------------
+// Function: GetConnectedFrom
+// connected information is stored
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::GetConnectedFrom(TConnectedFrom aConnectedFrom)
+	{
+	IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom" );
+	switch(aConnectedFrom)
+		{
+		case EIRIsds:
+			{
+			iConnectedFrom.Copy(KISDS);
+			break;
+			}
+		case EIRPresetAdhoc:
+			{
+			iConnectedFrom.Copy(KPRESETADHOC);
+			break;
+			}
+		case EIRPresetIsds:
+			{
+			iConnectedFrom.Copy(KPRESETISDS);
+			break;
+			}
+        case EIRHistoryAdhoc:
+            {
+            iConnectedFrom.Copy(KHISTORYADHOC);
+            break;
+            }
+        case EIRHistoryIsds:
+            {
+            iConnectedFrom.Copy(KHISTORYISDS);
+            break;
+            }
+        case EIRAdhocManual:
+            {
+            iConnectedFrom.Copy(KADHOCMANUAL);
+            break;
+            }
+        case EIRAdhocExternal:
+            {
+            iConnectedFrom.Copy(KADHOCEXTERNAL);
+            break;
+            }
+        default:
+            {
+            break;    
+            }                                    
+        }
+    IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom - Exiting." );
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateSessionLog
+// update the session logs
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionLog( TIRServer& aServer )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionLog" );
+
+    TBool found = EFalse;
+
+    // Only one entry per URL may be in the session log.
+    for ( TInt i = 0; i < iRServer.Count() && !found; i++ )
+        {
+        TIRServer& server = iRServer[i];
+        if ( server.iServerUrl == aServer.iServerUrl )
+            {
+            // If an entry for this URL already exists, it is replaced
+            // by the newer status code.
+            server = aServer;
+            found = ETrue;
+            }
+        }
+    
+    if ( !found )
+        {
+        // Creates a new entry into the session log for this URL.
+        TRAP_IGNORE( iRServer.AppendL( aServer ) )    
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateSessionId
+// updates the session id
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionId( TInt aSessionId )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionId" );
+    iSessionId = aSessionId;    
+    }
+  
+// ---------------------------------------------------------------------------
+// Function: UpdateTerminationStatus
+// updates the termination status
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateTerminationStatus( TTerminationStatus aTerminatedBy )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateTerminationStatus" );
+    iTerminateBy = aTerminatedBy;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateChannelID
+// updates the channel id
+// ---------------------------------------------------------------------------
+//    
+void CIRSessionLogger::UpdateChannelID( TInt aChanneldID )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateChannelID" );
+    iChannelId = aChanneldID;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateCurrentNetwork
+// updates the current network
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateCurrentNetwork( TInt aCurrentNetwork )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateCurrentNetwork" );
+    iSessionCurrentNetwork = aCurrentNetwork;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateHomeOperator
+// updates the home network
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateHomeOperator( TInt aHomeOperator )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateHomeOperator" );
+    iHomeOperator = aHomeOperator;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateConnectionType
+// updates the connection type
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateConnectionType( const TDesC& aConnectionType )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::UpdateConnectionType" );
+    iSessionConnectionType.Copy( aConnectionType );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function : UpdateSessionStartGMTTime
+// function updates session start time with current GMT time
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionStartGMTTime()
+    {
+    iStartSessionTime.UniversalTime();    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: TerminationStatus
+// returns termination status
+// ---------------------------------------------------------------------------
+//
+TDesC& CIRSessionLogger::TerminationStatus()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::TerminationStatus" );
+    return iTerminatedBy;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ChannelID
+// returns the channel id
+// ---------------------------------------------------------------------------
+//    
+TInt CIRSessionLogger::ChannelID() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::ChannelID" );
+    return iChannelId;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: CurrentNetwork
+// returns the Current Network
+// ---------------------------------------------------------------------------
+//    
+TInt CIRSessionLogger::CurrentNetwork() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::CurrentNetwork" );
+    return iSessionCurrentNetwork;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: HomeOperator
+// returns the home network
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::HomeOperator() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::HomeOperator" );
+    return iHomeOperator;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConnectionType
+// returns the connection type
+// ---------------------------------------------------------------------------
+//    
+TDesC& CIRSessionLogger::ConnectionType()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::ConnectionType" );
+    return iSessionConnectionType;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: StartTime
+// returns the start time
+// ---------------------------------------------------------------------------
+//    
+TDes& CIRSessionLogger::StartTime()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::StartTime" );
+    return iStartTime;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: ConnectionType
+// returns the connection type
+// ---------------------------------------------------------------------------
+//    
+TDesC& CIRSessionLogger::ConnectedFrom()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::ConnectedFrom" );
+    return iConnectedFrom;
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: SessionId
+// returns the session id
+// ---------------------------------------------------------------------------
+//    
+TInt CIRSessionLogger::SessionId() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::SessionId" );
+    return iSessionId;
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: SessionDuration
+// returns the duration of the session
+// ---------------------------------------------------------------------------
+//    
+TInt CIRSessionLogger::SessionDuration() const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::SessionDuration" );
+    return iDuration;
+    }
+
+// ---------------------------------------------------------------------------
+// Function: FileName
+// returns file name
+// ---------------------------------------------------------------------------
+//
+TFileName CIRSessionLogger::FileName()
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::FileName" );
+    return iFilePath;    
+    }
+
+// ---------------------------------------------------------------------------
+// Function: DateTime
+// returns session start time
+// ---------------------------------------------------------------------------
+//
+TTime CIRSessionLogger::DateTime()
+    {
+    return iStartSessionTime;    
+    }
+    
+
+// ---------------------------------------------------------------------------
+//  Function: SessionData
+//  function returns instance session log array
+// ---------------------------------------------------------------------------
+//
+const RArray<TIRServer>& CIRSessionLogger::SessionData()const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::SessionData" );
+    return iRServer;    
+    }
+
+// ---------------------------------------------------------------------------
+//  Function: SongRecogLog
+//  function returns instance song recog log array
+// ---------------------------------------------------------------------------
+//
+const RArray<TIRSongRecogLog>& CIRSessionLogger::SongRecogLog()const
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::SongRecogLog" );
+    return iRSongRecogLog;    
+    }
+
+// ---------------------------------------------------------------------------
+//  Function: DurationValue
+//  function returns duration value
+// ---------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CIRSessionLogger::DurationValue()
+    {
+    return iDurationValue;    
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: GetBackedUp
+// Back up the session log of a session
+// ---------------------------------------------------------------------------
+//    
+void CIRSessionLogger::GetBackedUp( CIRSessionLogger& aSession )
+    {
+    //copies the file path
+    iFilePath = aSession.FileName();
+    //session start time
+    iStartSessionTime = aSession.DateTime();
+    //duration 
+    iDurationValue = aSession.DurationValue();
+    //start time 
+    iStartTime.Copy( aSession.StartTime() );
+    //termination status
+    iTerminatedBy.Copy( aSession.TerminationStatus() );
+    //connected from information
+    iConnectedFrom.Copy( aSession.ConnectedFrom() );
+    //connection type
+    iSessionConnectionType.Copy( aSession.ConnectionType() );
+    //session duration
+    iDuration = aSession.SessionDuration();
+    //state of the player
+    iIsSessionProgressing = aSession.IsSessionProgressing();
+    //Compensation time
+    iActiveSessionTime = aSession.CompensationTime();
+    //session id
+    iSessionId = aSession.SessionId();
+    //channel id
+    iChannelId = aSession.ChannelID();
+    //home operator
+    iHomeOperator = aSession.HomeOperator();
+    //current network
+    iSessionCurrentNetwork = aSession.CurrentNetwork();
+    //session mark checking flag
+    iSessionMarked = aSession.SessionMarked();
+    
+    ResetResource();
+    //getting session data    
+    for ( TInt iter = 0 ;iter < aSession.SessionData().Count(); iter++ )
+        {
+        //session data
+        iRServer.Append( aSession.SessionData().operator[]( iter) );
+        }
+    //getting song recog log data  
+    for(TInt iter = 0 ;iter < aSession.SongRecogLog().Count(); iter++)
+        {
+        //song recog log data
+        iRSongRecogLog.Append(aSession.SongRecogLog().operator[](iter));
+        }	
+	}
+			
+// ---------------------------------------------------------------------------
+// Function: ExternalizeL
+// externialize the stream to the given stream
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::ExternalizeL( RWriteStream& aWriteStream )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL" );
+    TInt length;
+    //start time
+    length = iStartTime.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iStartTime, length );
+    
+    //connected from
+    length = iConnectedFrom.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iConnectedFrom, length );
+    
+    //session id
+    aWriteStream.WriteInt32L( iSessionId );
+    
+    //connection type
+    length = iSessionConnectionType.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iSessionConnectionType, length );
+    
+    //channel id
+    aWriteStream.WriteInt32L( iChannelId );
+    
+    //current network
+    aWriteStream.WriteInt32L( iSessionCurrentNetwork );
+    
+    //home operator
+    aWriteStream.WriteInt32L( iHomeOperator );
+    
+    //duration
+    aWriteStream.WriteInt32L( iDuration );
+    
+    //terminated by
+    length = iTerminatedBy.Length();
+    aWriteStream.WriteInt32L( length );
+    aWriteStream.WriteL( iTerminatedBy, length );
+    
+    //count
+    aWriteStream.WriteInt32L( iRServer.Count() );
+    
+    //session duration
+    //Session Data
+    for ( TInt iter=0; iter<iRServer.Count(); iter++ )
+        {
+        //channel Server Url;
+        length = iRServer[iter].iServerUrl.Length();
+        aWriteStream.WriteInt32L( length );
+        aWriteStream.WriteL( iRServer[iter].iServerUrl, length );    
+        //channel server result
+        length = iRServer[iter].iServerResult.Length();
+        aWriteStream.WriteInt32L( length );
+        aWriteStream.WriteL( iRServer[iter].iServerResult, length );
+        //count
+        aWriteStream.WriteInt32L( iRServer[iter].iCount );
+        }
+	
+    //count
+    aWriteStream.WriteInt32L(iRSongRecogLog.Count());
+    
+    //session duration
+    //Session Data
+    for(TInt iter=0;iter<iRSongRecogLog.Count();iter++)
+        {
+        //channel Server Url;
+        length = iRSongRecogLog[iter].iTimeStamp.Length();
+        aWriteStream.WriteInt32L(length);
+        aWriteStream.WriteL(iRSongRecogLog[iter].iTimeStamp,length);  
+        }	
+    IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL - Exiting." );
+    }
+    
+// ---------------------------------------------------------------------------
+// Function: InternalizeL
+// gets the data from the stream
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::InternalizeL( RReadStream& aReadStream )
+    {
+    IRLOG_DEBUG( "CIRSessionLogger::InternalizeL" );
+    TInt length;
+    
+    //Start Time
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iStartTime, length );
+    
+    //Connected From    
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iConnectedFrom, length );
+    
+    //Session Id
+    iSessionId=aReadStream.ReadInt32L();
+    
+    //Session Connection Type
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iSessionConnectionType, length );
+    
+    //Channel Id
+    iChannelId = aReadStream.ReadInt32L();
+    
+    //Session Current Network
+    iSessionCurrentNetwork = aReadStream.ReadInt32L();
+    
+    //Home Operator
+    iHomeOperator = aReadStream.ReadInt32L();
+    
+    //Duration
+    iDuration = aReadStream.ReadInt32L();
+    
+    //Terminated By
+    length = aReadStream.ReadInt32L();
+    aReadStream.ReadL( iTerminatedBy, length );
+    
+    //count
+    TInt count = aReadStream.ReadInt32L();
+    
+    //Session Data
+    iRServer.Reset();
+    for ( TInt iter=0; iter<count; iter++ )
+        {
+        TIRServer hold;
+        
+        //Server Url
+        length = aReadStream.ReadInt32L();
+        hold.iServerUrl.Zero();
+        aReadStream.ReadL( hold.iServerUrl, length );
+
+        //Server Result
+        length = aReadStream.ReadInt32L();
+        hold.iServerResult.Zero();
+        aReadStream.ReadL( hold.iServerResult, length );
+        
+        //Count
+        hold.iCount = aReadStream.ReadInt32L();
+        iRServer.Append( hold );
+        }
+
+    //count
+    count = aReadStream.ReadInt32L();	
+    //Song Recog Data
+    iRSongRecogLog.Reset();
+    for(TInt iter=0;iter<count;iter++)
+        {
+        TIRSongRecogLog hold;
+        
+        //Server Url
+        length = aReadStream.ReadInt32L();
+        hold.iTimeStamp.Zero();
+        aReadStream.ReadL(hold.iTimeStamp,length);
+        
+        iRSongRecogLog.Append(hold);
+        }
+    
+    IRLOG_DEBUG( "CIRSessionLogger::InternalizeL - Exiting." );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/bmarm/irsettingsu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,40 @@
+EXPORTS
+	_ZN11CIRSettings11SetTimeOutLEi @ 1 NONAME
+	_ZN11CIRSettings14MaxPresetCountEv @ 2 NONAME
+	_ZN11CIRSettings15SetISDSBaseUrlLERK7TDesC16 @ 3 NONAME
+	_ZN11CIRSettings16SetLogRunningNoLEv @ 4 NONAME
+	_ZN11CIRSettings17GetGlobalAdvFlagLEv @ 5 NONAME
+	_ZN11CIRSettings17SetSilencePeriodLEj @ 6 NONAME
+	_ZN11CIRSettings17SetVolumeSettingLEi @ 7 NONAME
+	_ZN11CIRSettings18IsUpdateAvailableLEv @ 8 NONAME
+	_ZN11CIRSettings18SetMaxPresetCountLEi @ 9 NONAME
+	_ZN11CIRSettings18SetStartingViewIdLEm @ 10 NONAME
+	_ZN11CIRSettings18SetTimeCorrectionLEi @ 11 NONAME
+	_ZN11CIRSettings19SetSongHisotryShowLEi @ 12 NONAME
+	_ZN11CIRSettings19SetUpdateAvailableLEv @ 13 NONAME
+	_ZN11CIRSettings20SetPreferredQualityLEi @ 14 NONAME
+	_ZN11CIRSettings21ReSetUpdateAvailableLEv @ 15 NONAME
+	_ZN11CIRSettings22SetSilencePeriodStartLERK7TDesC16 @ 16 NONAME
+	_ZN11CIRSettings25IsFlagTermsAndConditionsLEv @ 17 NONAME
+	_ZN11CIRSettings26SetFlagTermsAndConditionsLEv @ 18 NONAME
+	_ZN11CIRSettings28ReSetFlagTermsAndConditionsLEv @ 19 NONAME
+	_ZN11CIRSettings5OpenLEv @ 20 NONAME
+	_ZN11CIRSettings8SetIRIDLERK7TDesC16 @ 21 NONAME
+	_ZNK11CIRSettings10GetTimeOutEv @ 22 NONAME
+	_ZNK11CIRSettings11PrivatePathEv @ 23 NONAME
+	_ZNK11CIRSettings14TimeCorrectionEv @ 24 NONAME
+	_ZNK11CIRSettings15GetISDSBaseUrlLEv @ 25 NONAME
+	_ZNK11CIRSettings15GetLogRunningNoEv @ 26 NONAME
+	_ZNK11CIRSettings16GetIrappVersionLEv @ 27 NONAME
+	_ZNK11CIRSettings16GetVolumeSettingEv @ 28 NONAME
+	_ZNK11CIRSettings17GetSilencePeriodLEv @ 29 NONAME
+	_ZNK11CIRSettings18GetSongHistoryShowEv @ 30 NONAME
+	_ZNK11CIRSettings18GetStartingViewIdLEv @ 31 NONAME
+	_ZNK11CIRSettings19GetPreferredQualityEv @ 32 NONAME
+	_ZNK11CIRSettings22GetSilencePeriodStartLEv @ 33 NONAME
+	_ZNK11CIRSettings8GetIRIDLEv @ 34 NONAME
+	_ZN11CIRSettings30SetManuallyInputtedStationUrlLERK7TDesC16 @ 35 NONAME
+	_ZN11CIRSettings31SetManuallyInputtedStationNameLERK7TDesC16 @ 36 NONAME
+	_ZNK11CIRSettings30GetManuallyInputtedStationUrlLEv @ 37 NONAME
+	_ZNK11CIRSettings31GetManuallyInputtedStationNameLEv @ 38 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/bwinscw/irsettingsu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,40 @@
+EXPORTS
+	?GetStartingViewIdL@CIRSettings@@QBEKXZ @ 1  NONAME ; unsigned long CIRSettings::GetStartingViewIdL(void) const
+	?SetTimeOutL@CIRSettings@@QAEXH@Z @ 2  NONAME ; void CIRSettings::SetTimeOutL(int)
+	?SetPreferredQualityL@CIRSettings@@QAEXH@Z @ 3  NONAME ; void CIRSettings::SetPreferredQualityL(int)
+	?GetSilencePeriodStartL@CIRSettings@@QBEABVTDesC16@@XZ @ 4  NONAME ; class TDesC16 const & CIRSettings::GetSilencePeriodStartL(void) const
+	?SetStartingViewIdL@CIRSettings@@QAEXK@Z @ 5  NONAME ; void CIRSettings::SetStartingViewIdL(unsigned long)
+	?MaxPresetCount@CIRSettings@@QAEHXZ @ 6  NONAME ; int CIRSettings::MaxPresetCount(void)
+	?GetISDSBaseUrlL@CIRSettings@@QBEABVTDesC16@@XZ @ 7  NONAME ; class TDesC16 const & CIRSettings::GetISDSBaseUrlL(void) const
+	?IsUpdateAvailableL@CIRSettings@@QAEHXZ @ 8  NONAME ; int CIRSettings::IsUpdateAvailableL(void)
+	?GetIrappVersionL@CIRSettings@@QBEABVTDesC16@@XZ @ 9  NONAME ; class TDesC16 const & CIRSettings::GetIrappVersionL(void) const
+	?OpenL@CIRSettings@@SAPAV1@XZ @ 10  NONAME ; class CIRSettings * CIRSettings::OpenL(void)
+	?IsFlagTermsAndConditionsL@CIRSettings@@QAEHXZ @ 11  NONAME ; int CIRSettings::IsFlagTermsAndConditionsL(void)
+	?SetSongHisotryShowL@CIRSettings@@QAEXH@Z @ 12  NONAME ; void CIRSettings::SetSongHisotryShowL(int)
+	?SetSilencePeriodL@CIRSettings@@QAEXI@Z @ 13  NONAME ; void CIRSettings::SetSilencePeriodL(unsigned int)
+	?ReSetFlagTermsAndConditionsL@CIRSettings@@QAEXXZ @ 14  NONAME ; void CIRSettings::ReSetFlagTermsAndConditionsL(void)
+	?GetLogRunningNo@CIRSettings@@QBEHXZ @ 15  NONAME ; int CIRSettings::GetLogRunningNo(void) const
+	?SetMaxPresetCountL@CIRSettings@@QAEXH@Z @ 16  NONAME ; void CIRSettings::SetMaxPresetCountL(int)
+	?SetISDSBaseUrlL@CIRSettings@@QAEXABVTDesC16@@@Z @ 17  NONAME ; void CIRSettings::SetISDSBaseUrlL(class TDesC16 const &)
+	?SetTimeCorrectionL@CIRSettings@@QAEXH@Z @ 18  NONAME ; void CIRSettings::SetTimeCorrectionL(int)
+	?TimeCorrection@CIRSettings@@QBEHXZ @ 19  NONAME ; int CIRSettings::TimeCorrection(void) const
+	?SetFlagTermsAndConditionsL@CIRSettings@@QAEXXZ @ 20  NONAME ; void CIRSettings::SetFlagTermsAndConditionsL(void)
+	?GetSilencePeriodL@CIRSettings@@QBEIXZ @ 21  NONAME ; unsigned int CIRSettings::GetSilencePeriodL(void) const
+	?GetSongHistoryShow@CIRSettings@@QBEHXZ @ 22  NONAME ; int CIRSettings::GetSongHistoryShow(void) const
+	?PrivatePath@CIRSettings@@QBEABVTDesC16@@XZ @ 23  NONAME ; class TDesC16 const & CIRSettings::PrivatePath(void) const
+	?GetPreferredQuality@CIRSettings@@QBEHXZ @ 24  NONAME ; int CIRSettings::GetPreferredQuality(void) const
+	?GetGlobalAdvFlagL@CIRSettings@@QAEHXZ @ 25  NONAME ; int CIRSettings::GetGlobalAdvFlagL(void)
+	?GetVolumeSetting@CIRSettings@@QBEHXZ @ 26  NONAME ; int CIRSettings::GetVolumeSetting(void) const
+	?SetUpdateAvailableL@CIRSettings@@QAEXXZ @ 27  NONAME ; void CIRSettings::SetUpdateAvailableL(void)
+	?SetLogRunningNoL@CIRSettings@@QAEXXZ @ 28  NONAME ; void CIRSettings::SetLogRunningNoL(void)
+	?GetIRIDL@CIRSettings@@QBEABVTDesC16@@XZ @ 29  NONAME ; class TDesC16 const & CIRSettings::GetIRIDL(void) const
+	?SetSilencePeriodStartL@CIRSettings@@QAEXABVTDesC16@@@Z @ 30  NONAME ; void CIRSettings::SetSilencePeriodStartL(class TDesC16 const &)
+	?GetTimeOut@CIRSettings@@QBEHXZ @ 31  NONAME ; int CIRSettings::GetTimeOut(void) const
+	?SetVolumeSettingL@CIRSettings@@QAEXH@Z @ 32  NONAME ; void CIRSettings::SetVolumeSettingL(int)
+	?SetIRIDL@CIRSettings@@QAEXABVTDesC16@@@Z @ 33  NONAME ; void CIRSettings::SetIRIDL(class TDesC16 const &)
+	?ReSetUpdateAvailableL@CIRSettings@@QAEXXZ @ 34  NONAME ; void CIRSettings::ReSetUpdateAvailableL(void)
+	?GetManuallyInputtedStationNameL@CIRSettings@@QBEABVTDesC16@@XZ @ 35  NONAME ; class TDesC16 const & CIRSettings::GetManuallyInputtedStationNameL(void) const
+	?GetManuallyInputtedStationUrlL@CIRSettings@@QBEABVTDesC16@@XZ @ 36  NONAME ; class TDesC16 const & CIRSettings::GetManuallyInputtedStationUrlL(void) const
+	?SetManuallyInputtedStationUrlL@CIRSettings@@QAEXABVTDesC16@@@Z @ 37  NONAME ; void CIRSettings::SetManuallyInputtedStationUrlL(class TDesC16 const &)
+	?SetManuallyInputtedStationNameL@CIRSettings@@QAEXABVTDesC16@@@Z @ 38  NONAME ; void CIRSettings::SetManuallyInputtedStationNameL(class TDesC16 const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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:
+*
+*/
+
+
+prj_platforms
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// Cenrep
+../../cenrep/2000b499.txt                          /epoc32/data/z/private/10202be9/2000b499.txt
+../../cenrep/2000b499.txt                          /epoc32/release/winscw/udeb/z/private/10202be9/2000b499.txt
+../../cenrep/2000b499.txt                          /epoc32/release/winscw/urel/z/private/10202be9/2000b499.txt
+#ifdef __WINS__
+../../cenrep/2000b499.txt  		        /epoc32/winscw/c/private/10202be9/2000b499.txt
+#endif
+
+prj_mmpfiles
+irsettings.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/group/irsettings.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Settings component definition file.
+*
+*/
+
+
+#include        <platform_paths.hrh>
+#include        <data_caging_paths.hrh>
+
+TARGET              irsettings.dll
+TARGETTYPE          DLL
+UID                 0x1000008D 0x2000B4A3
+
+
+VENDORID            VID_DEFAULT
+CAPABILITY          CAP_GENERAL_DLL
+
+PAGED
+
+SOURCEPATH          ../src
+SOURCE              irsettings.cpp
+
+USERINCLUDE         ../inc
+USERINCLUDE         ../../inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server)
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             commonengine.lib
+LIBRARY             cone.lib
+LIBRARY             efsrv.lib
+LIBRARY             estor.lib
+LIBRARY             euser.lib
+LIBRARY             platformenv.lib
+LIBRARY             centralrepository.lib
+LIBRARY             mmfdevsound.lib
+
+LIBRARY        flogger.lib
+
+#if defined( WINSCW )
+DEFFILE             ../bwinscw/ 
+#else
+DEFFILE             ../bmarm/ 
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/inc/irsettings.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,136 @@
+/*
+* 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 C_CIRSETTINGS_H
+#define C_CIRSETTINGS_H
+
+#include <f32file.h>
+
+class CRepository;
+
+// CLEANUP REQUIRED
+
+const TInt KMaxLengthIRAppVersion = 50;
+const TInt KMaxLengthIrId = 32;
+const TInt KMaxLengthSilencePeriod = 32;
+const TInt KMaxLengthUrl = 500;
+const TInt KMaxLengthFileName = 500;
+
+// END CLEANUP
+
+NONSHARABLE_CLASS( CIRSettings ) : public CObject
+    {
+
+public:
+
+    IMPORT_C static CIRSettings* OpenL();
+    ~CIRSettings();
+
+    IMPORT_C TBool IsFlagTermsAndConditionsL();
+    IMPORT_C void SetFlagTermsAndConditionsL();
+    IMPORT_C void ReSetFlagTermsAndConditionsL();
+    IMPORT_C const TDesC& GetIrappVersionL() const;
+    IMPORT_C void SetIRIDL(const TDesC& aIrid);
+    IMPORT_C const TDesC& GetIRIDL() const;
+    IMPORT_C const  TDesC& GetISDSBaseUrlL() const;
+    IMPORT_C void SetISDSBaseUrlL(const TDesC& aIsdsUrl);
+    IMPORT_C TInt GetVolumeSetting() const;
+    IMPORT_C void SetVolumeSettingL(TInt aPlayVolume);
+    IMPORT_C TBool IsUpdateAvailableL();
+    IMPORT_C void SetUpdateAvailableL();
+	IMPORT_C void ReSetUpdateAvailableL();
+    IMPORT_C TInt GetLogRunningNo() const;
+    IMPORT_C void SetLogRunningNoL();
+    IMPORT_C void SetTimeOutL(TInt aTimeOut);
+    IMPORT_C TInt GetTimeOut() const;
+    IMPORT_C void SetSilencePeriodL(TUint aSilencePeriod);
+    IMPORT_C TUint GetSilencePeriodL() const;
+    IMPORT_C void SetSilencePeriodStartL(const TDesC& aSilencePeriodStart);
+    IMPORT_C const TDesC& GetSilencePeriodStartL() const;
+    IMPORT_C void SetPreferredQualityL(TInt aQualityValue);
+    IMPORT_C TInt GetPreferredQuality() const; 
+    IMPORT_C void SetSongHisotryShowL(TInt aShowFlag);
+    IMPORT_C TInt GetSongHistoryShow() const;
+    IMPORT_C void SetMaxPresetCountL(TInt aMaxCount);
+    IMPORT_C TInt MaxPresetCount();
+    IMPORT_C void SetTimeCorrectionL(TInt aCorrection);
+    IMPORT_C TInt TimeCorrection() const;
+    IMPORT_C const TDesC& PrivatePath() const;
+
+	// Methods for starting view
+    /**
+     * SetStartingViewIdL()
+     * Sets the starting view Id in cenrep
+     */
+    IMPORT_C void SetStartingViewIdL(TUint32 aStartingViewId);
+   
+    /**
+     * GetStartingViewIdL()
+     * Gets the starting view Id from cenrep
+     */
+    IMPORT_C TUint32 GetStartingViewIdL() const;
+   
+	/**
+	 * GetGlobalAdvFlagL()
+	 * Gets the global advertisement flag from cenrep
+	 */
+	IMPORT_C TBool GetGlobalAdvFlagL();
+
+	/**
+	 * GetManuallyInputtedStationUrlL()
+	 * Gets the url inputted in Go to station view from cenrep
+	 */
+    IMPORT_C const  TDesC& GetManuallyInputtedStationUrlL() const;
+    /**
+     * SetManuallyInputtedStationUrlL()
+     * Sets the url in Go to station view from cenrep
+     */
+    IMPORT_C void SetManuallyInputtedStationUrlL(const TDesC& aUrl);
+
+    /**
+     * GetManuallyInputtedStationNameL()
+     * Gets the name inputted in Go to station view from cenrep
+     */
+    IMPORT_C const  TDesC& GetManuallyInputtedStationNameL() const;
+    /**
+     * SetManuallyInputtedStationNameL()
+     * Sets the name in Go to station view from cenrep
+     */
+    IMPORT_C void SetManuallyInputtedStationNameL(const TDesC& aName);
+private:
+
+    CIRSettings();
+    void ConstructL();
+
+private:
+
+	CRepository *iRepository;
+    RFs iFs;
+
+	//key KIrappVersion
+    TBuf<KMaxLengthIRAppVersion> iIrappVersion;//! irapp version number, 
+    //key KIRID
+    TBuf<KMaxLengthIrId> iIRID;//! ir-id supplied by isds. cannot change
+    // key KSilencePeriodStartTime
+    TBuf<KMaxLengthSilencePeriod> iSilencePeriodStartTime; //!Universal timestamp for the time of decline of an Update
+    //key KISDSBaseUrl
+    TBuf<KMaxLengthUrl> iISDSBaseUrl;//!the base url of isds
+    TBuf<KMaxLengthFileName> iPrivatePath;
+    TBuf<KMaxLengthUrl> iStationUrl;
+    TBuf<KMaxLengthFileName> iStationName;
+    };
+    
+#endif // C_CIRSETTINGS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/inc/irsettingsutility.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* Copyright (c)  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 IRSETTINGSUTILITY_H
+#define IRSETTINGSUTILITY_H
+
+#include <e32cmn.h>
+
+class CDictionaryStore;
+
+NONSHARABLE_CLASS( IRSettingsUtility )
+    {
+
+public:
+
+    static void WriteIntL( CDictionaryStore& aDictionary, TUid aUid, TInt aValue );
+    static void WriteInt64L( CDictionaryStore& aDictionary, TUid aUid, TInt64 aValue );
+    static void WriteUintL( CDictionaryStore& aDictionary, TUid aUid, TUint aValue );
+    static void WriteBoolL( CDictionaryStore& aDictionary, TUid aUid, TBool aValue );
+    static void WriteStringL( CDictionaryStore& aDictionary, TUid aUid, const TDesC& aValue );
+
+    static TInt ReadIntL( CDictionaryStore& aDictionary, TUid aUid );
+    static TInt64 ReadInt64L( CDictionaryStore& aDictionary, TUid aUid );
+    static TUint ReadUintL( CDictionaryStore& aDictionary, TUid aUid );
+    static TBool ReadBoolL(  CDictionaryStore& aDictionary, TUid aUid );
+    static HBufC* ReadStringL( CDictionaryStore& aDictionary, TUid aUid );
+
+    };
+
+#endif // IRSETTINGSUTILITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsettings/src/irsettings.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,578 @@
+/*
+* 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 <barsc.h>
+#include <bautils.h>
+#include <coemain.h>
+#include <pathinfo.h>
+#include <s32file.h>
+#include <centralrepository.h>
+
+#include "irdebug.h"
+#include "irsettings.h"
+#include "irinternalcrkeys.h"
+
+// Constants
+const TInt KSix = 6;
+const TInt KFifty = 50;
+const TInt KTimeSize = 60000000 ;
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRSettings* CIRSettings::OpenL()
+    {
+    IRLOG_DEBUG( "CIRSettings::OpenL() - Entering" );
+    CIRSettings* self = static_cast<CIRSettings*>( Dll::Tls() );
+
+    if ( self )
+        {
+        User::LeaveIfError( self->Open() );
+        }
+    else
+        {
+        self = new ( ELeave ) CIRSettings;
+        CleanupClosePushL( *self );
+        self->ConstructL();
+        CleanupStack::Pop( self );
+        }
+    IRLOG_DEBUG( "CIRSettings::OpenL() - Exiting" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+CIRSettings::CIRSettings()
+    {
+    IRLOG_DEBUG( "CIRSettings::CIRSettings" );
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CIRSettings::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRSettings::ConstructL() - Enter" );
+
+	iRepository = CRepository::NewL(KCRUidInternetRadio);
+		
+    User::LeaveIfError( iFs.Connect() );
+    TParse parse;
+    // Parses out the private path of the running process.
+    User::LeaveIfError( iFs.PrivatePath( iPrivatePath ) );
+    
+    TParsePtrC phoneMemoryRootPath( PathInfo::PhoneMemoryRootPath() );
+    TPtrC drive( phoneMemoryRootPath.Drive() );
+    User::LeaveIfError( parse.Set( iPrivatePath, &drive, NULL ) );
+    iPrivatePath = parse.FullName();
+
+    BaflUtils::EnsurePathExistsL( iFs, parse.FullName() );
+
+    IRLOG_DEBUG2("CIRSettings::ConstructL - iPrivatePath = %S", &iPrivatePath );
+    
+    User::LeaveIfError( Dll::SetTls( this ) );
+    
+    IRLOG_DEBUG( "CIRSettings::ConstructL() - Exit" );
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+CIRSettings::~CIRSettings()
+    {
+    IRLOG_DEBUG( "CIRSettings::~CIRSettings() - Entering" );
+	delete iRepository;
+    iFs.Close();
+    
+    Dll::FreeTls();
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRSettings::IsFlagTermsAndConditionsL()
+    {
+       IRLOG_DEBUG( "CIRSettings::IsFlagTermsAndConditionsL() - Entering" );
+       TInt value = 0;
+       User::LeaveIfError( iRepository->Get(KIRTermsAndConditionsFlag, value) );
+       IRLOG_DEBUG( "CIRSettings::IsFlagTermsAndConditionsL() - Exiting" );
+       return value == 1 ? ETrue : EFalse;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetFlagTermsAndConditionsL()
+    {
+       IRLOG_DEBUG( "CIRSettings::SetFlagTermsAndConditionsL() - Entering" );
+       User::LeaveIfError ( iRepository->Set(KIRTermsAndConditionsFlag, 1));
+       IRLOG_DEBUG( "CIRSettings::SetFlagTermsAndConditionsL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::ReSetFlagTermsAndConditionsL()
+    {
+    	IRLOG_DEBUG( "CIRSettings::ReSetFlagTermsAndConditionsL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRTermsAndConditionsFlag, 0));
+        IRLOG_DEBUG( "CIRSettings::ReSetFlagTermsAndConditionsL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRSettings::GetIrappVersionL() const
+    {
+    		IRLOG_DEBUG( "CIRSettings::GetIrappVersionL() - Entering" );
+    		User::LeaveIfError( iRepository->Get(KIRIrAppVersion, (TDes&)iIrappVersion) );
+    		IRLOG_DEBUG( "CIRSettings::GetIrappVersionL() - Exiting" );
+    		return iIrappVersion;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetIRIDL(const TDesC& aIrid)
+    {
+    		IRLOG_DEBUG( "CIRSettings::SetIRIDL() - Entering" );
+            User::LeaveIfError ( iRepository->Set(KIRIrId, aIrid) );
+            IRLOG_DEBUG( "CIRSettings::SetIRIDL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRSettings::GetIRIDL() const
+    {
+    		IRLOG_DEBUG( "CIRSettings::GetIRIDL() - Entering" );
+    		User::LeaveIfError( iRepository->Get(KIRIrId, (TDes&)iIRID) );
+    		IRLOG_DEBUG( "CIRSettings::GetIRIDL() - Exiting" );
+    		return iIRID;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const  TDesC& CIRSettings::GetISDSBaseUrlL() const
+    {
+    	IRLOG_DEBUG( "CIRSettings::GetISDSBaseUrlL() - Entering" );
+    	User::LeaveIfError( iRepository->Get(KIRIsdsUrl, (TDes&)iISDSBaseUrl) );
+    	IRLOG_DEBUG( "CIRSettings::GetISDSBaseUrlL() - Exiting" );
+       	return iISDSBaseUrl;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetISDSBaseUrlL(const TDesC& aIsdsUrl)
+    {
+    	IRLOG_DEBUG( "CIRSettings::SetISDSBaseUrlL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRIsdsUrl, aIsdsUrl) );
+        IRLOG_DEBUG( "CIRSettings::SetISDSBaseUrlL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::GetVolumeSetting() const
+    {
+    IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Entering" );
+    TInt value = KSix;
+    TInt err = iRepository->Get(KIRPlayerVolume, value);
+    if(err)
+	    {
+        IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Error" );
+	    }
+ 
+    IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Exiting" );
+    return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetVolumeSettingL(TInt aPlayVolume)
+    {
+      IRLOG_DEBUG( "CIRSettings::SetVolumeSettingL() - Entering" );
+      User::LeaveIfError ( iRepository->Set(KIRPlayerVolume, aPlayVolume));
+      IRLOG_DEBUG( "CIRSettings::SetVolumeSettingL() - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRSettings::IsUpdateAvailableL()
+    {
+    	IRLOG_DEBUG( "CIRSettings::IsUpdateAvailableL() - Entering" );
+       TBool value = ETrue;
+       User::LeaveIfError( iRepository->Get(KIRUpdateAvailablity, value) );
+       IRLOG_DEBUG( "CIRSettings::IsUpdateAvailableL() - Exiting" );
+       return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetUpdateAvailableL()
+    {
+    	IRLOG_DEBUG( "CIRSettings::SetUpdateAvailableL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRUpdateAvailablity, 1));
+        IRLOG_DEBUG( "CIRSettings::SetUpdateAvailableL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::ReSetUpdateAvailableL()
+    {
+    	IRLOG_DEBUG( "CIRSettings::ReSetUpdateAvailableL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRUpdateAvailablity, 0));
+        IRLOG_DEBUG( "CIRSettings::ReSetUpdateAvailableL() - Exiting" );
+    }
+    
+ 
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::GetLogRunningNo() const
+    {
+		IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Entering" );
+        TInt value = 1;
+        TInt err = iRepository->Get(KIRSessionLogIndex, value);
+        if(err)
+	        {
+    	    IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Error" );
+    	    }
+    	IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Exiting" );
+    	return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetLogRunningNoL()
+    {
+    IRLOG_DEBUG( "CIRSettings::SetLogRunningNoL() - Entering" );
+    TInt value = GetLogRunningNo();
+    value++;
+    User::LeaveIfError ( iRepository->Set(KIRSessionLogIndex,value));
+    IRLOG_DEBUG( "CIRSettings::SetLogRunningNoL() - Exiting" );
+    }
+    
+  
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetTimeOutL(TInt aTimeOut)
+    {
+       IRLOG_DEBUG( "CIRSettings::SetTimeOutL() - Entering" );
+       User::LeaveIfError ( iRepository->Set(KIRHttpTimeout, aTimeOut) );
+       IRLOG_DEBUG( "CIRSettings::SetTimeOutL() - Exiting" );
+       }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::GetTimeOut() const
+    {
+    IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Entering" );
+    TInt value = KTimeSize;
+    TInt err = iRepository->Get(KIRHttpTimeout, value) ;
+    if(err)
+	    {
+        IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Error" );
+	    }
+
+    IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Exiting" );
+    return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetSilencePeriodL(TUint aSilencePeriod)
+    {
+    	IRLOG_DEBUG( "CIRSettings::SetSilencePeriodL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRNewVersionNotificationInterval, (TInt)aSilencePeriod) );
+        IRLOG_DEBUG( "CIRSettings::SetSilencePeriodL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint CIRSettings::GetSilencePeriodL() const
+    {
+    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodL() - Entering" );
+    	TInt value =0;
+    	User::LeaveIfError( iRepository->Get(KIRNewVersionNotificationInterval, value) );
+    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodL() - Exiting" );
+    	return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetSilencePeriodStartL(const TDesC& aSilencePeriodStart)
+    {
+    	IRLOG_DEBUG( "CIRSettings::SetSilencePeriodStartL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRNewVersionNotificationStartingTime, aSilencePeriodStart) );
+        IRLOG_DEBUG( "CIRSettings::SetSilencePeriodStartL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRSettings::GetSilencePeriodStartL() const
+    {
+    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodStartL() - Entering" );
+    	User::LeaveIfError( iRepository->Get(KIRNewVersionNotificationStartingTime,
+    					  (TDes&)iSilencePeriodStartTime) );
+    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodStartL() - Exiting" );
+        return iSilencePeriodStartTime;
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetPreferredQualityL(TInt aQualityValue)
+    {
+    IRLOG_DEBUG( "CIRSettings::SetPreferredQualityL() - Entering" );
+    User::LeaveIfError ( iRepository->Set(KIRPreferredQuality, aQualityValue) );
+    IRLOG_DEBUG( "CIRSettings::SetPreferredQualityL() - Exiting" );
+    }
+
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::GetPreferredQuality() const
+    {
+    	IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Entering" );
+    	TInt value = 0;
+    	TInt err = iRepository->Get(KIRPreferredQuality, value);
+    	if(err)
+	    	{
+	        IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Error" );
+	    	}
+
+	    IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Exiting" );
+    	return value;
+    }
+
+EXPORT_C TInt CIRSettings::GetSongHistoryShow() const
+{
+    IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Entering" );
+    TInt value = 0;
+    TInt err = iRepository->Get(KIRSongHistoryFTU, value);
+    if(err)
+        {
+        IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Error" );
+        }
+
+    IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Exiting" );
+    return value;
+}
+
+EXPORT_C void CIRSettings::SetSongHisotryShowL(TInt aShowFlag)
+{
+    IRLOG_DEBUG( "CIRSettings::SetSongHisotryShow() - Entering" );
+    User::LeaveIfError(iRepository->Set(KIRSongHistoryFTU, aShowFlag));
+    IRLOG_DEBUG( "CIRSettings::SetSongHisotryShow() - Exiting" );
+}
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetMaxPresetCountL(TInt aMaxCount)
+    {
+    IRLOG_DEBUG( "CIRSettings::SetMaxPresetCountL() - Entering" );
+    User::LeaveIfError ( iRepository->Set(KIRFavoritesMaxNum, aMaxCount) );
+    IRLOG_DEBUG( "CIRSettings::SetMaxPresetCountL() - Exiting" );    
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::MaxPresetCount()
+    {
+    	IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Entering" );
+    	TInt value = KFifty;
+    	TInt err = iRepository->Get(KIRFavoritesMaxNum, value) ;
+    	if(err)
+	    	{
+	        IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Error" );
+	    	}
+
+	    IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Exiting" );
+    	return value;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetTimeCorrectionL(TInt aCorrection)
+    {
+    	IRLOG_DEBUG( "CIRSettings::SetTimeCorrectionL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRTimeOffset, aCorrection) );
+        IRLOG_DEBUG( "CIRSettings::SetTimeCorrectionL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSettings::TimeCorrection() const
+    {
+    	IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Entering" );
+        TInt value = 0;
+        TInt err = iRepository->Get(KIRTimeOffset, value) ;
+        if(err)
+	        {
+	        IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Error" );
+	        }
+
+	    IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Exiting" );
+    	return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIRSettings::PrivatePath() const
+    {
+    IRLOG_DEBUG( "CIRSettings::PrivatePath" );
+    return iPrivatePath;
+    }
+
+// ---------------------------------------------------------------------------
+// SetStartingViewIdL()
+// Sets the starting view Id in cenrep
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetStartingViewIdL(TUint32 aStartingViewId)
+    {
+    IRLOG_DEBUG( "CIRSettings::SetStartingViewIdL() - Entering" );
+    User::LeaveIfError ( iRepository->Set(KIRStartingViewId, (TInt)aStartingViewId) );
+    IRLOG_DEBUG( "CIRSettings::SetStartingViewIdL() - Exiting" );
+    }
+    
+// ---------------------------------------------------------------------------
+// GetStartingViewIdL()
+// Gets the starting view Id from cenrep
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIRSettings::GetStartingViewIdL() const
+    {
+    IRLOG_DEBUG( "CIRSettings::GetStartingViewIdL() - Entering" );
+    TInt value = 0;
+    User::LeaveIfError( iRepository->Get(KIRStartingViewId, value) );
+    IRLOG_DEBUG( "CIRSettings::GetStartingViewIdL() - Exiting" );
+    return value;
+    } 
+
+// ---------------------------------------------------------------------------
+// GetGlobalAdvFlagL()
+// Gets the global advertisement flag from cenrep
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CIRSettings::GetGlobalAdvFlagL()
+{
+  IRLOG_DEBUG( "CIRSettings::GetGlobalAdvFlagL() - Entering" );
+  TBool value = ETrue;
+  User::LeaveIfError( iRepository->Get(KIRGlobalAdvEnabled, value) );
+  IRLOG_DEBUG( "CIRSettings::GetGlobalAdvFlagL() - Exiting" );
+  return value;
+}
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const  TDesC& CIRSettings::GetManuallyInputtedStationUrlL() const
+    {
+        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationUrlL() - Entering" );
+        User::LeaveIfError( iRepository->Get(KIRManuallyInputStationUrl, (TDes&)iStationUrl) );
+        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationUrlL() - Exiting" );
+        return iStationUrl;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetManuallyInputtedStationUrlL(const TDesC& aUrl)
+    {
+        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationUrlL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRManuallyInputStationUrl, aUrl) );
+        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationUrlL() - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const  TDesC& CIRSettings::GetManuallyInputtedStationNameL() const
+    {
+        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationNameL() - Entering" );
+        User::LeaveIfError( iRepository->Get(KIRManuallyInputStationName, (TDes&)iStationName) );
+        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationNameL() - Exiting" );
+        return iStationName;
+    }
+    
+// ---------------------------------------------------------------------------
+// description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRSettings::SetManuallyInputtedStationNameL(const TDesC& aName)
+    {
+        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationNameL() - Entering" );
+        User::LeaveIfError ( iRepository->Set(KIRManuallyInputStationName, aName) );
+        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationNameL() - Exiting" );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsonghistory/inc/irsonghistorydb.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,333 @@
+/*
+* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Song History database used for stroing song history entries.
+*
+*/
+
+
+/* ---------------------------------------------------------------------------
+*  Version history:
+*  Template version:
+*  <ccm_history>
+*
+*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
+*  Ref:
+*  Pc lint fixes
+*
+*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
+*  Ref:
+*  Implemented SongHistory changes for channelwise songs
+*
+*  </ccm_history>
+* ============================================================================
+*/
+
+#ifndef CIRSONGHISTORYDB_H
+#define CIRSONGHISTORYDB_H
+
+#include <d32dbms.h>
+#include "irsettings.h"
+
+class CIRSongHistoryInfo;
+class CIRSettings;
+ 
+
+// Maximum no of entries to be stored in the history list.
+const TInt KMaxNoChannelHistoryDbEntries = 30;
+const TInt KMaxNoSongHistoryDbEntries = 100;
+
+// Maximum length of Dbms field string
+const TInt KIRDbMaxStrLen = 255;
+
+const TInt KIRDbMaxChType = 2;
+
+const TInt KMaxColumnLength = 255;
+
+NONSHARABLE_CLASS(CIRSongHistoryDb) : public RDbNamedDatabase
+	{
+//member functions
+public:
+
+	/**
+	* Function : NewL()
+	* Two phased construction
+	* @return instance of CIRSongHistoryDb
+	*/
+		static CIRSongHistoryDb* NewL();
+
+	/**
+	* Function : NewLC()
+	* Two phased construction
+	* @return instance of CIRSongHistoryDb
+	*/
+		static CIRSongHistoryDb* NewLC();
+
+	/**
+	* Function : ~CIRSongHistoryDb()
+	* default destructor
+	*/
+		~CIRSongHistoryDb();
+
+
+
+    /**
+    * Function : AddToSongHistoryDbL()
+    * adds the song history entry into data base
+    * @param various channel information 
+    */
+    TBool AddToSongHistoryDbL( const TDesC& aSongName,
+                                const TDesC& aArtistName, 
+                                const TDesC& aChannelName, 
+                                const TDesC& aChannelUrl,
+                                RBuf& aDelSongName, 
+                                RBuf& aDelArtistname, 
+                                RBuf& aDelChannelName, 
+                                RBuf& aDelChannelUrl,
+                                TInt  aChannelType,
+                                TInt aChannelId,
+                                TInt aBitrate,
+                                const TDesC& aChannelDesc,
+                                const TDesC& aImageUrl,
+                                const TDesC& aGenreName,
+                                const TDesC& aCountryName,
+                                const TDesC& aLanguageName,
+                                const TDesC& aMusicFlag);
+	 /**
+	 * Function : AddToSongHistoryDb2L()
+	 * adds the song history entry into data base
+	 * @param various song information 
+	 */
+	 TBool AddToSongHistoryDb2L( const TDesC& aSongName,
+	                             const TDesC& aArtistName, 	                                
+                                 const TDesC& aChannelName,
+	                             const TDesC& aMusicFlag);
+
+
+	/**
+	* CIRSongHistoryDb::GetAllSongHistoryListL()
+	* gets all the song history entries  into an array
+	* @param aSongHistoryEntries is the array which is to be filled by the SongHistoryDb. 
+	*/
+
+		void GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aSongHistoryEntries);
+    /**
+	* CIRSongHistoryDb::GetAllSongHistoryList2L()
+	* gets all the song history entries  into an array
+	* @param aSongEntries is the array which is to be filled by the SongHistoryDb. 
+	*/
+		void GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries);
+	/**
+	* Function : ClearAllSongHistoryFromDb
+	* delete all the song entries from the database.
+	*/
+
+		TInt ClearAllSongHistoryFromDb();
+		
+	/**
+	* Function : ClearAllSongHistoryFromDb2
+	* delete all the song entries from the database.
+	*/
+		TInt ClearAllSongHistoryFromDb2();
+
+	/**
+	* Function : CountSongHistoryDb()
+	* count the database entries
+	*/
+
+		TInt CountSongHistoryDb();
+		
+	/**
+	* Function : CountSongHistoryDb2()
+	* count the database entries
+	*/
+		TInt CountSongHistoryDb2();
+
+	/**
+	* Function : GetLastHistoryItemL()
+	* Gives the last added entry in the database
+	* @param Channel data to be filled .
+	*/
+	void GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
+					 RBuf& aChannelName, RBuf& aChannelUrl);
+
+	/**
+	* Function : GetChannelSongsCount()
+	* Returns SongsCount for given channel
+	*/
+	TUint GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl );
+	
+	/**
+	* Function : GetChannelSongsCount()
+	* Updates the song history DB when there is a channel removed in the isds.
+	*/
+    void SyncSongHistoryDbL(TInt aChannelId) ;
+    
+	/**
+	* Function : GetIdPresentInDb()
+	* Gets whether the particular channel ID is present in history DB or not. 
+	*/
+    TBool GetIdPresentInDbL(TInt aChannelId) ;
+    
+	/**
+	* Function : UpdateSongHistoryDb()
+	* Updates the song history DB when there is a channel change in the isds.
+	*/
+    TInt UpdateSongHistoryDbL( TInt aChannelId,
+						      const TDesC& aChannelUrl,
+						      const TDesC& aImageUrl,
+                              const TDesC& aGenreName,
+                              const TDesC& aCountryName,
+                              const TDesC& aLanguageName,						      
+							  const TDesC& aMusicFlag);
+
+    /*
+     * search if a record already exists in database. If yes, delete it.
+     */
+    void SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
+                                TInt aChannelType, TInt aPresetId);
+    
+    /*
+     * delete a recorder by the index, for station history database
+     * */
+    TInt DeleteOneHistory(TInt aIndex);
+    
+    /*
+     * delete a recorder by the index, for songhistory database
+     * */
+    TInt DeleteOneSongHistory(TInt aIndex);
+
+private:
+
+	/**
+	* Function : ConstructL()
+	* two phase construction
+	*/
+    void ConstructL();
+
+    /**
+	* Function : CloseSongHistoryDb()
+	* Closes the database
+	*/
+	void CloseSongHistoryDb();
+
+	/**
+	* Function : CreateSongHistoryTablesL()
+	* creates songhistory table with three columns
+	* log data
+	* ---------------------------------------------------------------------------
+	* SongHistoryTable
+	*---------------------------
+	*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
+	*---------------------------
+	*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
+	*----------------------------------------------------------------------------
+	*/
+	void CreateSongHistoryTablesL();
+	
+    /**
+	* Function : CreateSongHistoryTables2L()
+	* creates songhistory table with three columns
+	* log data
+	* ---------------------------------------------------------------------------
+	* SongHistoryTable
+	*---------------------------
+	*| SongName | ArtistName | ChannelName | MusicStatusFlag
+	*---------------------------
+	*|EDbColText| EDbColText | EDbColText  | EDbColText |
+	*----------------------------------------------------------------------------
+	*/
+	void CreateSongHistoryTables2L();
+
+   /**
+	* Function : CreateDbCondition()
+	* Creates  the dbms file conditionally(only if not yet created)
+	* @param aSongHistoryDbFile the Database file name
+	*/
+	void CreateDbCondition(const TFileName& aSongHistoryDbFile);
+
+
+	/**
+	* Function : OpenSongHistoryDbL()
+	* @param aSongHistoryDbFile the Database file name
+	* opening the data base
+	*/
+	void OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile);
+
+	/**
+	* Function : CreateSongHistoryDb()
+	* creates the dbms files
+	* @param aSongHistoryDbFile database filename
+	*/
+	TInt CreateSongHistoryDb(const TFileName& aSongHistoryDbFile);
+	
+	/**
+	 * to wrapper the delete leaving
+	 */
+	TInt DeleteOneHistoryL(TInt aIndex);
+
+    /**
+     * to wrapper the delete leaving
+     */
+    TInt DeleteOneSongHistoryL(TInt aIndex);
+
+	/**
+	* Data-structure to hold unique channel info
+	*/
+	class CIRChannelInfo : public CBase
+	{
+	public:
+		~CIRChannelInfo()
+		{
+			iChannelUrl.Close();
+			iChannelName.Close();
+		}
+		RBuf iChannelUrl;
+		RBuf iChannelName;
+		TInt iChannelType;
+	};
+	
+
+
+	/**
+	* Comparer function to compare two CIRChannelInfo's
+	*/
+	static TBool CompareChannelInfos(const CIRChannelInfo& aFirst, const CIRChannelInfo& aSecond);
+	 
+//data members
+
+private:
+
+	//	File session
+
+    RFs iFsSession;
+
+
+     //	Table which stores History information
+
+    RDbTable iSongHistoryTable;
+
+    // only save the song info for the song history view.
+	RDbTable iSongHistoryTable2;
+
+    };
+
+#endif  //CIRSONGHISTORYDB_H
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsonghistory/inc/irsonghistoryinfo.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,311 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  header for the songhistory information class
+*
+*/
+
+
+#ifndef C_CIRSONGHISTORYINFO_H
+#define C_CIRSONGHISTORYINFO_H
+
+#include <s32mem.h>
+
+/**
+ * SongHistory meta data information wrapper.
+ */
+NONSHARABLE_CLASS( CIRSongHistoryInfo ) : public CBase
+    {
+
+public:
+
+	/**
+	*Function : NewL
+	*Function returns an instance of CIRSongHistoryInfo
+	*Two phase constructor
+	*@return instance of CIRSongHistoryInfo
+	*/
+    	IMPORT_C static CIRSongHistoryInfo * NewL();
+
+	/**
+	*CIRSongHistoryInfo::NewLC()
+	*Static function
+	*standard two phased constructor
+	*@return *CIRSongHistoryInfo
+	*/
+		IMPORT_C static CIRSongHistoryInfo* NewLC();
+
+	/**
+	*CIRSongHistoryInfo::~CIRSongHistoryInfo()
+	*standard C++ destructor
+	*/
+		IMPORT_C ~CIRSongHistoryInfo();
+
+	/**
+	*CIRSongHistoryInfo::SetHistoryInfoL()
+	*Function to set songhistory ingo from a RBuf
+	*/
+
+		IMPORT_C void SetHistoryInfoL(RBuf& aSongName,
+									 RBuf& aArtist, 
+									 RBuf& aStreamUrl, 
+									 RBuf& aChannelName,
+									 TInt aChannelType , 
+									 TInt aChannelId,
+									 TInt aBitrate,
+									 RBuf& aChannelDesc,
+									 RBuf& aImageUrl,
+                                     RBuf& aGenreName,
+                                     RBuf& aCountryName,
+                                     RBuf& aLanguageName,									 
+									 RBuf& aMusicStoreStatus );
+
+	/**
+	*CIRSongHistoryInfo::SetChannelNameL()
+	*Function to set channel name from a RBuf
+	*@param RBuf aChannelName
+	*/
+
+		void SetChannelNameL(RBuf& aChannelName);
+
+	/**
+	*CIRSongHistoryInfo::SetArtistL()
+	*Function to set artist name from a RBuf
+	*@param RBuf aArtist
+	*/
+
+		void SetArtistL(RBuf& aArtist);
+
+	/**
+	*CIRSongHistoryInfo::SetSongNameL()
+	*Function to set song name from a RBuf
+	*@param RBuf aSongName
+	*/
+
+  		void SetSongNameL (RBuf& aSongName);
+
+	/**
+	*CIRSongHistoryInfo::SetStreamUrlL()
+	*Function to set stream url from a RBuf
+	*@param RBuf aStreamUrl
+	*/
+
+		void SetStreamUrlL(RBuf& aStreamUrl);
+
+	/**
+	*CIRSongHistoryInfo::GetSongInfo()
+	*Function to get song name from a TDesC
+	*@return RBuf& instance 
+	*/
+
+		IMPORT_C const RBuf& GetSongInfo() const;
+
+	/**
+	*CIRSongHistoryInfo::GetArtistName()
+	*Function to get artist name from a TDesC
+	*@return RBuf& instance
+	*/
+
+		IMPORT_C const RBuf& GetArtistInfo() const;
+
+	/**
+	*CIRSongHistoryInfo::GetStreamUrl()
+	*Function to get url name from a TDesC
+	*@return RBuf& instance
+	*/
+
+		 IMPORT_C const RBuf& GetStreamUrl() const;
+
+	/**
+	*CIRSongHistoryInfo::GetChannelName()
+	*Function to get channel name from a TDesC
+	*@return RBuf& instance
+	*/
+
+		IMPORT_C const RBuf& GetChannelName() const;
+		
+	/**
+	*CIRSongHistoryInfo::GetChannelType()
+	*Function to get channel Type
+	*@return TInt channeltype
+	*/
+	    IMPORT_C  TInt GetChannelType() const;
+	    
+	/**
+	*CIRSongHistoryInfo::SetChannelType()
+	*Function to set channel Type
+	*@param TInt aChannelImgUrl
+	*/
+	    void SetChannelType(TInt aChannelImgUrl);
+	/**
+	*CIRSongHistoryInfo::SetChannelId()
+	*Function to set channel Id
+	*@param TInt aChannelId
+	*/
+	    void SetChannelId(TInt aChannelId);
+	/**
+	*CIRSongHistoryInfo::GetChannelId()
+	*Function to get channel Id
+	*@return TInt channelId
+	*/
+	    IMPORT_C  TInt GetChannelId() const;
+	/**
+	*CIRSongHistoryInfo::SetBitrate()
+	*Function to set bitrate
+	*@param TInt aBitrate
+	*/
+        void SetBitrate(TInt aBitrate);
+    /**
+    *CIRSongHistoryInfo::GetBitrate()
+    *Function to get bitrate
+    *@return TInt aBitrate
+    */
+        IMPORT_C  TInt GetBitrate() const;
+	/**
+	*CIRSongHistoryInfo::GetChannelDesc()
+	*Function to get channel Description
+	*@return RBuf& instance
+	*/
+        IMPORT_C const RBuf& GetChannelDesc() const ;
+	/**
+	*CIRSongHistoryInfo::SetChannelDescL()
+	*Function to set channel Description
+	* @param RBuf aChannelDesc
+	*/
+        void SetChannelDescL(RBuf& aChannelDesc) ;
+    /**
+    *CIRSongHistoryInfo::GetImageUrl()
+    *Function to get channel image Url
+    *@return RBuf& instance
+    */
+        IMPORT_C const RBuf& GetImageUrl() const ;
+    /**
+    *CIRSongHistoryInfo::SetImageUrlL()
+    *Function to set channel image Url
+    * @param RBuf aImageUrl
+    */        
+        void SetImageUrlL(RBuf& aImageUrl) ;
+    /**
+    *IRQSongHistoryInfo::GetGenreName()
+    *Function to get channel genre name
+    *@return RBuf& instance
+    */
+        IMPORT_C const RBuf& GetGenreName() const;
+    /**
+    *CIRSongHistoryInfo::SetGenreNameL()
+    *Function to set channel genre name
+    * @param RBuf aGenreName
+    */        
+        void SetGenreNameL(const RBuf& aGenreName);
+    /**
+    *IRQSongHistoryInfo::GetCountryName()
+    *Function to get channel country name
+    *@return RBuf& instance
+    */
+        IMPORT_C const RBuf& GetCountryName() const;
+    /**
+    *CIRSongHistoryInfo::SetCountryNameL()
+    *Function to set channel country name
+    * @param RBuf& aCountryName
+    */        
+        void SetCountryNameL(const RBuf& aCountryName);
+    /**
+    *IRQSongHistoryInfo::getLanguageName()
+    *Function to get channel language name
+    *@return RBuf& instance
+    */
+        IMPORT_C const RBuf& GetLanguageName() const;
+    /**
+    *CIRSongHistoryInfo::SetLanguageNameL()
+    *Function to set channel language name
+    * @param RBuf aLanguageName
+    */        
+        void SetLanguageNameL(const RBuf& aLanguageName);        
+	/**
+	*CIRSongHistoryInfo::SetChannelMusicStatusL()
+	*Function to set Channel MusicStoreStatus
+	*@param RBuf aChannelMusicStatus
+	*/
+        void SetChannelMusicStatusL(RBuf& aChannelMusicStatus) ;
+	/**
+	*CIRSongHistoryInfo::GetChannelMusicStatus()
+	*Function to get channel MusicStoreStatus
+	*@return RBuf& instance
+	*/
+        IMPORT_C const RBuf& GetChannelMusicStatus() const ;
+private:
+
+    /**
+     * Default constructor.
+     */
+
+		CIRSongHistoryInfo();
+
+
+private: //data
+
+	/**
+     * The name of the artist.
+     */
+		RBuf iArtistInfo;
+
+    /**
+     * The name of the song.
+     */
+		RBuf iSongInfo;
+
+    /**
+     * The stream URL.
+	 */
+		RBuf iStreamUrlInfo;
+
+    /**
+     * Channel Name.
+     */
+		RBuf iChannelInfo;
+		
+    /**
+     * Channel Type.
+     */
+		TInt iChannelType;
+		
+		
+    /**
+     * Channel Description.
+     */
+		RBuf iChannelDescription;
+    /**
+	 * Channel Description.
+     */
+        RBuf iImageUrl;
+        RBuf iGenreName;
+        RBuf iCountryName;
+        RBuf iLanguageName;
+    /**
+     * Channel Id.
+     */
+		TInt iChannelId;
+
+	/**
+	 * Channel bitrate.
+	 */
+	TInt iBitrate;
+		
+    /**
+     * Channel's MusicStoreStatus.
+     */
+		RBuf iMusicStoreStatus;
+
+    };
+
+#endif // C_CIRSONGHISTORYINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsonghistory/src/irsonghistorydb.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1293 @@
+/*
+* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the songhistory database
+*
+*/
+
+
+/* ---------------------------------------------------------------------------
+*  Version history:
+*  Template version:
+*  <ccm_history>
+*
+* 
+*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
+*  Ref:
+*  Pc lint fixes
+*
+*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
+*  Ref:
+*  Implemented SongHistory changes for channelwise songs
+*
+*  </ccm_history>
+* ============================================================================
+*/
+
+#include <bautils.h>
+#include <badesca.h>    // CDesCArrayFlat
+#include <s32file.h>    // CFileStore & CPermanentFileStore
+#include <bautils.h>    // file helpers
+#include <eikenv.h>
+
+#include "irsonghistorydb.h"
+#include "irsonghistoryinfo.h"
+#include "irdebug.h"
+#include "irsettings.h"
+
+
+ 
+_LIT( KSongHistoryDBTable,              "ChannelHistoryTable"  );
+_LIT( KSongHistoryDBTable2,             "SongHistoryTable"  );
+_LIT( KSongHistoryDBSongNameColumn,     "SongName"	   );
+_LIT( KSongHistoryDBArtistNameColumn,   "ArtistName"   );
+_LIT( KSongHistoryDBChannelNameColumn,  "ChannelName"  );
+_LIT( KSongHistoryDBChannelUrlColumn,   "ChannelUrl"  );
+_LIT( KSongHistoryDBChannelTypeColumn,   "ChannelType"  );
+_LIT( KSongHistoryDBChannelIdColumn,   "ChannelId"  );
+_LIT( KSongHistoryDBBitrateColumn,   "Bitrate"  );
+_LIT( KSongHistoryDBChannelDescColumn,   "ChannelDescription"  );
+_LIT( KSongHistoryDBImageUrlColumn,   "ImageUrl"  );
+_LIT( KSongHistoryDBGenreNameColumn,   "GenreName"  );
+_LIT( KSongHistoryDBCountryNameColumn,   "CountryName"  );
+_LIT( KSongHistoryDBLanguageNameColumn,   "LanguageName"  );
+_LIT( KSongHistoryDBMusicStatusColumn,   "MusicStoreStatus"  );
+
+_LIT(KSongHistoryDbFile,"songhistoryDb.db");
+_LIT(KNo , "No") ;
+
+const TInt KMaxSize = 255;
+
+TBool CIRSongHistoryDb::CompareChannelInfos(const CIRChannelInfo& aFirst,
+						 const CIRChannelInfo& aSecond)
+{
+   return ( aFirst.iChannelName == aSecond.iChannelName && 
+   					aFirst.iChannelUrl == aSecond.iChannelUrl &&
+   					aFirst.iChannelType == aSecond.iChannelType);
+}
+
+ 
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Function : NewL()
+// two phased construction
+// ---------------------------------------------------------------------------
+//
+CIRSongHistoryDb* CIRSongHistoryDb::NewL()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::NewL" );
+	CIRSongHistoryDb* self=CIRSongHistoryDb::NewLC();
+	CleanupStack::Pop(self);
+	IRLOG_DEBUG( "CIRSongHistoryDb::NewL - Exiting." );
+	return self;
+}
+
+
+// ---------------------------------------------------------------------------
+// Function : NewLC()
+// Two phased construction
+// ---------------------------------------------------------------------------
+//
+CIRSongHistoryDb* CIRSongHistoryDb::NewLC()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC" );
+	CIRSongHistoryDb *self=new(ELeave)CIRSongHistoryDb;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC - Exiting." );
+	return self;
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::~CIRSongHistoryDb()
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRSongHistoryDb::~CIRSongHistoryDb()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb" );
+
+	CloseSongHistoryDb();
+	iFsSession.Close();
+	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb - Exiting." );
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::CreateDbCondition()
+// Creates both the dbms files conditionally(only if not yet created)
+// calls CreateSongHistoryDb()
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::CreateDbCondition(const TFileName& aSongHistoryDbFile)
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition" );
+
+
+	if( !BaflUtils::FileExists(iFsSession, aSongHistoryDbFile) )
+	{
+		TInt error = CreateSongHistoryDb(aSongHistoryDbFile);
+		if( error )
+		{
+			IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (1)." );
+			
+		}
+	}
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (2)." );
+	
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb:AddToSongHistoryDbL()
+// adds the session log entry into data base
+// Returns ETure if songHistory count exceeds 30, else EFalse
+// ---------------------------------------------------------------------------
+//
+TBool CIRSongHistoryDb::AddToSongHistoryDbL(const TDesC& aSongName,
+                                            const TDesC& aArtistName, 
+                                            const TDesC& aChannelName, 
+                                            const TDesC& aChannelUrl,
+                                            RBuf& aDelSongName, 
+                                            RBuf& aDelArtistName, 
+                                            RBuf& aDelChannelName, 
+                                            RBuf& aDelChannelUrl,
+                                            TInt  aChannelType,
+                                            TInt aChannelId,
+                                            TInt aBitrate,
+                                            const TDesC& aChannelDesc,
+                                            const TDesC& aImageUrl,
+                                            const TDesC& aGenreName,
+                                            const TDesC& aCountryName,
+                                            const TDesC& aLanguageName,                                                
+                                            const TDesC& aMusicFlag
+                                            )
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL" );
+
+	TBool bRetval = EFalse;
+	TInt error= 0;
+
+	iSongHistoryTable.Reset();
+
+	//if song history entries are  greater than or equal to 30
+	if( iSongHistoryTable.CountL() >= KMaxNoChannelHistoryDbEntries )
+	{
+		//first row is selected
+		iSongHistoryTable.FirstL();
+
+		//the current row is selected
+		iSongHistoryTable.GetL();
+
+		//delete that entry
+		CDbColSet* columns = iSongHistoryTable.ColSetL();
+		TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+		TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
+		TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
+		TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+
+		delete columns;
+		columns = NULL;
+
+        aDelSongName.CreateL(iSongHistoryTable.ColDes( songColumn ));
+        aDelArtistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
+        aDelChannelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
+        aDelChannelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
+        
+        iSongHistoryTable.DeleteL();
+        Compact();
+
+        bRetval = ETrue;
+	}
+
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    CleanupStack::PushL(columns);
+
+	const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
+	const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
+	const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
+	const TPtrC &channelUrl = aChannelUrl.Left(KIRDbMaxStrLen);
+    const TPtrC &channelDesc = aChannelDesc.Left(KIRDbMaxStrLen);
+    const TPtrC &imageUrl = aImageUrl.Left(KIRDbMaxStrLen);
+    const TPtrC &genreName = aGenreName.Left(KIRDbMaxStrLen);
+    const TPtrC &countryName = aCountryName.Left(KIRDbMaxStrLen);
+    const TPtrC &languageName = aLanguageName.Left(KIRDbMaxStrLen);
+	
+	TInt songLen = aSongName.Length();
+	TInt artistLen = aArtistName.Length();
+	if(  songLen + artistLen > KMaxSize )
+	{
+		IRLOG_DEBUG3( "CIRSongHistoryDb::AddSongHistoryStartL - LONG METADATA %d, %d", songLen, artistLen );
+	}
+	
+	TRAP(error,//trap start
+
+  		iSongHistoryTable.InsertL();
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelUrlColumn ), channelUrl);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelTypeColumn ), aChannelType);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelIdColumn ), aChannelId);
+		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBBitrateColumn ), aBitrate);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelDescColumn ), channelDesc);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBImageUrlColumn ), imageUrl);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBGenreNameColumn ), genreName);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBCountryNameColumn ), countryName);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBLanguageNameColumn ), languageName);
+        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), aMusicFlag);
+		iSongHistoryTable.PutL();
+		);
+
+ 	CleanupStack::PopAndDestroy(columns); 
+ 	if( error!=KErrNone )
+ 	{
+	 	User::LeaveIfError(error);
+ 	}
+    
+ 	iSongHistoryTable.Reset();
+ 	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
+
+	return bRetval;
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb:AddToSongHistoryDb2L()
+// adds the history song into the db
+// Returns ETure if songHistory count exceeds 100, else EFalse
+// ---------------------------------------------------------------------------
+
+TBool CIRSongHistoryDb::AddToSongHistoryDb2L( const TDesC& aSongName,
+                                    const TDesC& aArtistName,                                   
+                                    const TDesC& aChannelName,
+                                    const TDesC& aMusicFlag)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::AddToSongHistoryDb2L" );
+
+    TBool bRetval = EFalse;
+    TInt error= 0;
+    TInt songCompareFlag = 0;
+    TInt artistCompareFlag = 0;    
+     
+
+    iSongHistoryTable2.Reset();    
+    
+    CDbColSet* columns = iSongHistoryTable2.ColSetL();
+    CleanupStack::PushL(columns);
+    
+    /* the following is to judge wether the song is already in the db */    
+    if ( iSongHistoryTable2.CountL() >= 1 )
+    {
+        TInt songNameColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+        TInt artistNameColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
+
+        for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
+        {
+            iSongHistoryTable2.GetL();
+            RBuf songName;
+            RBuf artistName;
+
+			CleanupClosePushL(songName);
+			CleanupClosePushL(artistName);
+			
+            songName.CreateL(iSongHistoryTable2.ColDes( songNameColumn ));
+            artistName.CreateL(iSongHistoryTable2.ColDes( artistNameColumn ));
+            
+            songCompareFlag = (songName).Compare(aSongName);
+            artistCompareFlag = (artistName).Compare(aArtistName);
+            
+            CleanupStack::PopAndDestroy(2);       
+            
+            if( 0 == songCompareFlag && 0 == artistCompareFlag )
+            {
+                CleanupStack::PopAndDestroy(columns); 
+                iSongHistoryTable2.Reset();
+                return bRetval;
+            }
+        }        
+    }
+	/* end  */
+    
+    //if song history entries are  greater than or equal to 100
+    if( iSongHistoryTable2.CountL() >= KMaxNoSongHistoryDbEntries )
+    {
+        //first row is selected
+        iSongHistoryTable2.FirstL();
+        //the current row is selected
+        iSongHistoryTable2.GetL();       
+        //delete the current row
+        iSongHistoryTable2.DeleteL();
+        Compact();     
+        bRetval = ETrue;   
+    }
+    
+    const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
+    const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
+    const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
+    const TPtrC &musicFlag = aMusicFlag.Left(KIRDbMaxStrLen);
+     
+    
+    TInt songLen = aSongName.Length();
+    TInt artistLen = aArtistName.Length();
+    if(  songLen + artistLen > KMaxSize || aChannelName.Length() > KMaxSize)
+    {
+        IRLOG_DEBUG3( "CIRSongHistoryDb::AddToSongHistoryDb2L - too long song info: %d or channel info: %d", songLen+artistLen, aChannelName.Length() );
+    }
+    
+    TRAP(error,//trap start
+
+        iSongHistoryTable2.InsertL();
+        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
+        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);        
+        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);        
+        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), musicFlag);
+        iSongHistoryTable2.PutL();
+        );
+
+    CleanupStack::PopAndDestroy(columns); 
+    if( error!=KErrNone )
+    {
+        User::LeaveIfError(error);
+    }
+    
+    iSongHistoryTable2.Reset();
+    IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
+
+    return bRetval;  
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::GetAllSongHistoryListL()
+//  gets all the song history entries  into an array
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aHistoryDataArr)
+{
+ 	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL" ); 	 
+
+    if(iSongHistoryTable.CountL() < 1)
+    {
+    	return;
+    }
+
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
+    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
+    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
+    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
+    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
+    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
+    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
+    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
+
+    delete columns;
+    columns = NULL; 	 
+    
+ 	TInt song = 0;
+ 	
+ 	
+    for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() ) 	 
+    {
+        iSongHistoryTable.GetL();
+        
+        RBuf songName;
+        RBuf artistName;
+        RBuf channelName;
+        RBuf channelUrl;
+        TInt channelType;
+        TInt channelId;
+        TInt bitrate;
+        RBuf channelDesc;
+        RBuf imageUrl;
+        RBuf genreName;
+        RBuf countryName;
+        RBuf languageName;
+        RBuf channelMusicStatus;
+        
+        songName.CreateL(iSongHistoryTable.ColDes( songColumn ));
+        songName.CleanupClosePushL();
+        
+        artistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
+        artistName.CleanupClosePushL();
+        
+        channelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
+        channelName.CleanupClosePushL();
+        
+        channelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
+        channelUrl.CleanupClosePushL();
+        
+        channelType=iSongHistoryTable.ColUint8( channelTypeColumn );
+        
+        channelId=iSongHistoryTable.ColUint16( channelIdColumn );
+        
+        bitrate=iSongHistoryTable.ColUint16( bitrateColumn );
+        
+        channelDesc.CreateL(iSongHistoryTable.ColDes( channelDescColumn ));
+        channelDesc.CleanupClosePushL();
+
+        imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
+        imageUrl.CleanupClosePushL();
+
+        genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
+        genreName.CleanupClosePushL();
+
+        countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
+        countryName.CleanupClosePushL();
+
+        languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
+        languageName.CleanupClosePushL();
+
+        channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
+        channelMusicStatus.CleanupClosePushL();
+ 
+        aHistoryDataArr[song]->SetHistoryInfoL(songName, artistName, channelUrl,
+                         channelName,channelType,channelId,bitrate,channelDesc ,
+                         imageUrl, genreName, countryName, languageName, channelMusicStatus);
+        ++song;        
+        CleanupStack::PopAndDestroy(&channelMusicStatus);
+        CleanupStack::PopAndDestroy(&languageName);
+        CleanupStack::PopAndDestroy(&countryName);
+        CleanupStack::PopAndDestroy(&genreName);
+        CleanupStack::PopAndDestroy(&imageUrl);
+        CleanupStack::PopAndDestroy(&channelDesc);
+        CleanupStack::PopAndDestroy(&channelUrl);
+        CleanupStack::PopAndDestroy(&channelName);
+        CleanupStack::PopAndDestroy(&artistName);
+        CleanupStack::PopAndDestroy(&songName);
+    }        
+ 
+
+	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::GetAllSongHistoryList2L()
+//  gets all the song history entries  into an array
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryList2L" );    
+
+    if(iSongHistoryTable2.CountL() < 1)
+    {
+        return;
+    }
+
+    CDbColSet* columns = iSongHistoryTable2.ColSetL();
+    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
+    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );     
+    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
+
+    delete columns;
+    columns = NULL;
+    
+    TInt song = 0;
+    
+    for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
+    {
+        iSongHistoryTable2.GetL();
+         
+        RBuf songName;
+        RBuf artistInfo, channelName;
+        RBuf musicStatus;
+
+        CleanupClosePushL(songName);
+        CleanupClosePushL(artistInfo);
+        CleanupClosePushL(channelName);
+        CleanupClosePushL(musicStatus);
+
+        songName.CreateL(iSongHistoryTable2.ColDes( songColumn ));
+        artistInfo.CreateL(iSongHistoryTable2.ColDes( artistColumn ));
+        channelName.CreateL(iSongHistoryTable2.ColDes( channelNameColumn ));
+        musicStatus.CreateL(iSongHistoryTable2.ColDes(musicStatusColumn));
+        
+        aSongEntries[song]->SetSongNameL(songName);
+        aSongEntries[song]->SetArtistL(artistInfo);
+        aSongEntries[song]->SetChannelNameL(channelName);
+        aSongEntries[song]->SetChannelMusicStatusL(musicStatus);
+        ++song;         
+        
+        CleanupStack::PopAndDestroy(4);
+    }
+     
+    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
+}
+
+// ---------------------------------------------------------------------------
+// Function : ClearAllSongHistoryFromDb
+// delete all the entries from the database.
+// ---------------------------------------------------------------------------
+//
+TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb(/*RPointerArray<CIRSongHistoryInfo>& aSongHistoryInfoArr*/)
+{
+
+	TInt error = KErrNone;
+
+	IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Entering" );
+	TRAP(error, iSongHistoryTable.FirstL());
+	if(error != KErrNone)
+	{
+		return error;
+	}
+
+    while (iSongHistoryTable.AtRow())
+	{
+		TRAPD(error,
+		iSongHistoryTable.GetL();
+		iSongHistoryTable.DeleteL();
+		iSongHistoryTable.NextL(););
+		if(error)
+		{
+		    Compact();
+		    return error;
+		}
+	}
+	
+    Compact();
+    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
+	return KErrNone;
+
+}
+
+TInt CIRSongHistoryDb::DeleteOneHistory(TInt aIndex)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - Entering" );
+    
+    TInt retValue = 0;
+    TRAPD(error,(retValue = DeleteOneHistoryL(aIndex)));
+    
+    if( KErrNone != error )
+    {
+        return error;
+    }
+    
+    if( KErrNone != retValue)
+    {
+        return retValue;
+    }    
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - exiting" );    
+    return KErrNone;
+}
+
+TInt CIRSongHistoryDb::DeleteOneHistoryL(TInt aIndex)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - Entering" );
+    TInt totalCount = iSongHistoryTable.CountL();     
+    if (aIndex < 0 || aIndex >= totalCount)
+    {
+        return KErrArgument;
+    }
+	
+    iSongHistoryTable.LastL();
+    TInt tempIndex = 0;     
+    while (tempIndex < aIndex)
+    {
+        TRAPD(error,iSongHistoryTable.PreviousL());
+        if (KErrNone != error)
+        {
+            Compact();
+            return error;
+        }
+        tempIndex++;
+    }
+    
+    iSongHistoryTable.GetL();
+    iSongHistoryTable.DeleteL();
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - exiting" );   
+    return KErrNone;    
+}
+
+TInt CIRSongHistoryDb::DeleteOneSongHistory(TInt aIndex)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - Entering" );
+    
+    TInt retValue = 0;
+    TRAPD(error,(retValue = DeleteOneSongHistoryL(aIndex)));
+    
+    if( KErrNone != error )
+    {
+        return error;
+    }
+    
+    if( KErrNone != retValue)
+    {
+        return retValue;
+    }    
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - exiting" );    
+    return KErrNone;
+}
+
+TInt CIRSongHistoryDb::DeleteOneSongHistoryL(TInt aIndex)
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - Entering" );
+    TInt totalCount = iSongHistoryTable2.CountL();     
+    if (aIndex < 0 || aIndex >= totalCount)
+    {
+        return KErrArgument;
+    }
+    
+    iSongHistoryTable2.LastL();
+    TInt tempIndex = 0;     
+    while (tempIndex < aIndex)
+    {
+        TRAPD(error,iSongHistoryTable2.PreviousL());
+        if (KErrNone != error)
+        {
+            Compact();
+            return error;
+        }
+        tempIndex++;
+    }
+    
+    iSongHistoryTable2.GetL();
+    iSongHistoryTable2.DeleteL();
+    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - exiting" );   
+    return KErrNone;    
+}
+
+// ---------------------------------------------------------------------------
+// Function : ClearAllSongHistoryFromDb2
+// delete all the entries from the database.
+// ---------------------------------------------------------------------------
+//
+TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb2()
+{
+
+    TInt error = KErrNone;
+
+    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb2 - Entering" );
+    TRAP(error, iSongHistoryTable2.FirstL());
+    if(error != KErrNone)
+    {
+        return error;
+    }
+
+    while (iSongHistoryTable2.AtRow())
+    {
+        TRAPD(error,
+        iSongHistoryTable2.GetL();
+        iSongHistoryTable2.DeleteL();
+        iSongHistoryTable2.NextL(););
+        if(error)
+        {
+            Compact();
+            return error;
+        }
+
+    }
+    Compact();
+    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
+    return KErrNone;
+
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::ConstructL()
+// Standard 2nd phase construction
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::ConstructL()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL" );
+	User::LeaveIfError(iFsSession.Connect());
+
+	CIRSettings* settings = CIRSettings::OpenL();
+
+	TFileName songHistoryDbFile = settings->PrivatePath();
+	songHistoryDbFile.Append(KSongHistoryDbFile);
+
+	CreateDbCondition(songHistoryDbFile);
+	OpenSongHistoryDbL(songHistoryDbFile);
+
+	settings->Close();
+
+	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL- Exiting." );
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::CloseSongHistoryDb()
+// Closes the database
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::CloseSongHistoryDb()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb" );
+	iSongHistoryTable.Close();
+	iSongHistoryTable2.Close();
+	Close();
+	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb - Exiting." );
+}
+
+
+/**
+* Function : CreateSongHistoryTablesL()
+* creates songhistory table with three columns
+* log data
+* ---------------------------------------------------------------------------
+* SongHistoryTable
+*---------------------------
+*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
+*---------------------------
+*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
+*----------------------------------------------------------------------------
+*/
+void CIRSongHistoryDb::CreateSongHistoryTablesL()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
+    CDbColSet* columns = CDbColSet::NewLC();
+
+    TRAPD( error,
+    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelUrlColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelTypeColumn, EDbColUint8 ) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelIdColumn, EDbColUint16 ) );
+    columns->AddL( TDbCol( KSongHistoryDBBitrateColumn, EDbColUint16 ) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelDescColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBImageUrlColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBGenreNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBCountryNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBLanguageNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
+    );
+	User::LeaveIfError( error );
+
+    User::LeaveIfError( CreateTable( KSongHistoryDBTable, *columns ) );
+
+    CleanupStack::PopAndDestroy( columns );
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
+}
+
+/**
+* Function : CreateSongHistoryTables2L()
+* creates songhistory table with three columns
+* log data
+* ---------------------------------------------------------------------------
+* SongHistoryTable
+*---------------------------
+*| SongName | ArtistName | ChannelName | MusicStatusFlag 
+*---------------------------
+*|EDbColText| EDbColText | EDbColText  | EDbColText 
+*----------------------------------------------------------------------------
+*/
+void CIRSongHistoryDb::CreateSongHistoryTables2L()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
+    CDbColSet* columns = CDbColSet::NewLC();
+
+    TRAPD( error,
+    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
+    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength) );
+    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
+    );
+	User::LeaveIfError( error );
+
+    User::LeaveIfError( CreateTable( KSongHistoryDBTable2, *columns ) );
+
+    CleanupStack::PopAndDestroy( columns );
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
+}
+
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::OpenSongHistoryDbL()
+// opening the data base
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile)
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL" );
+	CloseSongHistoryDb(); //Ensure that the database is closed before trying to open it.
+
+	 
+    TInt error  = KErrNone;
+ 
+	error = Open(iFsSession,aSongHistoryDbFile);
+	if( error!=KErrNone )
+	{
+		//if database is failed to open then
+		//function leaves
+		IRLOG_ERROR2( "CIRSongHistoryDb::OpenSongHistoryDbL - Opening session database failed (%d)", error );
+		User::LeaveIfError(error);
+	}
+	if( IsDamaged() || !InTransaction() )
+	{
+		//if data base is damaged then
+		//it tried to recover
+		//if recovery is not possible function leaves
+		error = Recover();
+		if ( KErrNone == error)
+			{
+			//if recovered data base is compacted
+			error = Compact();
+			}
+	    User::LeaveIfError(error);
+	}
+
+	//open the table
+	error = iSongHistoryTable.Open(*this, KSongHistoryDBTable, iSongHistoryTable.EUpdatable);
+	if( error )
+	{
+		User::LeaveIfError(error);
+	}
+
+	error = iSongHistoryTable2.Open(*this, KSongHistoryDBTable2, iSongHistoryTable2.EUpdatable);
+	if( error )
+	{
+	    iSongHistoryTable.Close();
+		User::LeaveIfError(error);
+	} 
+
+	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL - Exiting." );
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::CreateSongHistoryDb()
+// @database filename
+// ---------------------------------------------------------------------------
+//
+TInt CIRSongHistoryDb::CreateSongHistoryDb(const TFileName& aSongHistoryDbFile )
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb" );
+
+
+	TInt error = Replace(iFsSession,aSongHistoryDbFile);
+	if ( error != KErrNone )
+    {
+	    IRLOG_ERROR2( "CIRSongHistoryDb::CreateSongHistoryDb - Creating history database failed (%d)", error );
+	    return error;
+    }
+
+	TRAPD(err1,CreateSongHistoryTablesL());
+	if(err1)
+	{
+	    return err1;
+	}
+
+	//if error, no handling 
+	TRAPD(err2, CreateSongHistoryTables2L());
+	if( err2 )
+	{
+	    return err2;	  
+	}	
+	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb - Exiting." );
+	return KErrNone;
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::CountSongHistoryDb()
+// count the database entries
+// ---------------------------------------------------------------------------
+//
+
+TInt CIRSongHistoryDb::CountSongHistoryDb()
+{
+	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
+	TInt historyCount = 0;
+	iSongHistoryTable.Reset();
+	TRAPD(error,historyCount= iSongHistoryTable.CountL());
+	if(error)
+	{
+		
+	}
+	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
+ 	return historyCount;
+
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::CountSongHistoryDb2()
+// count the database entries
+// ---------------------------------------------------------------------------
+//
+TInt CIRSongHistoryDb::CountSongHistoryDb2()
+{
+    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
+    TInt historyCount = 0;
+    iSongHistoryTable2.Reset();
+    TRAPD(error,historyCount= iSongHistoryTable2.CountL());
+    if(error)
+    {
+        historyCount = -1;
+    }
+    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
+    return historyCount;
+}
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::GetLastHistoryItemL()
+// Gets the last song history item
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryDb::GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
+				 RBuf& aChannelName, RBuf& aChannelUrl)
+{
+	if( iSongHistoryTable.IsEmptyL() || iSongHistoryTable.LastL() == EFalse)
+	{
+		return;
+	}
+
+	iSongHistoryTable.GetL();
+
+	CDbColSet* columns = iSongHistoryTable.ColSetL();
+	TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+	TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
+	TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
+	TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+
+	delete columns;
+    columns = NULL;
+
+    aSongName.CreateL(iSongHistoryTable.ColDes( songColumn ));
+    aArtistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
+    aChannelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
+    aChannelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
+
+
+    iSongHistoryTable.Reset();
+}
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::GetChannelSongsCountL()
+// Gets the channel's song count.
+// ---------------------------------------------------------------------------
+//
+
+TUint CIRSongHistoryDb::GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl )
+{
+	_LIT( strQuery, "Select SongName from SongHistoryTable where ChannelName='%S' AND ChannelUrl='%S'");
+
+	TBuf<KMaxSize>  bufQuery;
+	bufQuery.Format( strQuery, &aChannelName, &aChannelUrl );
+
+	TDbQuery	querySearchChannel( bufQuery );
+	RDbView		dbView;
+
+	TInt error = dbView.Prepare( *this, querySearchChannel );
+	User::LeaveIfError(error);
+
+	error = dbView.Evaluate();	// 0, evaluation is complete 
+	User::LeaveIfError(error);
+
+	TInt cRows = dbView.CountL();
+
+	dbView.Close();
+
+	return cRows;
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::SyncSongHistoryDb()
+// Synchronises the History DB with removed channel entry in the ISDS
+// ---------------------------------------------------------------------------
+//
+
+void CIRSongHistoryDb::SyncSongHistoryDbL(TInt aChannelId)
+{
+ 	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL" );
+
+
+    if(iSongHistoryTable.CountL() < 1)
+    {
+    	return;
+    }
+
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
+    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
+    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
+    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
+    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
+    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
+    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
+    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
+    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
+
+    delete columns;
+    columns = NULL;
+
+	// Find out the channel to be changed 
+		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
+		{
+			iSongHistoryTable.GetL();
+			// Extracting the values from the database.
+				TInt channelId;
+				RBuf imageUrl, genreName, countryName, languageName;
+                RBuf channelMusicStatus;
+
+                CleanupClosePushL(imageUrl);
+                CleanupClosePushL(genreName);
+                CleanupClosePushL(countryName);
+                CleanupClosePushL(languageName);
+                CleanupClosePushL(channelMusicStatus);
+
+				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
+                imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
+                genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
+                countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
+                languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
+				channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
+
+                
+                if(aChannelId == channelId)
+	                {
+	                iSongHistoryTable.UpdateL();
+		            iSongHistoryTable.SetColL(channelTypeColumn, 0);
+		            iSongHistoryTable.SetColL(channelIdColumn, 0);
+                    iSongHistoryTable.SetColL(imageUrlColumn, KNo);
+                    iSongHistoryTable.SetColL(genreNameColumn, KNo);
+                    iSongHistoryTable.SetColL(countryNameColumn, KNo);
+                    iSongHistoryTable.SetColL(languageNameColumn, KNo);
+		            iSongHistoryTable.SetColL(musicStatusColumn, KNo);
+		            iSongHistoryTable.PutL();
+	                }
+                CleanupStack::PopAndDestroy(5);
+		}
+	iSongHistoryTable.Reset();
+		
+	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL - Exiting." );
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::GetIdPresentInDb()
+// Gets whether that particular channel id is present in Db or not.
+// ---------------------------------------------------------------------------
+//
+
+TBool CIRSongHistoryDb::GetIdPresentInDbL(TInt aChannelId)
+{
+ 	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL" );
+
+ 	TBool value = EFalse;
+
+    if(iSongHistoryTable.CountL() < 1)
+    {
+    	return value;
+    }
+
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
+
+    delete columns;
+    columns = NULL;
+
+	// Find out the channel to be changed 
+		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
+		{
+			iSongHistoryTable.GetL();
+				TInt channelId;
+				
+				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
+                if(aChannelId == channelId)
+	                {
+	                value = ETrue;
+	                }
+
+		}
+		
+	iSongHistoryTable.Reset();
+	
+	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL - Exiting." );
+	return value ;
+}
+
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryDb::UpdateSongHistoryDb()
+// Updates the song history DB when there is a channel change in the isds.
+// ---------------------------------------------------------------------------
+//
+
+TInt CIRSongHistoryDb::UpdateSongHistoryDbL(	TInt aChannelId,
+											const TDesC& aChannelUrl,
+                                            const TDesC& aImageUrl,
+                                            const TDesC& aGenreName,
+                                            const TDesC& aCountryName,
+                                            const TDesC& aLanguageName,
+											const TDesC& aMusicFlag)
+{
+ 	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL" );
+
+ 	TBool channelChanged = EFalse ;
+ 	TInt compFlagUrl ;
+ 	TInt compFlagImageUrl, compFlagGenreName, compFlagCountryName, compFlagLanguageName;
+ 	TInt compFlagMusic ;
+ 	TInt compUrlChange ;
+
+    if(iSongHistoryTable.CountL() < 1)
+    {
+    	return EFalse;
+    }
+
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
+    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
+    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
+    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
+    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
+
+    delete columns;
+    columns = NULL;
+
+	// Find out the channel to be changed 
+	
+		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
+		{
+			iSongHistoryTable.GetL();
+			// Extracting the values from the database.
+				RBuf channelUrl;
+				RBuf imageUrl, genreName, countryName, languageName;
+				TInt channelId;
+                RBuf channelMusicStatus;
+
+				CleanupClosePushL(channelUrl);
+				CleanupClosePushL(imageUrl);
+				CleanupClosePushL(genreName);
+				CleanupClosePushL(countryName);
+				CleanupClosePushL(languageName);
+				CleanupClosePushL(channelMusicStatus);
+
+				channelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
+				imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
+                genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
+                countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
+                languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
+
+				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
+                
+                channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
+                
+                if(aChannelId == channelId)
+	                {
+	                compFlagUrl =   (channelUrl).Compare(aChannelUrl);
+                    compFlagImageUrl = (imageUrl).Compare(aImageUrl);
+                    compFlagGenreName = (genreName).Compare(aGenreName);
+                    compFlagCountryName = (countryName).Compare(aCountryName);
+                    compFlagLanguageName = (languageName).Compare(aLanguageName);
+	                compFlagMusic = (channelMusicStatus).Compare(aMusicFlag);
+		            compUrlChange = (aChannelUrl).Compare(KNo);
+		                
+	                if(compFlagUrl && compUrlChange)
+		                {
+		                iSongHistoryTable.UpdateL();
+		                iSongHistoryTable.SetColL(channelUrlColumn, aChannelUrl);
+		                iSongHistoryTable.PutL();
+		                channelChanged = ETrue ;
+		                }
+                    if(compFlagImageUrl)
+                        {
+                        iSongHistoryTable.UpdateL();
+                        iSongHistoryTable.SetColL(imageUrlColumn, aImageUrl);
+                        iSongHistoryTable.PutL();
+                        channelChanged = ETrue ;
+                        }
+                    if(compFlagGenreName)
+                        {
+                        iSongHistoryTable.UpdateL();
+                        iSongHistoryTable.SetColL(genreNameColumn, aGenreName);
+                        iSongHistoryTable.PutL();
+                        channelChanged = ETrue ;
+                        }
+                    if(compFlagCountryName)
+                        {
+                        iSongHistoryTable.UpdateL();
+                        iSongHistoryTable.SetColL(countryNameColumn, aCountryName);
+                        iSongHistoryTable.PutL();
+                        channelChanged = ETrue ;
+                        }
+                    if(compFlagLanguageName)
+                        {
+                        iSongHistoryTable.UpdateL();
+                        iSongHistoryTable.SetColL(languageNameColumn, aLanguageName);
+                        iSongHistoryTable.PutL();
+                        channelChanged = ETrue ;
+                        }
+	                if(compFlagMusic)
+		                {
+		                iSongHistoryTable.UpdateL();
+		                iSongHistoryTable.SetColL(musicStatusColumn, aMusicFlag);
+		                iSongHistoryTable.PutL();
+		                channelChanged = ETrue ;
+		                }
+	                
+	                }
+                CleanupStack::PopAndDestroy(6);
+		}
+	iSongHistoryTable.Reset();
+	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL - Exiting." );
+	return channelChanged;
+}
+
+void CIRSongHistoryDb::SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
+                                              TInt aChannelType, TInt aPresetId)
+{
+    CDbColSet* columns = iSongHistoryTable.ColSetL();
+    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
+    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
+    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
+    TInt channelIdColumn = columns->ColNo(KSongHistoryDBChannelIdColumn);
+    
+    delete columns;
+    columns = NULL;
+    
+    for (iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL())
+    {
+        iSongHistoryTable.GetL();
+        TPtrC channelName = iSongHistoryTable.ColDes(channelNameColumn);
+        TPtrC channelUrl  = iSongHistoryTable.ColDes(channelUrlColumn);
+        TInt channelType = iSongHistoryTable.ColInt(channelTypeColumn);
+        TInt channelId = iSongHistoryTable.ColInt(channelIdColumn);
+        
+        if (0 == aChannelType)
+        {
+            //user-defined channel
+            if (aChannelName == channelName && aChannelUrl == channelUrl)
+            {
+                iSongHistoryTable.DeleteL();  
+                break;
+            }
+        }
+        else
+        {
+            //channel from ISDS server
+            if (aChannelName == channelName && aPresetId == channelId)
+            {
+                iSongHistoryTable.DeleteL();  
+                break;
+            }
+        }
+    }
+    
+    iSongHistoryTable.Reset();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irsonghistory/src/irsonghistoryinfo.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,367 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  class for the songhistory information.
+*
+*/
+
+#include "irsonghistoryinfo.h"
+
+// ---------------------------------------------------------------------------
+// Function : NewL
+// Function returns an instance of CIRSongHistoryInfo
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewL()
+		{
+			CIRSongHistoryInfo* self =  CIRSongHistoryInfo :: NewLC();
+			CleanupStack::Pop( self );
+			return self;
+		}
+
+// ---------------------------------------------------------------------------
+//CIRLastPlayedSongs::NewLC()
+//Static function
+//standard two phased constructor
+// ---------------------------------------------------------------------------
+//
+	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC()
+		{
+			CIRSongHistoryInfo* self = new( ELeave ) CIRSongHistoryInfo();
+			CleanupStack::PushL( self );
+			return self;
+		}
+// ---------------------------------------------------------------------------
+//CIRSongHistoryInfo::~CIRSongHistoryInfo()
+//standard C++ destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CIRSongHistoryInfo::~CIRSongHistoryInfo()
+	{
+		iArtistInfo.Close();
+
+		iSongInfo.Close();
+
+		iStreamUrlInfo.Close();
+
+		iChannelInfo.Close();
+		
+		iChannelDescription.Close();
+
+        iImageUrl.Close();
+        iGenreName.Close();
+        iCountryName.Close();
+        iLanguageName.Close();
+		
+		iMusicStoreStatus.Close();
+		
+	}
+
+// ---------------------------------------------------------------------------
+//CIRSongHistoryInfo::~CIRSongHistoryInfo()
+//standard C++ constructor
+// ---------------------------------------------------------------------------
+//
+CIRSongHistoryInfo::CIRSongHistoryInfo()
+	 {
+		
+	 }
+
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetArtistL
+// Sets Artist name
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetArtistL(RBuf& aArtist)
+ {
+ 	iArtistInfo.CreateL(aArtist);
+ }
+ 
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetSongNameL
+// Sets Song name
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetSongNameL (RBuf& aSongName)
+ {
+ 	iSongInfo.CreateL(aSongName);
+ }
+ 
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetStreamUrlL
+// Sets Stream url name
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetStreamUrlL(RBuf& aStreamUrl)
+ {
+ 	iStreamUrlInfo.CreateL(aStreamUrl);
+ }
+ 
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetChannelNameL
+// Sets Channel name
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetChannelNameL(RBuf& aChannelName)
+ {
+ 	iChannelInfo.CreateL(aChannelName);
+ }
+ // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetChannelDescL
+// Sets Channel name
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetChannelDescL(RBuf& aChannelDesc)
+ {
+ 	iChannelDescription.CreateL(aChannelDesc);
+ }
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetImageUrlL
+// Sets Channel image Url
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetImageUrlL(RBuf& aImageUrl)
+ {
+    iImageUrl.CreateL(aImageUrl);
+ }
+ 
+ // ---------------------------------------------------------------------------
+ // CIRSongHistoryInfo::SetGenreNameL
+ // Set channel genre name
+ // ---------------------------------------------------------------------------
+ //
+void CIRSongHistoryInfo::SetGenreNameL(const RBuf& aGenreName)
+{
+    iGenreName.CreateL(aGenreName);
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetCountryNameL
+// Set channel country name
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryInfo::SetCountryNameL(const RBuf& aCountryName)
+{
+    iCountryName.CreateL(aCountryName);
+}
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetLanguageNameL
+// Set channel language name
+// ---------------------------------------------------------------------------
+//
+void CIRSongHistoryInfo::SetLanguageNameL(const RBuf& aLanguageName)
+{
+    iLanguageName.CreateL(aLanguageName);
+}
+ // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetChannelMusicStatusL
+// Sets Channel's MusicStoreStatus
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetChannelMusicStatusL(RBuf& aChannelMusicStatus)
+ {
+ 	iMusicStoreStatus.CreateL(aChannelMusicStatus);
+ }
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetChannelType
+// Sets Channel TYpe
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetChannelType(TInt aChannelType)
+ {
+ 	iChannelType=aChannelType;
+ }
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetChannelId
+// Sets Channel Id
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetChannelId(TInt aChannelId)
+ {
+ 	iChannelId=aChannelId;
+ }
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetBitrate
+// Sets bitrate
+// ---------------------------------------------------------------------------
+//
+ void CIRSongHistoryInfo::SetBitrate(TInt aBitrate)
+ {
+    iBitrate=aBitrate;
+ }
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::SetHistoryInfo
+// Sets Song History Information.
+// ---------------------------------------------------------------------------
+//
+
+ EXPORT_C void CIRSongHistoryInfo::SetHistoryInfoL(RBuf& aSongName,
+												  RBuf& aArtist, 
+												  RBuf& aStreamUrl, 
+												  RBuf& aChannelName ,
+												  TInt aChannelType, 
+												  TInt aChannelId,
+												  TInt aBitrate,
+												  RBuf& aChannelDesc,
+                                                  RBuf& aImageUrl,
+                                                  RBuf& aGenreName,
+                                                  RBuf& aCountryName,
+                                                  RBuf& aLanguageName,
+												  RBuf& aMusicStoreStatus
+												   )
+ {
+ 	SetSongNameL(aSongName);
+ 	SetArtistL(aArtist);
+ 	SetStreamUrlL(aStreamUrl);
+ 	SetChannelNameL(aChannelName);
+    SetChannelType(aChannelType);
+    SetChannelId(aChannelId);
+    SetBitrate(aBitrate);
+    SetChannelDescL(aChannelDesc);
+    SetImageUrlL(aImageUrl);
+    SetGenreNameL(aGenreName);
+    SetCountryNameL(aCountryName);
+    SetLanguageNameL(aLanguageName);
+    SetChannelMusicStatusL(aMusicStoreStatus);
+	
+ }
+ 
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetSongInfo
+// Gets the song information
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetSongInfo() const
+ {
+ 	return iSongInfo;
+ }
+ 
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetArtistInfo
+// Gets Artist name
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetArtistInfo() const
+ {
+ 	return iArtistInfo;
+ }
+ 
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetStreamUrl
+// Gets StreamUrl name
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetStreamUrl() const
+ {
+ 	return iStreamUrlInfo;
+ }
+ 
+ // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetChannelName
+// Gets Channel name
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelName() const
+ {
+ 	return iChannelInfo;
+ }
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetChannelDesc
+// Gets Channel name
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelDesc() const 
+ {
+ 	return iChannelDescription;
+ }
+
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetImageUrl
+// Gets Channel image Url
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetImageUrl() const 
+ {
+    return iImageUrl;
+ }
+ // ---------------------------------------------------------------------------
+ // CIRSongHistoryInfo::GetGenreName
+ // Get channel genre name
+ // ---------------------------------------------------------------------------
+ //
+ 
+const RBuf& CIRSongHistoryInfo::GetGenreName() const 
+ {
+    return iGenreName;
+ }
+ 
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetCountryName
+// Get channel country name
+// ---------------------------------------------------------------------------
+//
+const RBuf& CIRSongHistoryInfo::GetCountryName() const 
+ {
+    return iCountryName;
+ }
+ 
+// ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetLanguageName
+// Get channel language name
+// ---------------------------------------------------------------------------
+//
+const RBuf& CIRSongHistoryInfo::GetLanguageName() const 
+ {
+    return iLanguageName;
+ }
+
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetChannelType
+// Gets Channel Type
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C TInt CIRSongHistoryInfo::GetChannelType() const
+ {
+ 	return iChannelType;
+ }
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetChannelId
+// Gets Channel Id
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C TInt CIRSongHistoryInfo::GetChannelId() const
+ {
+ 	return iChannelId;
+ }
+ // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetBitrate
+// Gets bitrate
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CIRSongHistoryInfo::GetBitrate() const
+{
+   return iBitrate;
+}
+  // ---------------------------------------------------------------------------
+// CIRSongHistoryInfo::GetChannelMusicStatus
+// Gets Channel MusicStoreStatus
+// ---------------------------------------------------------------------------
+//
+ EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelMusicStatus() const 
+ {
+ 	return iMusicStoreStatus;
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/bmarm/irxmlparseru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,6 @@
+EXPORTS
+	_ZN20CIRXMLContentHandler4NewLER17MIRParserObserverR16MIRCacheObserver @ 1 NONAME
+	_ZN20CIRXMLContentHandler9ParseXmlLERK7TDesC16S2_RK19CIRHttpResponseData @ 2 NONAME
+	_ZTI20CIRXMLContentHandler @ 3 NONAME ; #<TI>#
+	_ZTV20CIRXMLContentHandler @ 4 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/bwinscw/irxmlparseru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	?NewL@CIRXMLContentHandler@@SAPAV1@AAVMIRParserObserver@@AAVMIRCacheObserver@@@Z @ 1 NONAME ; class CIRXMLContentHandler * CIRXMLContentHandler::NewL(class MIRParserObserver &, class MIRCacheObserver &)
+	?ParseXmlL@CIRXMLContentHandler@@QAEXABVTDesC16@@0ABVCIRHttpResponseData@@@Z @ 2 NONAME ; void CIRXMLContentHandler::ParseXmlL(class TDesC16 const &, class TDesC16 const &, class CIRHttpResponseData const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/group/bld.inf	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+// None
+
+PRJ_MMPFILES
+irxmlparser.mmp
+
+PRJ_TESTMMPFILES
+// None
+
+PRJ_TESTEXPORTS
+// None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/group/irxmlparser.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* 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:
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+
+TARGET                  irxmlparser.dll
+TARGETTYPE              dll
+UID                     0x1000008d 0x2000B49D
+
+CAPABILITY              CAP_GENERAL_DLL
+VENDORID                VID_DEFAULT
+
+PAGED
+
+SOURCEPATH              ../src
+SOURCE                  irxmlcontenthandler.cpp   
+SOURCE                  irxmlelements.cpp
+
+USERINCLUDE             ../inc
+USERINCLUDE             ../../inc
+USERINCLUDE             ../../ircommon/inc
+USERINCLUDE             ../../ircachemgmt/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(xml)
+
+SMPSAFE
+
+LIBRARY             bafl.lib
+LIBRARY             charconv.lib
+LIBRARY             efsrv.lib
+LIBRARY             euser.lib
+LIBRARY             ircachemgmt.lib
+LIBRARY             irdatastructures.lib
+LIBRARY             xmlframework.lib
+
+LIBRARY        flogger.lib
+
+#if defined WINSCW
+DEFFILE                 ../bwinscw/
+#else
+DEFFILE                 ../bmarm/
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/inc/irparserobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef MIRPARSEROBSERVER
+#define MIRPARSEROBSERVER
+
+#include <e32def.h>
+
+class MIRParserObserver
+	{
+public:
+    /**
+    * Function : ParseError
+    * Called on Parser Error
+    */
+    virtual void ParseError( TInt aErrorCode ) = 0;
+    
+    /**
+    * Function : ParsedStructureL
+    * called for parsed result
+    */    
+    virtual void ParsedStructureL(TInt aChoice) = 0;
+   };
+
+#endif //MIRPARSEROBSERVER
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/inc/irxmlcontenthandler.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,288 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRXMLCONTENTHANDLER_H
+#define IRXMLCONTENTHANDLER_H
+
+#include <contenthandler.h>
+
+class CIRAdvertisement;
+class CIRBrowseCatagoryItems;
+class CIRBrowseChannelItems;
+class CIRCacheMgmt;
+class CIRHttpResponseData;
+class CIRIsdsPreset;
+class CIROTAUpdate;
+class MIRCacheObserver;
+class MIRParserObserver;
+
+namespace Xml
+    {
+    class CParser;
+    }
+
+//constant declaration   
+_LIT8(KFile,"text/xml");    
+const TInt KSessionLogResponse = 5;
+
+using namespace Xml;
+
+/**
+* Parse data from xml file
+*
+* @code 
+*
+* classA* ParserObserver;//class classA : public MIRParserObserver
+* classB* CacheObserver;//class classB : public MIRCacheObserver
+* CIRHttpResponseData* ResponseHeader;
+* CIRHttpResponseData* parser = CIRXMLContentHandler::
+* NewL (*ParserObserver,*CacheObserver); 
+* parser->ParseXmlL(FilePath,CachePath,ResponseHeader);
+*
+* @endcode
+*
+*/
+
+class CIRXMLContentHandler : public CBase,
+                        public MContentHandler
+    {
+public:             
+    /**
+    * Gets the Filepath of the XML file
+    * @param aFilePath Contains the filepath of the file
+    * @return ErrorCode if the file cannot be opened
+    */
+  IMPORT_C void ParseXmlL( const TDesC& aFilePath, const TDesC& aCachePath,
+             const CIRHttpResponseData& aResponseHeaders );
+
+    /**
+    * Default Constructor
+    * @param aObserver Contains the reference to the MClass Observer
+    */    
+    IMPORT_C static CIRXMLContentHandler* NewL 
+    ( MIRParserObserver &aObserver, MIRCacheObserver &aCacheObserver );       
+    /**
+    * Destructing the object
+    */  
+    ~CIRXMLContentHandler();
+    /**
+    * This method is a callback to indicate the start of the document
+    * @param aDocParam Specifies the various parameters of the document
+    * @param aErrorCode KErrNone if successfull. 
+    * @return None
+    */         
+    virtual void OnStartDocumentL( const RDocumentParameters &aDocParam,
+       TInt aErrorCode );
+    /**
+    * This method is a callback to indicate the end of the document
+    * @param aErrorCode KErrNone if successfull. 
+    * @return None
+    */                  
+    virtual void OnEndDocumentL( TInt aErrorCode );
+    /**
+    * This method is a callback to indicate an element has been parsed. 
+    * @param aElement is a handle to the element's details. 
+    * @param aAttributes contains the attributes for the element
+    * @param aErrorCode KErrNone if successfull. 
+    */    
+    virtual void OnStartElementL( const RTagInfo &aElement, 
+      const RAttributeArray &aAttributes, TInt aErrorCode );
+    /**
+    * This method is a callback to indicate the end of 
+    * the element has been reached. 
+    * @param aElement is a handle to the element's details. 
+    * @param aErrorCode KErrNone if successfull. 
+    */   
+    virtual void OnEndElementL( const RTagInfo &aElement, TInt aErrorCode );
+    /**
+    * This method is a callback that sends the content of the element.
+    * The data may be sent in chunks
+    * @param aBytes is the raw content data for the element. 
+    * @param aErrorCode KErrNone if successfull. 
+    */  
+    virtual void OnContentL( const TDesC8 &aBytes, TInt aErrorCode );
+    /**
+    * This method is a notification of the beginning of the scope 
+    *of a prefix-URI Namespace mapping.
+    * @param aPrefix is the Namespace prefix being declared 
+    * @param aUri is the Namespace URI the prefix is mapped to
+    * @param aErrorCode KErrNone if successfull. 
+    */  
+    virtual void OnStartPrefixMappingL( const RString &aPrefix, 
+      const RString &aUri, TInt aErrorCode );
+    /**
+    * This method is a notification of the end of the scope 
+    * of a prefix-URI mapping
+    * @param aPrefix is the Namespace prefix that was mapped. 
+    * @param aErrorCode KErrNone if successfull. 
+    */  
+    virtual void OnEndPrefixMappingL( const RString &aPrefix, TInt aErrorCode );
+    /**
+    * This method is a notification of ignorable whitespace in element content. 
+    * @param aBytes are the ignored bytes from the document being parsed.. 
+    * @param aErrorCode KErrNone if successfull. 
+    */  
+    virtual void OnIgnorableWhiteSpaceL( const TDesC8 &aBytes, TInt aErrorCode );
+    /**
+    * This method is a notification of a skipped entity
+    * @param aName is the name of the skipped entity. 
+    * @param aErrorCode KErrNone if successfull. 
+    */ 
+    virtual void OnSkippedEntityL( const RString &aName, TInt aErrorCode );
+    /**
+    * This method is a receive notification of a processing instruction.
+    * @param aTarget is the processing instruction target. 
+    * @param aData is the processing instruction data. 
+    * If empty none was supplied.. 
+    * @param aErrorCode KErrNone if successfull. 
+    */ 
+    virtual void OnProcessingInstructionL( const TDesC8 &aTarget, 
+      const TDesC8 &aData, TInt aErrorCode );
+    /**
+    * This method indicates an error has occurred.
+    * @param aErrorCode contains the errorcode. 
+    */ 
+    virtual void OnError( TInt aErrorCode );
+    /**
+    * This method obtains the interface matching the specified uid. 
+    * @param aUid the uid identifying the required interface 
+    * @return 0 if no interface matching the uid is found. 
+    * Otherwise, the this pointer cast to that interface
+    */ 
+    virtual TAny *GetExtendedInterface( const TInt32 aUid ); 
+    /**
+    * This method maps the errorcode
+    * @param aError conatins the errorcode
+    * @return the type of the error
+    */ 
+    TInt ParseError( TInt aError );
+    /**
+    * This method stringpool handle
+    * @param aError conatins the errorcode
+    * @return the type of the error
+    */ 
+    RStringPool& StringPool ();
+    
+    void ResetValues();
+
+protected:
+    
+    /**
+    * Default Constructor
+    * @param aObserver Contains the reference to the MClass Observer
+    */  
+    CIRXMLContentHandler( MIRParserObserver &aObserver,
+        MIRCacheObserver &aCacheObserver );
+
+    /**
+    * Two-Phase Constructor
+    */
+    void ConstructL();
+    
+   private :
+    
+    // Buffer for the URL
+    HBufC* iBufGetOperation;
+    
+    // Buffer for Size
+    HBufC* iSize;  
+  
+    // Count of the bitrates
+    TBool iIRID;
+
+    TInt iBitrateCounter;   
+    
+    // Indicating for Channels/Preset
+    TInt iFlag;
+    
+    // Indicating for Channels
+    TInt iChannelFlag;
+    
+    // Bool Value to indicate the class
+    TBool iPresets;
+    TBool iCategories;
+    TBool iCat;
+    TBool iChannels;
+    TBool iChan;
+    TBool iAdvertisement;
+    TBool iOTAUpdate;
+    TBool iTimeStamp; //checks the header has a time stamp
+    TInt  iEOD;
+    // Pointer to the PresetData
+    CIRIsdsPreset *iPreset;
+    
+    // Pointer to the CategoryData
+    CIRBrowseCatagoryItems *iCategory;
+    
+    // Pointer to the ChannelData
+    CIRBrowseChannelItems *iChannel;
+    
+    // Pointer to the Advertisement
+    
+    CIRAdvertisement *iAdv;
+    
+    //! An Handle to Stringpool
+      
+    RStringPool    iStringPool;
+    
+    //! Reference to the CallBack Class
+    
+    MIRParserObserver& iParseObserver;
+    
+    CParser* iParser;
+
+    //Caching 
+    CIRCacheMgmt *iCache;
+    
+    MIRCacheObserver &iCacheObserver;
+    
+    TBuf<256> iFileToCache;
+
+    // For Advertisement
+    TBool iAdvts;
+    TBool iAdvertisementTagFlag;
+    HBufC*   iUrlContentForAds;  //to store the content of the tag
+
+
+
+public:
+
+    // Count of the bitrates
+    
+    TBuf<30>      iRID;
+
+    // Array of Pointers to PresetClass
+    
+    CArrayPtrFlat<CIRIsdsPreset>* iPtrPreset;
+    
+    // Array of Pointers to CategoryClass
+    
+    CArrayPtrFlat<CIRBrowseCatagoryItems>* iPtrCategory;
+    
+    // Array of Pointers to BrowseCategoryClass
+    
+    CArrayPtrFlat<CIRBrowseChannelItems>* iPtrChannel;
+    // Pointer to the OTAUpdate
+    
+    CIROTAUpdate *iOTA;
+    
+    
+      
+};
+
+#endif //IRXMLCONTENTHANDLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/inc/irxmlelements.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,126 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRXMLELEMENTS_H
+#define IRXMLELEMENTS_H
+
+#include <e32cmn.h>
+#include <stringtablesupport.h>
+
+//Literals to instantiate the class
+ _STLIT8( KGetOp, "getOperation" );
+ _LIT8( KCatGenre, "genres" );
+ _STLIT8( KCatLang, "languages" );
+ _STLIT8( KCatCountry, "countries" );
+ _STLIT8( KChannels, "channels" );
+ _STLIT8( KPresets, "presets" );
+ _STLIT8( KIRID, "irid" );
+ _STLIT8( KTimeStamp, "timestamp" ); 
+ _STLIT8( KIRVersion, "iRAPPVersion" ); 
+ _STLIT8( KAdv,"advertisement" );
+ _STLIT8( KPreset, "preset" );
+ _STLIT8( KServers, "servers" ); 
+ _STLIT8( KGenre, "genre" );
+ _STLIT8( KLanguage, "language" );
+ _STLIT8( KCountry, "country" );
+ _STLIT8( KChannel, "channel" );
+ _STLIT8( KAd, "ad" );
+ _STLIT8( KAdvertisements, "advertisements" );
+ _STLIT8( KBanner, "banner" );
+ _STLIT8( KClickthroughUrl, "clickthrough-url" );
+
+
+//! Enum for the attributes
+enum TIRXMLElement
+    {
+     EGetOperation,
+     
+    // List of Genres/Language/Contry
+    EName,
+    EID,
+    ESize,
+    
+    //! Channels 
+    EShortDesC,
+    EBitrateValue,
+    
+    // Preset
+    ESdsID,
+    ELangCode,
+    ELang,
+    ECountryCode,
+    ECountry,
+    ELastUpdated,
+    EDesc,
+    EImgURL,
+    EAdvImgURL,
+    EAdvInUse,
+    EGenreID,
+    EURL,
+    EMusicStoreEnabled,
+    EBitrate,
+    
+    // Log Usage
+    EIRID,
+    
+    // OTA Update
+    EVersion,
+    EUpdateInterval,
+    EUpdateMethod,
+    
+    //Advertisement
+    EInUse,
+    EUsageVisibleTimes,
+    EVisibleTime,
+    /**
+    Unknown Element
+    */    
+    EElementIDUnknown,
+     }; 
+ 
+class RStringPool;
+
+/**
+* This class handles the XML string pool
+* not accessible outside the dll
+*/
+class TIRXMLElementFormat
+    {
+public : 
+    /**
+    * Creates an initialised string pool with no pre-loaded string tables.
+    * @param aStringPool Stringpool
+    */
+    static void OpenStringPoolL( RStringPool& aStringPool );
+    /**
+    * The ElementId of the element from the StringPool
+    * @param aElement the element name to be searched in the pool
+    * @param aStringPool stringpool reference
+    * @return the enum for the element
+    */
+    static TIRXMLElement GetElementIdL( const TDesC8& aElement, 
+                                const RStringPool& aStringPool );
+    /**
+    * Closes the StringPool
+    * @param aStringPool Stringpool
+    */                                     
+    static void CloseStringPoolL( RStringPool& aStringPool );                                    
+    }; 
+ 
+ 
+#endif //IRXMLELEMENTS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/src/irxmlcontenthandler.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,1037 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <f32file.h>
+#include <parser.h>
+#include <utf.h>
+
+#include "iradvertisement.h"
+#include "irbrowsecatagoryitems.h"
+#include "irbrowsechannelitems.h"
+#include "ircachemgmt.h"
+#include "irdebug.h"
+#include "irisdspreset.h"
+#include "irparserobserver.h"
+#include "irotaupdate.h"
+#include "irxmlcontenthandler.h"
+#include "irxmlelements.h"
+
+const TInt KLargeArraySize = 256;
+const TUint8 KAttributeBufferSize = 100;
+const TUint8 KBitRateCounterValue0 = 0;
+const TUint8 KBitRateCounterValue1 = 1;
+const TUint8 KBitRateCounterValue2 = 2;
+const TUint8 KCategoriesItemSelect = 0;
+const TUint8 KChannelItemSelect = 1;
+const TUint8 KPresetItemSelect = 2;
+const TUint8 KOTAUpdateItemSelect = 3;
+const TUint8 KIRIDSelect = 4;
+const TUint8 KTen = 10; 
+
+// ---------------------------------------------------------------------------
+// Gets the Filepath of the XML file
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CIRXMLContentHandler::ParseXmlL( const TDesC& aFilePath,
+                           const TDesC& aCachePath,
+                         const CIRHttpResponseData& aResponseHeaders )
+    { 
+    IRLOG_DEBUG( "CIRXMLContentHandler::ParseXmlL" );
+    iFileToCache.Zero( );
+    iFileToCache.Copy( aCachePath );     
+     
+    RFs fs;
+    CleanupClosePushL( fs );
+    User::LeaveIfError( fs.Connect( ) );           
+    Xml::ParseL( *iParser, fs, aFilePath );
+    CleanupStack::PopAndDestroy( &fs );
+
+   
+    //! Error in the Document
+    if ( iEOD != KErrNone )
+        {
+        ResetValues( );
+        iParseObserver.ParseError( iEOD ); 
+        }
+    else
+        {    
+        if ( iCategories )
+            {
+            TRAP_IGNORE( iCache->CacheCategoryItemsL( *iPtrCategory, 
+            iFileToCache , aResponseHeaders ) )
+            ResetValues();    
+            iParseObserver.ParsedStructureL( KCategoriesItemSelect );
+            }
+    
+		if ( iChan )            
+			{        
+			if ( iFileToCache.Length( ) != 0 )
+				{
+				TRAP_IGNORE( iCache->CacheChannelItemsL( *iPtrChannel, 
+				iFileToCache ,aResponseHeaders ) )
+				}
+			ResetValues( );
+			iParseObserver.ParsedStructureL( KChannelItemSelect );
+		    }
+		
+		if ( iPresets )
+			 {
+		     if ( 0 < iPtrPreset->Count( ) )
+                 {
+                 TRAP_IGNORE( iCache->CachePresetItemL( *iPtrPreset,
+                   iFileToCache, aResponseHeaders ) )
+                 ResetValues( );
+                 iParseObserver.ParsedStructureL( KPresetItemSelect );     
+                 }        
+             }  
+        if ( iOTAUpdate )
+            {
+            TRAP_IGNORE( iCache->CacheOtaInfoL( *iOTA,
+                iFileToCache, aResponseHeaders ) )
+            ResetValues( );
+            iParseObserver.ParsedStructureL( KOTAUpdateItemSelect );
+            } 
+        if ( iIRID )
+            {
+            ResetValues( );
+            iParseObserver.ParsedStructureL( KIRIDSelect );
+            }      
+        if ( iTimeStamp )
+            {
+            //session log response is obtained
+            ResetValues( );
+            iParseObserver.ParsedStructureL( KSessionLogResponse );   
+            }
+        }
+    IRLOG_DEBUG( "CIRXMLContentHandler::ParseXmlL - Exiting." );    
+  }  
+
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler ::NewL
+// Constructor
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C CIRXMLContentHandler* CIRXMLContentHandler ::NewL( MIRParserObserver 
+    &aObserver, MIRCacheObserver &aCacheObserver )
+    {    
+    IRLOG_DEBUG( "CIRXMLContentHandler::NewL" );
+    CIRXMLContentHandler* self = new (ELeave) CIRXMLContentHandler( aObserver,
+      aCacheObserver );    
+    CleanupStack::PushL( self );
+    self->ConstructL( );
+    CleanupStack::Pop( self );
+    IRLOG_DEBUG( "CIRXMLContentHandler::NewL - Exiting." );
+    return( self ); 
+    }
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler ::CIRXMLContentHandler
+// Default Constructor
+// ---------------------------------------------------------------------------
+//
+CIRXMLContentHandler ::CIRXMLContentHandler( MIRParserObserver &aObserver,
+    MIRCacheObserver &aCacheObserver ) : iParseObserver( aObserver ),
+    iCacheObserver ( aCacheObserver )
+    {
+    IRLOG_DEBUG( "CIRXMLContentHandler::CIRXMLContentHandler" );
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler ::ConstructL
+// Two-Phase Constructor
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler ::ConstructL()
+    {
+    IRLOG_DEBUG( "CIRXMLContentHandler::ConstructL" );
+    ResetValues( );    
+    TIRXMLElementFormat::OpenStringPoolL( iStringPool );
+    
+    iPtrCategory = new (ELeave) CArrayPtrFlat<CIRBrowseCatagoryItems>(
+      KLargeArraySize );
+    iPtrChannel = new (ELeave) CArrayPtrFlat<CIRBrowseChannelItems>(
+      KLargeArraySize );
+    iPtrPreset = new (ELeave) CArrayPtrFlat<CIRIsdsPreset>( KLargeArraySize );
+    
+    iParser = CParser::NewL( KFile, *this );
+    iCache = CIRCacheMgmt::OpenL( iCacheObserver );
+
+    iBufGetOperation = HBufC::NewL( 0 );
+    iSize = HBufC::NewL( 0 );
+    IRLOG_DEBUG( "CIRXMLContentHandler::ConstructL - Exiting." );
+    }
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::~CIRXMLContentHandler()
+// Destructing the object
+// ---------------------------------------------------------------------------
+//
+CIRXMLContentHandler::~CIRXMLContentHandler()
+    {    
+    IRLOG_DEBUG( "CIRXMLContentHandler::~CIRXMLContentHandler." );           
+    TRAP_IGNORE( TIRXMLElementFormat::CloseStringPoolL( iStringPool ) )
+    delete iParser;
+    if ( iUrlContentForAds )
+        {
+        delete iUrlContentForAds;
+        iUrlContentForAds = NULL;
+        }
+    if ( iPtrPreset )
+        {
+        iPtrPreset->ResetAndDestroy();    
+        }
+        delete iPtrPreset;
+    if ( iPtrCategory )
+        {
+        iPtrCategory->ResetAndDestroy();
+        }       
+        delete iPtrCategory;
+    if ( iPtrChannel )
+        {
+        iPtrChannel->ResetAndDestroy();
+        }
+    delete iPtrChannel;
+    
+    delete iOTA;
+    delete iAdv;
+    
+    if ( iCache )
+         {
+         iCache->Close();
+         }
+    
+    delete iPreset;
+    delete iCategory;
+    delete iChannel;
+    delete iBufGetOperation;
+    delete iSize;
+      
+    IRLOG_DEBUG( "CIRXMLContentHandler::~CIRXMLContentHandler - Exiting." );       
+    }
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::ResetValues
+// Reseting the Values
+// ---------------------------------------------------------------------------
+//
+
+void CIRXMLContentHandler::ResetValues()
+    {
+    IRLOG_DEBUG( "CIRXMLContentHandler::ResetValues" );
+    iFlag = 1;
+    iPresets = EFalse;
+    iCategories = EFalse;
+    iCat = EFalse;
+    iChannels = EFalse;
+    iChan = EFalse;
+    iAdvertisement = EFalse;
+    iOTAUpdate = EFalse;
+    iIRID = EFalse;
+    iTimeStamp = EFalse;
+    // if XML Parsing error occurred, maybe iChannel wasn't deleted 
+    if ( iChannel )
+        {
+        delete iChannel;
+        }
+    iChannel = NULL;
+    // if XML Parsing error occurred, maybe iCategory wasn't deleted     
+    if ( iCategory )
+        {
+        delete iCategory;
+        } 
+    iCategory = NULL;
+    iAdvts = EFalse;
+    iAdvertisementTagFlag = EFalse;   
+    IRLOG_DEBUG( "CIRXMLContentHandler::ResetValues - Exiting." );
+  }    
+ 
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler:: OnStartDocumentL
+// This method is a callback to indicate the start of the document
+// ---------------------------------------------------------------------------
+//   
+void CIRXMLContentHandler:: OnStartDocumentL( const Xml::RDocumentParameters& 
+  /*aDocParam*/ , TInt /*aErrorCode*/ )
+    {                
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartDocumentL" );
+    iEOD = KErrNone;
+    }
+    
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::OnEndDocumentL
+// This method is a callback to indicate the end of the document
+// ---------------------------------------------------------------------------
+// 
+void CIRXMLContentHandler::OnEndDocumentL( TInt /*aErrorCode*/ )
+    {
+    //No Implementation
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndDocumentL" );
+    return;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::OnStartElementL
+// This method is a callback to indicate an element has been parsed. 
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler::OnStartElementL( const Xml::RTagInfo &aElement, 
+      const Xml::RAttributeArray &aAttributes, TInt /*aErrorCode*/ )
+    {     
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartElementL" );     
+    //Compare the element name to identify the type - //TO DO String Pool        
+    TInt genre = ( aElement.LocalName().DesC() ).Compare( KGenre );
+    TInt lang = ( aElement.LocalName().DesC() ).Compare( KLanguage );
+    TInt country = ( aElement.LocalName().DesC() ).Compare( KCountry );
+    TInt channel = ( aElement.LocalName().DesC() ).Compare( KChannel );
+    TInt preset = ( aElement.LocalName().DesC() ).Compare( KPreset );
+    TInt advertisements = ( aElement.LocalName().DesC() ).Compare( KAdvertisements );
+    TInt ad = ( aElement.LocalName().DesC() ).Compare( KAd );
+
+    TInt genres = ( aElement.LocalName().DesC() ).Compare( KCatGenre );
+    TInt countries = ( aElement.LocalName().DesC() ).Compare( KCatCountry );
+    TInt languages = ( aElement.LocalName().DesC() ).Compare( KCatLang );
+    TInt channels = ( aElement.LocalName().DesC() ).Compare( KChannels );
+    TInt presets = ( aElement.LocalName().DesC() ).Compare( KPresets );
+
+    TInt IRID = ( aElement.LocalName().DesC() ).Compare( KIRID );
+    TInt timestamp = ( aElement.LocalName().DesC() ).Compare( KTimeStamp );
+    TInt irappversion = ( aElement.LocalName().DesC() ).Compare( KIRVersion );
+    TInt adv = ( aElement.LocalName().DesC() ).Compare( KAdv );
+    TInt banner = ( aElement.LocalName().DesC() ).Compare( KBanner );
+
+   
+    if ( iUrlContentForAds )
+        {
+        delete( iUrlContentForAds );
+        iUrlContentForAds = NULL;
+        }
+
+    TInt bufSize( KTen );
+    iUrlContentForAds = HBufC::NewL( bufSize );//this is because, the OnContentL method gives chunck by chunck
+
+    if ( ad == 0 )
+         {   
+         //We want to take the first Ad only so if an Ad has already been created
+         //iChannel and iCategory will not be NULL hence the new Ad should not be added
+         if ( !iChannel && !iCategory )
+             {
+             iChannel = CIRBrowseChannelItems::NewL();  
+             iCategory = CIRBrowseCatagoryItems::NewL();  
+             
+             }
+         }
+    if ( advertisements == 0 )
+        { 
+        iAdvertisementTagFlag = ETrue;   
+        }
+    if ( iAdvertisementTagFlag && banner == 0 )
+        {
+        iAdvts = ETrue;
+        }
+    // Creates the instance of the class Browse by Genre/Language/Country
+    if ( iFlag )
+        {
+        if ( genre == 0 || lang == 0 || country == 0 )
+        {
+        //If there are ads then destroy the list and put the ads
+        //as ads will the first in the xml
+        if ( ( iAdvts )  && ( iCategory ) )
+            { 
+            iPtrCategory->ResetAndDestroy();
+            iPtrCategory->AppendL( iCategory );
+            iCategory = NULL;
+            delete iChannel; 
+            iChannel = NULL;
+            iAdvts = EFalse;
+            }
+            iCategory = CIRBrowseCatagoryItems::NewL();
+            iCat = ETrue;                
+            }
+        }
+    if ( iFlag )
+        {
+        // In case of browse by genres, country and lanaguages
+         if ( genres == 0 || countries == 0 || languages == 0 )
+            { 
+            if ( iAdvts == EFalse )
+                {
+                iPtrCategory->ResetAndDestroy();
+                }
+            if ( genres == 0 )
+                {
+                iFileToCache.Zero();
+                iFileToCache.Copy( KCatGenre );
+                }
+            if ( countries == 0 )                        
+                {
+                iFileToCache.Zero();
+                iFileToCache.Copy( KCatCountry );
+                }
+            if ( languages == 0 )                        
+                {      
+                iFileToCache.Zero();
+                iFileToCache.Copy( KCatLang );
+                }
+
+            iCategories = ETrue;                           
+            }
+        }
+    // Creates the instance of the class Channel
+    if ( channel == 0 )
+        {
+        //If there are ads then destroy the list and put the ads
+        //as ads will the first in the xml
+        if ( ( iAdvts )   && ( iChannel ) ) 
+            {
+            iPtrChannel->AppendL( iChannel );
+            iChannel = NULL;
+            delete iCategory; 
+            iCategory = NULL;
+            iAdvts = EFalse;
+            }
+        iChannel = CIRBrowseChannelItems::NewL();    
+        iChannels = ETrue;
+        iBitrateCounter = 0;
+        }
+    if ( channels == 0 )
+        { 
+        iPtrChannel->ResetAndDestroy();   
+        iChan = ETrue;
+        iChannelFlag = 0;    
+        }
+    // Creates the instance of the class for Preset Data
+    if ( preset == 0 )
+        {    
+         iPreset = CIRIsdsPreset::NewL();    
+         iPresets = ETrue;           
+        }
+    if ( presets == 0 )
+        {     
+        iPtrPreset->ResetAndDestroy();  
+        iFlag = 0;
+        }
+    if ( IRID == 0 )
+        {
+        iIRID = ETrue;    
+        }
+    if ( timestamp == 0 )
+        {
+        //time stamp is obtained when session log is obtained in isds 
+        iTimeStamp = ETrue;
+        }
+    if ( irappversion == 0 )
+        {
+        iOTA = CIROTAUpdate::NewL();
+        iOTAUpdate = ETrue;
+        }
+    if ( adv == 0 )
+        {
+        iAdv = CIRAdvertisement::NewL();
+        iAdvertisement = ETrue;
+        }
+    TBuf<KAttributeBufferSize> BufParam1;
+    TBuf<KAttributeBufferSize> BufParam2; 
+    
+    // Parses the attributes and the value of the element
+    TInt nAttributes = aAttributes.Count();
+    for ( TInt indexofattribute = 0; indexofattribute < nAttributes; 
+                          ++indexofattribute )
+        {
+        const RAttribute& attribute = aAttributes[indexofattribute];
+        const RTagInfo& nameInfo = attribute.Attribute();
+         
+        //!Gets the elementId from the Pool for the specified attributename
+        TIRXMLElement ATTelementId = TIRXMLElementFormat::GetElementIdL(
+                    ( nameInfo.LocalName().DesC() ),iStringPool ); 
+         
+        HBufC* converted = CnvUtfConverter::
+            ConvertToUnicodeFromUtf8L( attribute.Value().DesC() );
+        CleanupStack::PushL( converted );
+        
+        switch( ATTelementId ) 
+            {
+            case EGetOperation: 
+                {
+                delete iBufGetOperation;
+                iBufGetOperation = NULL;
+                iBufGetOperation = converted->Des().AllocL();
+                }
+                break;
+                               
+            case EName:
+                {
+                //if name is parsed
+                if ( iCat )
+                    {                                                                    
+                    //if category
+                    iCategory->SetGetOperation( *iBufGetOperation );                                          
+                    BufParam1.Copy( *converted );                
+                    }
+                if ( iChannels )
+                    {
+                     //if channel
+                    iChannel->SetGetOperationL( *iBufGetOperation );
+                    iChannel->SetSize( *iSize );
+                    BufParam1.Copy( *converted );
+                    } 
+                if ( iPresets )
+                    {
+                    if ( ( aElement.LocalName().DesC()) == KPreset )
+                      {
+                      //for preset
+                      iPreset->SetNameL( *converted );
+                      }                                
+                    BufParam1.Copy( *converted );
+                    }                        
+                }
+                break;    
+                                     
+            case EID:
+                {
+                //getting id
+                if ( iCat )
+                    {
+                    //for category
+                    iCategory->SetTextL( BufParam1, *converted );    
+                    }
+                   
+                if ( iChannels )
+                    {
+                    //for channel
+                    BufParam2.Copy( *converted );          
+                    }     
+                if ( iPresets )
+                    {
+                      //for preset
+                    iPreset->SetGenreInfoL( *converted, BufParam1 );
+                    }  
+                if( iIRID)
+                    {
+                      //ir id
+                    iRID.Copy( *converted );
+                    }
+                }
+                break;
+                             
+            case ESize: 
+                {
+                delete iSize;
+                iSize = NULL;
+                iSize = converted->Des().AllocL();
+                if( iCat )
+                    {
+                    iCategory->SetSize( *iSize );
+                    }                       
+                }
+                break;
+                         
+            case EShortDesC:
+                {
+                //getting short description
+                if( iChannels )              
+                    {
+                    iChannel->SetTextL( BufParam1,BufParam2,*converted );
+                    }
+                if( iPresets )
+                     {
+                     iPreset->SetShortDescL( *converted );
+                     }             
+                }
+                break;
+                          
+            case EBitrateValue:
+                {
+                //parsing bit rate
+                if( iChannels )
+                    {
+                        if( iBitrateCounter == KBitRateCounterValue0 )
+                            {
+                             iChannel->SetBitrate( *converted );
+                             BufParam1.Copy( *converted );
+                            }
+                                            
+                        if( iBitrateCounter == KBitRateCounterValue1 )
+                            {
+                             iChannel->SetBitrate( BufParam1,*converted );     
+                             BufParam2.Copy( *converted );
+                            }
+                                           
+                        if( iBitrateCounter == KBitRateCounterValue2 )
+                            {
+                            iChannel->SetBitrate( BufParam1,BufParam2,*converted );
+                            }
+                                           
+                        iBitrateCounter++;
+                    }
+                }                       
+                break;
+                         
+            case ESdsID:
+                {                   
+                if( iPresets )
+                    {
+                    iPreset->SetId( *converted );
+                    }                                         
+                }
+                break;
+                           
+            case ELangCode:
+                {
+                //language code
+                if( iPresets )
+                    {
+                    iPreset->SetLangCodeL( *converted );
+                    }                
+                }
+                break;
+                           
+            case ELang:
+                {                       
+                //language
+                if( iPresets )
+                    {
+                    iPreset->SetLangL( *converted );    
+                    }
+                }
+                break;
+                           
+            case ECountryCode:
+                {
+                //country code
+                if( iPresets )
+                    {
+                    iPreset->SetCountryCodeL( *converted );    
+                    }
+                }
+                break;
+                    
+            case ECountry:
+                {
+                //country
+                if( iPresets )
+                    {
+                    iPreset->SetCountryNameL( *converted );    
+                    }
+                }
+                break;
+                           
+            case ELastUpdated:
+                {
+                //last modified time
+                if( iPresets )
+                    {
+                    iPreset->SetLastModifiedTimeL( *converted );    
+                    }
+                }
+                break;
+                           
+            case EDesc:
+                {
+                //description
+                if( iPresets )
+                    {
+                    iPreset->SetDescriptionL( *converted );
+                    }
+                }
+                break;
+                           
+            case EImgURL:
+                {
+                //image url
+                if( iChannels )                  
+                    {
+                    iChannel->SetImageUrlL( *converted );
+                    }
+                if( iPresets )
+                    {
+                    iPreset->SetImgUrlL( *converted );    
+                    }
+                }
+                break;
+                           
+            case EAdvImgURL:
+                {
+                //advertisement url
+                if( iPresets )
+                    {
+                    iPreset->SetAdvertisementUrlL( *converted );    
+                    }
+                }
+                break;
+                            
+            case EAdvInUse:
+                {
+                 //advertisement in use
+                 if( iPresets )
+                     {
+                     iPreset->SetAdvertisementInUseL( *converted );    
+                     }
+                 }
+                 break;
+                           
+            case EGenreID:
+                {
+                //genre id
+                if( iPresets )
+                    {
+                    iPreset->SetGenreInfoL( BufParam1,*converted );    
+                    }
+                }
+                break;
+                          
+            case EURL:
+                {
+                //url
+                if( iPresets )
+                   {
+                    BufParam2.Copy( *converted );    
+                    }
+                if( iAdvertisement )
+                    {
+                    iAdv->SetURL( *converted );
+                    } 
+                }
+                break;
+                        
+            case EMusicStoreEnabled:
+                {                   
+                if( iPresets )
+                    {
+                    iPreset->SetMusicStoreStatusL( *converted );
+                    }                                         
+                }
+                break;     
+                        
+            case EBitrate:
+                {
+                //set url
+                if( iPresets )
+                    {
+                    iPreset->SetUrlL( BufParam1,BufParam2,*converted );
+                    }
+                }
+                break;
+                           
+            case EIRID:
+                {
+                //irid      
+                }
+                break;
+                           
+            case EVersion:
+                {
+                //for ota update
+                if( iOTAUpdate )
+                   {
+                    iOTA->SetVersion( *converted );
+                    } 
+                }
+                break;
+                           
+            case EUpdateInterval:
+                {
+                //update interval
+                if( iOTAUpdate )
+                    {
+                    iOTA->SetUpdateInterval( *converted );    
+                    }
+                }
+                break;
+                           
+            case EUpdateMethod:
+                {
+                //update method
+                if( iOTAUpdate )
+                    {
+                    iOTA->SetUpdateMethod( *converted );    
+                    }
+                }
+                break;
+                           
+            case EInUse:
+                 {
+                 //advertisement in use
+                 if( iAdvertisement )
+                     {
+                     iAdv->SetAdvInUse( *converted );
+                     }
+                 }
+                 break;
+                           
+            case EUsageVisibleTimes:
+                {
+                if( iAdvertisement )
+                    {
+                    iAdv->SetUsage( *converted );
+                    }
+                }
+                break;
+                           
+            case EVisibleTime:
+                {
+                //advertisement visible time
+                if( iAdvertisement )
+                    {
+                    iAdv->SetVisibleTime( *converted );
+                    }
+                }
+                break;
+                           
+            case EElementIDUnknown:
+                {
+                //unknown
+                }
+                break;
+                          
+            default:
+                {
+                break;
+                } 
+            }//End of Switch
+        CleanupStack::PopAndDestroy( converted );
+        } //End of for                    
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartElementL - Exiting." );                         
+    }
+ 
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::OnEndElementL
+// This method is a callback to indicate the end of the element has been reached. 
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler::OnEndElementL( const RTagInfo &aElement, TInt /*aErrorCode*/ )
+    {    
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndElementL" );        
+    if( ( aElement.LocalName( ).DesC( ) ) == KPreset )
+        {
+        if ( iPreset->GetUrlCount() > 0 )
+            {
+            // The ownership is transferred to the array.
+            iPtrPreset->AppendL( iPreset ); 
+            }
+        else
+            {
+            // If there is not a single URL, we don't let it in.
+            iEOD = KErrCorrupt;
+            delete iPreset;
+            }
+        // Ownership transferred. Remove the pointer.
+        iPreset = NULL; 
+        }
+    if( ( aElement.LocalName( ).DesC( ) ) == KBanner )
+        {
+        //get the content for the tag "banner"
+        //assign it to "iBanner" of CIRBrowseChannelItems
+        if( iUrlContentForAds )
+            {
+            iChannel->SetBannerUrl( *iUrlContentForAds );         
+            iCategory->SetBannerUrl( *iUrlContentForAds );          
+            }
+        }
+    if( ( aElement.LocalName(  ).DesC(  ) ) == KClickthroughUrl )
+        {
+        //get the content for the tag "clickthrough-url"
+        //assign it to "iClickThroughUrl" of CIRBrowseChannelItems 
+        if( iUrlContentForAds )
+            {
+            iChannel->SetClickThroughUrl( *iUrlContentForAds );         
+            iCategory->SetClickThroughUrl( *iUrlContentForAds );
+            }
+        }
+      
+    if( iUrlContentForAds )
+        {
+        delete iUrlContentForAds;
+        iUrlContentForAds = NULL;
+         
+        }
+    if( iFlag )
+        {
+        if( ( aElement.LocalName( ).DesC( ) ) == KGenre ||
+          ( aElement.LocalName( ).DesC( ) ) == KLanguage || 
+          ( aElement.LocalName( ).DesC( ) ) == KCountry )
+            {         
+            iPtrCategory->AppendL( iCategory );
+            iCategory = NULL;
+            iCat = EFalse;
+            }
+        }
+    
+    if( ( aElement.LocalName( ).DesC( ) ) == KChannel )
+        {
+        iPtrChannel->AppendL( iChannel );
+        iChannel = NULL;
+        iChannels = EFalse;         
+        } 
+    //appends the created channel(ad) to the array
+    /*
+    if((aElement.LocalName().DesC()) == KAd)
+        {
+    iPtrChannel->AppendL(iChannel);
+        iChannel = NULL;
+
+        } */
+   
+    if( ( aElement.LocalName( ).DesC( ) ) == KServers )
+    {
+        if ( iPreset )
+        {
+            iPreset->SetUrlCount( );
+        }
+        }               
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndElementL - Exiting." );                   
+    }
+ 
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler ::OnContentL
+// This method is a callback that sends the content of the element.The data 
+// may be sent in chunks
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler ::OnContentL( const TDesC8 &aBytes, TInt 
+    aErrorCode )
+    { 
+    IRLOG_DEBUG(  "CIRXMLContentHandler::OnContentL" );
+    
+    if ( KErrNone == aErrorCode )
+        {
+        
+        
+        HBufC* buffertmp = HBufC::NewLC( aBytes.Length( ) + 1 );
+        TPtr buffertmpPtr( buffertmp->Des( ) );
+        buffertmpPtr.Copy( aBytes );
+    
+    
+        TInt tempSize;
+        if( iUrlContentForAds )
+            {
+              tempSize = iUrlContentForAds->Length( ) + aBytes.Length( );
+              iUrlContentForAds = iUrlContentForAds->ReAllocL( tempSize );
+              TPtr bufferPtr( iUrlContentForAds->Des( ) );
+              bufferPtr.Append( buffertmpPtr );
+            }
+        
+        CleanupStack::PopAndDestroy( buffertmp ); // buffertmp
+        } 
+        
+        if ( iOTAUpdate )
+            {
+            HBufC* converted = CnvUtfConverter::ConvertToUnicodeFromUtf8L( aBytes );
+            CleanupStack::PushL( converted );
+            converted->Des( ).TrimAll( );
+            if ( converted->Des( ).Length( ) )
+                {                    
+                iOTA->SetOTAUrl( *converted );
+                }
+            CleanupStack::PopAndDestroy( converted );
+            }
+    
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnContentL - Exiting." );        
+    }
+
+
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler::OnStartPrefixMappingL
+// This method is a notification of the beginning of the scope of a 
+// prefix-URI Namespace mapping.
+// ---------------------------------------------------------------------------
+// 
+void CIRXMLContentHandler::OnStartPrefixMappingL( const RString& /*aPrefix*/, 
+    const RString& /*aUri*/, TInt /*aErrorCode*/ )
+    {
+    //No Implementaion    
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartPrefixMappingL" );      
+    }  
+      
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: OnEndPrefixMappingL
+// This method is a notification of the end of the scope of a prefix-URI mapping
+// ---------------------------------------------------------------------------
+//  
+void CIRXMLContentHandler :: OnEndPrefixMappingL( const RString& /*aPrefix*/, 
+    TInt /*aErrorCode*/)
+    {
+    //No Implementaion    
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndPrefixMappingL" );    
+    }
+     
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: OnIgnorableWhiteSpaceL
+// This method is a notification of ignorable whitespace in element content. 
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler :: OnIgnorableWhiteSpaceL( const TDesC8&  /*aBytes*/, 
+    TInt /*aErrorCode*/ )
+    {
+    //No Implementaion        
+    IRLOG_DEBUG( "CIRXMLContentHandler::OnIgnorableWhiteSpaceL" );        
+    }
+     
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: OnSkippedEntityL
+// This method is a notification of a skipped entity
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler :: OnSkippedEntityL( const RString& /*aName*/, 
+    TInt /*aErrorCode*/ )
+    {
+    //No Implementaion    
+    IRLOG_DEBUG(  "CIRXMLContentHandler::OnSkippedEntityL" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: OnProcessingInstructionL
+// This method is a receive notification of a processing instruction.
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler :: OnProcessingInstructionL( const TDesC8& 
+  /*aTarget*/, const TDesC8& /*aData*/, TInt /*aErrorCode*/ )
+     {
+      //No Implementaion    
+     IRLOG_DEBUG( "CIRXMLContentHandler::OnProcessingInstructionL" );
+     }
+ 
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: OnError
+// This method indicates an error has occurred.
+// ---------------------------------------------------------------------------
+//
+void CIRXMLContentHandler :: OnError( TInt aErrorCode )
+     {
+     iEOD = aErrorCode;         
+     IRLOG_ERROR2( "CIRXMLContentHandler::OnError (%d)", aErrorCode );
+     }
+  
+  
+// ---------------------------------------------------------------------------
+// CIRXMLContentHandler :: GetExtendedInterface
+// This method obtains the interface matching the specified uid. 
+// ---------------------------------------------------------------------------
+//
+TAny* CIRXMLContentHandler :: GetExtendedInterface( const TInt32 /*aUid*/ )
+     {
+      //No Implementation
+      IRLOG_DEBUG( "CIRXMLContentHandler::GetExtendedInterface" );
+      return NULL;
+     }
+ 
+
+
+GLDEF_C TInt E32Dll( ) 
+// DLL entry point
+    {
+    return( KErrNone );
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/src/irxmlelements.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,176 @@
+/*
+* 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:  The implementation for presentation elements.
+*
+*/
+
+
+#include <stringpool.h>
+
+#include "irdebug.h"
+#include "irxmlelements.h"
+
+//Ignores PC Lint Warning 618.
+
+//! Literals for the StringPool
+
+//! Literals for List of genres,languages,countries
+ _STLIT8( KName, "name" );
+ _STLIT8( KID, "id" );
+ _STLIT8( KSize, "size" );
+ 
+//!Literals for the List of Channels
+ _STLIT8( KShortDesC, "shortDesc" );
+
+ _STLIT8( KBitrate, "bitrate" );
+ _STLIT8( KValue, "value" );
+//! Literals for the channel 
+
+_STLIT8( KSdsid, "sdsid" );
+_STLIT8( KLangCode, "langCode" );
+_STLIT8( KLang, "lang" );
+_STLIT8( KCountryCode, "countryCode" );
+_STLIT8( KLastUpdated, "lastUpdated" );
+_STLIT8( KDescription, "description" );
+_STLIT8( KImgURL, "imgUrl" );
+_STLIT8( KAdvUrl, "advertiseImgUrl" );
+_STLIT8( KAdvUse, "advertiseInUse" );
+_STLIT8( KGenreId, "genreid" );
+_STLIT8( KURL, "url" );
+_STLIT8( KMusicStoreEnabled, "musicStoreEnabled" );
+//!Literals for the log Usage
+
+_STLIT8( KIRId, "irid" ); 
+//! Literals for the OTA Update
+
+_STLIT8( KVersion, "version" );
+_STLIT8( KUpdateInterval, "updateInterval" );
+_STLIT8( KUpdateMethod, "updateMethod" );
+
+ //! Literals for Advertisement
+_STLIT8( KInUse, "inUse" );
+_STLIT8( KUsageVisibleTimes, "usageVisibleTimes" );
+_STLIT8( KVisibleTime, "visibleTime" );
+ 
+const TInt KNoOfElementInTable = 27;
+ 
+ //! PoolTable
+ const TAny* const IRXMLPoolContent[] =
+    { 
+  (const TAny*)         &KGetOp,    
+  (const TAny*)         &KName,       
+  (const TAny*)         &KID,    
+  (const TAny*)         &KSize,
+  (const TAny*)         &KShortDesC,
+  (const TAny*)         &KValue,        
+  (const TAny*)         &KSdsid,
+  (const TAny*)         &KLangCode,
+  (const TAny*)         &KLang,
+  (const TAny*)         &KCountryCode,
+  (const TAny*)         &KCountry,
+  (const TAny*)         &KLastUpdated,
+  (const TAny*)         &KDescription,
+  (const TAny*)         &KImgURL,
+  (const TAny*)         &KAdvUrl,    
+  (const TAny*)         &KAdvUse,
+  (const TAny*)         &KGenreId,
+  (const TAny*)         &KURL,    
+  (const TAny*)         &KMusicStoreEnabled,    
+  (const TAny*)         &KBitrate,
+  (const TAny*)         &KIRId,
+  (const TAny*)         &KVersion,
+  (const TAny*)         &KUpdateInterval,
+  (const TAny*)         &KUpdateMethod,
+  (const TAny*)          &KInUse,
+  (const TAny*)         &KUsageVisibleTimes,
+  (const TAny*)          &KVisibleTime
+    };
+    
+//! Pointer to a StringTable
+const static TStringTable IRPoolTable = 
+    {
+    KNoOfElementInTable,      
+    &IRXMLPoolContent[0],
+    EFalse
+    };     
+
+
+// ---------------------------------------------------------------------------
+// Creates an initialised string pool with no pre-loaded string tables.
+// ---------------------------------------------------------------------------
+//
+void TIRXMLElementFormat::OpenStringPoolL( RStringPool&  aStringPool )
+    {
+    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL" );
+    aStringPool.OpenL( IRPoolTable );
+    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL - Exiting." );
+    }
+
+
+// ---------------------------------------------------------------------------
+// TIRXMLElementFormat :: GetElementIdL
+// The ElementId of the element from the StringPool
+// ---------------------------------------------------------------------------
+//
+TIRXMLElement TIRXMLElementFormat::GetElementIdL( const TDesC8& aElement, 
+                                  const RStringPool& aStringPool )
+    {
+    IRLOG_DEBUG( "TIRXMLElementFormat::GetElementIdL" );
+    TBool validElement = EFalse;
+    TInt  tableEntries;
+    TInt  pos(0);
+    tableEntries = IRPoolTable.iCount;
+    while( pos < tableEntries && validElement == EFalse )
+        {
+        RStringF tableEntry;
+        tableEntry = aStringPool.StringF( pos, IRPoolTable );
+        HBufC8* ElementName = HBufC8::NewLC( tableEntry.DesC().Length() );
+        ElementName->Des().Copy( tableEntry.DesC() );
+        TLex8 string( *ElementName );
+        TPtrC8 token = string.NextToken();
+        TInt CompareResult = aElement.Compare( token );
+        if ( CompareResult == 0 )
+            {
+             validElement = ETrue;
+            }
+        if ( validElement == EFalse )
+            {
+             pos++;
+            }
+        tableEntry.Close();
+        CleanupStack::PopAndDestroy( ElementName );        
+        }
+    if ( validElement )
+        {
+        IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (1)." );
+        return static_cast<TIRXMLElement>( pos );
+        }        
+    IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (2)." );
+    return(EElementIDUnknown);
+    } 
+    
+// ---------------------------------------------------------------------------
+// TIRXMLElementFormat::CloseStringPoolL
+// Closes the StringPool
+// ---------------------------------------------------------------------------
+//
+void TIRXMLElementFormat::CloseStringPoolL( RStringPool&  aStringPool )
+    {
+    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL" );
+    aStringPool.Close();
+    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL - Exiting." );
+    return;
+    }    
+   
+
--- a/internetradio2.0/isdsclientinc/irlanguagemapper.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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 IRLANGUAGEMAPPER_H
-#define IRLANGUAGEMAPPER_H
-
-#include <e32cmn.h>
-
-const TInt KIRLanguageCodeLength = 2;
-
-/**
- * A utility class to translate TLanguage into a country code http headers 
- * know something about
- *
- * @ingroup Utils
- */
-NONSHARABLE_CLASS(IRLanguageMapper)
-    {
-public:
-    /**
-     * Translate TLanguage into language code representation 
-     * (such as "en", "fi" etc).
-     * @param aLanguage the language to be translated
-     * @return Language code representation of the given input.
-     */
-    static TBufC8<KIRLanguageCodeLength> MapLanguage(TLanguage aLanguage);
-    };
-
-#endif // IRLANGUAGEMAPPER_H
--- a/internetradio2.0/isdsclientinc/isdsclientdll.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,399 +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 ISDSCLIENTDLL_H
-#define ISDSCLIENTDLL_H
-
-#include <e32base.h>
-
-#include "ircacheobserver.h"
-#include "irdataproviderobserver.h"
-#include "irlanguagemapper.h"
-#include "irparserobserver.h"
-
-class CIRCacheMgmt;
-class CIRDataProvider;
-class CIRHttpRequestData;
-class CIRIsdsPreset;
-class CIRReportGenerator;
-class CIRSettings;
-class CIRXMLContentHandler;
-class MIsdsResponseObserver;
-
-/** 
- * This class is the one which acts as a interface between UI and network
- * component which interacts with the isds server.It provides the data to 
- * be diplayed to the UI either from cache or fetches it from the ISDS 
- * server.
- * 
- *
- * @code
- *	creates the instance of isdsclient 
- * iISDSClient = CIRIsdsClient::NewL(*this , iIRSettings->GetISDSBaseUrlL());
- * iISDSClient->IRIsdsClientIntefaceL(EGenre); //requests for genre data
- * //requests for selected channel
- * iISDSClient->IRIsdsClientIntefaceL(iIndex, CIRIsdsClient::EChannels);
- * //cancels any previous requests
- * iISDSClient->IRISDSCancelRequest();
- * //gets irid
- * iISDSClient->IRGetIRIDL();
- * iISDSClient->GetOtaStatusL(forceUpdate);//gets ota update status
- * iISDSClient->IRISDSSearchL(aIsdsSearchString);
- * iISDSClient->IRISDSPostL(pathtopost);
- * SyncPresetL(iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetId(),
- * iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetLastModifiedTime());
- * iISDSClient->ReleaseResources();
- * @endcode
- *
- */
-NONSHARABLE_CLASS( CIRIsdsClient ): public CBase ,
-	public MIRDataProviderObserver,
-	public MIRParserObserver,
-	public MIRCacheObserver
-	{
-public://public data
-
-/**
- * These Enums correspond to a particular UI event which 
- * requires request to be made to isds.
- */
-	enum TIRIsdsclientInterfaceIDs
-	    {
-	    EGenre,
-	    ELanguages,
-	    ECountries,
-	    Ehotpicks
-	    };
- 
-    
-	enum TIRIsdsClientInterfaces
-	   {
-	   ECatagory,
-       EChannels,
-       EPresets,
-       EOtaInfo
-       };   
-/**
-*type of data recieved from ISDS   
-*/
-	 enum TDataRecieved
-		{
-		ECategoryInfoRecieved,
-		EChannelListRecieved,
-		EPresetDataRecieved,
-		EOtaInfoRecieved,
-		EIridRecieved,
-		ESessionLogRecieved
-		};
-	
-public:
-
-	/**
-	* CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver)
-	* Used by UI to create instance of CIRIsdsClient.
-	*/
-	IMPORT_C static CIRIsdsClient* NewL(MIsdsResponseObserver& aobserver,
-		const TDesC& aISDSBaseUrl);
-
-
-	/**
-	* CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver)
-	* Creates instance of CIRIsdsClient.
-	*/
-	static CIRIsdsClient* NewLC(MIsdsResponseObserver& aobserver,
-		const TDesC& aISDSBaseUrl);
-
-
-	/**
-	* CIRIsdsClient::~CIRIsdsClient()
-	* Destructor
-	*/
-	~CIRIsdsClient();
-
-
-	/**
-	* CIRIsdsClient::ConstructL()	
-	* Symbian two phased constructor
-	*/
-	void ConstructL(const TDesC& aISDSBaseUrl);
-
-
-	/**
-	* CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver)	
-	* Default constructor
-	*/
-	 CIRIsdsClient(MIsdsResponseObserver& aobserver);   
-
-
-	/**
-	* void CIRIsdsClientInteface(TIRIsdsclientInterfaceIDs aISDSClientRequest)
-	* Called by UI to make request to ISDS for catogories
-	* @param :ENUM value depending on catogory which user wants to explore
-	*/
-	IMPORT_C TBool IRIsdsClientIntefaceL(
-		TIRIsdsclientInterfaceIDs aISDSClientRequest);
-
-
-	IMPORT_C TBool IRIsdsIsCategoryCachedL(
-	             TIRIsdsclientInterfaceIDs aISDSClientRequest);
-	/**
-	* void CIRIsdsClientInteface(TUint aSelectedOption,TIRIsdsClientInterfaces aChoice)
-	* This API is used by the UI to make request for isds listed channels
-	* @param : aSelectedOption-returns the index of the option selected by the user
-	* @param : aChoice-ENUM value specifies what data is expected preset or channel data
-	*/
-	 IMPORT_C TBool IRIsdsClientIntefaceL(TUint aSelectedOption,
-	 	TIRIsdsClientInterfaces aChoice,TInt aHistoryBool=EFalse);
-	 
-	 
-	 IMPORT_C TBool IRIsdsIsChannelCachedL(TUint aSelectedOption);
-
-
-
-	/**
-	* void CIRISDSCancelRequest()
-	* This API is used by the UI to cancel a request made.
-	*/	
-
-	IMPORT_C void IRISDSCancelRequest();
-
-	/**
-	* void CIRGetIRID()
-	* This API is used to get IR ID from isds server 
-	* isds if it doesnt have one
-	*/
-	IMPORT_C void IRGetIRIDL();
-	
-	/**
-	* void GetOtaStatusL()
-	* This API is used to get the OTA status from the server
-	* @param TBool,if ETrue the call is from UI and a call back has to be made to ui
-	* TBool contains the source of update (cache/isds)upon return.Used by Ui to load the
-	* loading screen based on this value.
-	*/
-	IMPORT_C void GetOtaStatusL(TBool& aDataFrom);	 
-
-	/**
-	* void CIRISDSSearch(TDesC& aSearchString)
-	* This API is used by the UI to search channels from isds
-	* @param : aSearchString-search string entered by user
-	*/	
-	IMPORT_C void IRISDSSearchL(const TDesC& aSearchString);
-		
-	/**
-	* void IRISDSPostL(TFileName &aFileName)
-	*function used to post the sesson logs
-	*@param sesson log file name
-	*/
-	IMPORT_C void IRISDSPostL(TFileName &aFileName);
-	
-	
-		
-	
-	IMPORT_C CIRDataProvider* GetDataProvider();
-	
-	/*
-	* void IRISDSMultiSearch()
-	* function used to search the stations by multi conditions
-    * @param 
-	*/
-	IMPORT_C void IRISDSMultiSearchL(const TDesC& aGenreID, const TDesC& aCountryID, const TDesC& aLanguageID, const TDesC& aSearchText);
-	
-	
-
-	/**
-	* void RHttpGeneralError(TInt aErrorCode)
-	* It is a call back function called by the data provider 
-	* to return error code in case of some error.
-	*@param error code
-	*/
-	void IRHttpGeneralError(TInt aErrCode);
-
-	/**
-	* void IRHttpDataReceived(TDesC& aXmlPath)
-	* It is a call back function called by the data provider 
-	* once it recieves the XML data
-	*/
-	void IRHttpDataReceived(const TDesC& aXmlPath,const CIRHttpResponseData& aResponseHeaders);
-
-	/**
-	* void IRHttpContentNotChanged()	
-	* this is call back funtion called by Dataprovider in case 
-	* HTTP content isnt changed by ISDS 
-	*/	    
-	void IRHttpResponseCodeReceived( TInt aResponseCode,
-		CIRHttpResponseData& aResponseHeaders );
-
-	/**
-	* void ParseError()
-	* Call back funtion called by XML parser in case of parsing error
-	*/
-	void ParseError( TInt aErrorCode );
-
-	/**
-	* void ParsedStructureL(TInt aChoice)
-	* Call back funtion called by XML parser after parsing is over
-	* @param : aChoice -specifies the type of data recieved from ISDS
-	*/    
-	void ParsedStructureL(TInt aChoice);
-
-	/**
-	* void CacheError()
-	* Called from cachemgmt in case of an error
-	*/   
-    void CacheError();
-    
-	/**
-	* void CacheError()
-	* Called from cachemgmt in case of cache failure
-	*/ 
-    void CacheFailed();
-    
-	/**
-	* void CacheError()
-	* Called from cachemgmt in case cache is invalid
-	*/ 
-    void CacheInvalid();
-    
-	/**
-	* void CacheError()
-	* Called from cachemgmt data retrival is successful
-	*@param aChoice,it gives the data type of the cache
-	*/ 
-    void CachedStructureL(TInt aChoice);
-    
-	/**
-	*void CIRIsdsClient::SyncPresetL()
-	*Used to syncronize presets
-	*@param TInt,TDesC, the preset id and the last modified tag for the preset          
-	*/
-    IMPORT_C TInt SyncPresetL(TInt aPresetId,const TDesC&aIfModifiedSince);
-    
-	/**
-	*void CIRIsdsClient::ConvertToTimeDate()
-	*Used to convert the date-time stamp to Symbian DateTime format
-	*@param TDesC&,TDateTime& the time stamp and the DateTime ref to 
-	*hold the new data
-	*/
-    void ConvertToTimeDate(const TDesC& aTime,TDateTime& aDateTime) const;
-    
-    /**
-    *ReleaseResources()
-    *relese the resources held by isds client
-    */
-	 IMPORT_C void ReleaseResources();
-	 	
-	/**
-	*CIRIsdsClient::GetMultiplePresetsL()
-	*for multiple selected presets to be saved 
-	*@param RArray&,TBool,the array of preset ids to be saved,return value
-	*/
-    IMPORT_C void GetMultiplePresetsL(const RArray<TInt>& aIndexArray,
-    	TBool& aDataFrom);
-        
-    /**
-	*CIRIsdsClient::PurgeOtaInfoL
-	*delete all the data cached wrt OTA
-	*reset the flags
-	*function called when the ota info available earlier is no longer valid
-	*/
-	IMPORT_C void PurgeOtaInfoL();
-	
-
-private:   
-	/**
-	*void IRHttpIssueRequestL(CIRHttpRequestData &);
-	*for making http request to Data Provider with Request object
-	*@param aRequestObject :The request object which has URL and other details
-	*/
-    void IRHttpIssueRequestL(CIRHttpRequestData &aRequestObject);
-	
-	/**
-	* void EncodeUrlL( TDes &aQuery )
-	* Encode the url using EEscapeUrlEncoded mode, This is used in session log
-	* @param url to be encoded
-	*/
-	void EncodeUrlL( TDes& aQuery );
-	
-
-
-	
-private:
-	//Session log
-    TBuf<256> iBrowseUrl;
-    TInt iChannId;	 
-
-	//XML parser instance
-	CIRXMLContentHandler* iXmlReader;
-
-	//ISDS observer reference
-	MIsdsResponseObserver& iIsdsResponseObserver;
-
-	//DataProvider instance
-	CIRDataProvider *iDataProvider;
-	
-	//cache mgmt
-	CIRCacheMgmt *iCache;
-	CIRSettings *iSettings;
-	CArrayPtrFlat<CIRIsdsPreset>* iSendPreset;
-	// used to store the isds base URL
-	HBufC* iISDSBaseUrl;
-	//contains catogory base URL
-	TBuf<256> iCatgoryURL;
-	//contains search base URL
-	TBuf<256>  iSearchURL;	 
-	//contains irid base URL
-	TBuf<256>  iGetIridUrl;
-	TBuf<128>	iGetOtaStatus;
-	TBool iSyncRequest;//1 if the preset data request is a sync request,0 if general request
-	TInt iPresetToBeSynced;//keeps the presetid for which the sync request has been sent
-	TBool iDataFrom;//data from isds =1,isds =0
-	TBool iCatDataFrom;//0 if isds,1 for cache
-	TBool iChannelDataFrom;//0 if isds,1 for cache
-	TBuf <256> iCachePath;
-	TBool iOtaReqFrom;//0 internal 1from UI
-	//session log
-	CIRReportGenerator* iBrowseReport;
-	//conditionalGet
-	TBool iConditonalGet;
-	TTime iLastModifiedTime;
-	TInt  iRequestType;
-	TBool iForceGet;
-	TBool iOnceForTheUsageSession;
-	TBool iPostResponsePending;
-	TBufC8<KIRLanguageCodeLength> iShortLanguageCode;
-	
-	/**
-    * boolean for to track whether the cache request has made or not
-    */
-	TBool   iCacheReqMade;
-	TBool   iIRIDPending;
-	TBool   iReqPending;
-	TBool   iReqFromGetIRIDFunc;
-	TBool   iReqFromSync;
-	
-	/**
-	* to store further pending request objects 
-	*/
-	CIRHttpRequestData* iTempRequestObject;
-	
-};
-
-#endif //ISDSCLIENTDLL_H
-
-
--- a/internetradio2.0/isdsclientinc/misdsresponseobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +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 MISDSRESPONSEOBSERVER
-#define MISDSRESPONSEOBSERVER
-
-#include <e32def.h>
-
-class CIRBrowseCatagoryItems;
-class CIRBrowseChannelItems;
-class CIRIsdsPreset;
-class CIROTAUpdate;
-
-/**
- * MIsdsResponseObserver
- * passes events and responses body data recived from isds server with this interface.
- * An instance of this class must be provided for construction of 
- * CIRIsdsClient.
- */
-class MIsdsResponseObserver
-    {
-public:
-    /**
-	 * MIsdsResponseObserver::IsdsErrorL()
-	 * Used to Indiacte error in retrieving data from Isds
-	 * @param aErrCode- contains error code
-	 */
-    virtual void IsdsErrorL(TInt aErrCode) = 0;
-    
-	/**
-	 * MIsdsResponseObserver::IsdsCatogoryDataReceivedL()
-	 * Called when catogory information is recieved from ISDS
-	 * @param aParsedStructure - contains catogory info
-	 */
-	virtual void IsdsCatogoryDataReceivedL(
-		CArrayPtrFlat<CIRBrowseCatagoryItems> & aParsedStructure) = 0;
-    
-	/**
-	 * MIsdsResponseObserver::IsdsChannelDataReceivedL()
-	 * Called when channel information is recieved from ISDS
-	 * @param aParsedStructure - contains Channel info
-	 */
-	virtual void IsdsChannelDataReceivedL(
-		CArrayPtrFlat<CIRBrowseChannelItems> & aParsedStructure) = 0;
-    
-	/**
-	 * MIsdsResponseObserver::IsdsPresetDataReceivedL()
-	 * Called when preset information is recieved from ISDS
-	 * @param aParsedStructure - contains Preset info
-	 */
-	virtual void IsdsPresetDataReceivedL(
-		CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure) = 0;
-    
-	/**
-	 * MIsdsResponseObserver::IsdsIRIDRecieved()
-	 * Called to provide IRID
-	 * @param aIRID  - contains IRID recived from Isds
-	 */
-	virtual void IsdsIRIDRecieved(const TDesC& aIRID)=0;
-
-	/**
-	 * MIsdsResponseObserver::IsdsOtaInfoRecieved()
-	 * called back when OTA info is recieved and Ui needs to be intimated
-	 * @param CIROTAUpdate&,the ota information 
-	 */
-	virtual void IsdsOtaInfoRecieved( CIROTAUpdate &aOtaData)=0;
-
-	/**
-	 * MIsdsResponseObserver::IsdsPresetRemovedL()
-	 * called back when the preset that is synced was removed from isds
-	 * @param TInt,the preset id
-	 */
-	virtual void IsdsPresetRemovedL(TInt aId)=0;
-
-	/**
-	 * MIsdsResponseObserver::IsdsPresetChangedL()
-	 * called back when the preset that is synced has been changed in the isds
-	 * @param CIRIsdsPreset&,the new preset data
-	 */
-	virtual void IsdsPresetChangedL(CIRIsdsPreset& aPreset)=0;
-	
-	/**
-	 * MIsdsResponseObserver::IsdsPresetNoChangeL()
-	 * called back when the preset that is synced has not been changed
-	 */
-	 virtual void IsdsPresetNoChangeL()=0;
-	 
-	};
-
-#endif // MISDSRESPONSEOBSERVER
--- a/internetradio2.0/isdsclientsrc/irisdsclient.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1715 +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 <escapeutils.h>
-#include <tinternetdate.h>
-#include <utf.h>
-
-#include "irbrowsecatagoryitems.h"
-#include "irbrowsechannelitems.h"
-#include "ircachemgmt.h"
-#include "irdataprovider.h"
-#include "irdataproviderconstants.h"
-#include "irdebug.h"
-#include "irhttprequestdata.h"
-#include "irotaupdate.h"
-#include "irsessionlogger.h"
-#include "irsettings.h"
-#include "irxmlcontenthandler.h"
-#include "isdsclientdll.h"
-#include "misdsresponseobserver.h"
-
-#include "irisdspreset.h"
-
-const TInt KChannelidMaxLength = 25;
-const TInt KTwo = 2;
-/*const TInt KDays = 7;
-const TInt KHour = 24;
-const TInt KMinute = 60;
-const TInt KSecond = 60;*/
-const TInt KUrlPassMaxLength = 124;
-const TInt KChidMaxLength = 6;
-const TInt KCopyOfTimeMaxLength = 32;
-const TInt KMaxLength = 256;
-const TInt KFour = 4;
-
-_LIT(KBrowseUrl,"/do/directory/browse?type=");
-_LIT(KChannelnSearchUrl,"/do/directory/browse?type=channels&searchText=");
-
-_LIT(KGetIRIDUrl,"/do/service/getIrid");
-_LIT(KGenres,"genres");
-_LIT(KLanguages,"languages");
-_LIT(KCountries,"countries");
-_LIT(KHotpicks,"hotpicks");
-_LIT(KOtaUpdateUrl,"/do/service/otaUpdate?irid=");
-_LIT(KLogUsageUrl,"/do/service/logUsage");
-_LIT(KSearchUrl,"&start=1&size=50");
-_LIT(KMultiSearchUrl, "/do/directory/browse?type=channels&genreID=%S&countryID=%S&languageID=%S&searchText=");
-
-
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver)
-// Used by UI to create instance of CIRIsdsClient.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRIsdsClient* CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver,
-	const TDesC& aISDSBaseUrl)
-    {
-	IRLOG_DEBUG( "CIRIsdsClient::NewL - Entering" );
-	CIRIsdsClient* self = CIRIsdsClient::NewLC(aobserver,aISDSBaseUrl);
-	
-	CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRIsdsClient::NewL - Exiting." );
-	return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver)
-// Creates instance of CIRIsdsClient.
-// ---------------------------------------------------------------------------
-//
-CIRIsdsClient* CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver,
-									const TDesC& aISDSBaseUrl)
-    {
-    IRLOG_DEBUG( "CIRIsdsClient::NewLC - Entering" );
-    CIRIsdsClient* self = new ( ELeave ) CIRIsdsClient(aobserver);
-    CleanupStack::PushL( self );
-    self->ConstructL(aISDSBaseUrl);
-    IRLOG_DEBUG( "CIRIsdsClient::NewLC - Exiting." );
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::ConstructL()	
-// Symbian two phased constructor
-// ---------------------------------------------------------------------------
-//	
-void CIRIsdsClient::ConstructL(const TDesC& aISDSBaseUrl)
-	{
-	//!	Construsting the DataproviderDLL instance
-	IRLOG_DEBUG( "IRIsdsClient::ConstructL - Entering" );
-	iSettings=CIRSettings::OpenL();	
-	iISDSBaseUrl=aISDSBaseUrl.AllocL();
-//Base URL required to browse through the category
-	iCatgoryURL.Zero();
-	iCatgoryURL.Copy(*iISDSBaseUrl);
-	iCatgoryURL.Append(KBrowseUrl);
-	//Base URL required to search isds 
-	iSearchURL.Zero();
-	iSearchURL.Copy(*iISDSBaseUrl);
-	iSearchURL.Append(KChannelnSearchUrl);	
-	//Base URL required to get IRID
-	iGetIridUrl.Zero();
-	iGetIridUrl.Copy(*iISDSBaseUrl);
-	iGetIridUrl.Append(KGetIRIDUrl);
-	//creates DataProvider
-	iDataProvider=CIRDataProvider::NewL(*this);
-	//creates XML Parser
-	iXmlReader=CIRXMLContentHandler::NewL(*this,*this);
-	//creates Cache manager
-	iCache=CIRCacheMgmt::OpenL(*this);
-	iCache->AddObserverL(this);
-	//Session Log
-    iBrowseReport = CIRReportGenerator::OpenL();
-        // Retrive the current language and set it as an Accept Language
-	TLanguage currentLanguage = User::Language();
-	iShortLanguageCode = IRLanguageMapper::MapLanguage(currentLanguage);
-
-	IRLOG_DEBUG( "IRIsdsClient::ConstructL - Exiting." );
-
-    }
-	
-
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver)	
-// Default constructor
-// ---------------------------------------------------------------------------
-//	
-CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver):
-	iIsdsResponseObserver(aobserver)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::CIRIsdsClient" );
-	//No implementation
-	}	
-	
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::~CIRIsdsClient()
-// Destructor
-// ---------------------------------------------------------------------------
-//	
-CIRIsdsClient::~CIRIsdsClient()
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::~CIRIsdsClient - Entering" );
-	delete iDataProvider;
-	delete 	iXmlReader;
-	if(iSendPreset)
-		{
-		iSendPreset->ResetAndDestroy();
-		}
-	delete iSendPreset;
-
-    if (iCache)
-        {
-        iCache->RemoveObserver(this);
-        iCache->Close();
-        }
-
-	if(iSettings)
-		{
-		iSettings->Close();
-		}
-	delete iISDSBaseUrl;
-	if(iBrowseReport)
-        {
-		iBrowseReport->Close();
-		}
-	if(iTempRequestObject)
-		{
-		delete iTempRequestObject;
-		iTempRequestObject = NULL;			
-		}
-
-	IRLOG_DEBUG( "CIRIsdsClient::~CIRIsdsClient - Exiting." );
-	}
-		
-
-EXPORT_C TBool CIRIsdsClient::IRIsdsIsCategoryCachedL(
-             TIRIsdsclientInterfaceIDs aISDSClientRequest)
-{ 
-    iForceGet=EFalse;  
-    TInt res = 0;
-    iCacheReqMade = EFalse;
-    switch(aISDSClientRequest)
-        {
-            //When genre data is requested by user
-        case EGenre:
-            {
-            //set the request type for subsiquent Use           
-             
-            iCachePath.Zero();
-            iCachePath.Copy(KGenres);            
-            iCache->CheckCacheL(0,KGenres,iForceGet,res);       
-            }
-          
-        break;
-        //When Language data is requested by user                       
-        case ELanguages:
-            {
-            
-            iCachePath.Zero();
-            iCachePath.Copy(KLanguages);            
-            iCache->CheckCacheL(0,KLanguages,iForceGet,res);          
-          
-            }
-        break;
-        //When Country data is requested by user                                                    
-        case  ECountries:
-            {
-         
-            iCachePath.Zero();
-            iCachePath.Copy(KCountries);          
-            iCache->CheckCacheL(0,KCountries,iForceGet,res);          
-            }
-        break;
-                    
-            //When hotpics data is requested by user                                                        
-        case  Ehotpicks:
-            {
-            //set the request type for subsiquent Use            
-            iCachePath.Zero();
-            iCachePath.Copy(KHotpicks);
-            iCache->CheckCacheL(1,KHotpicks,iForceGet,res);
-            
-            }
-        break;   
-		default:
-		break;    
-    }
-    
-    if (res == CIRCacheMgmt::ECacheUseable)
-    {
-        return ETrue;
-    }
-     
-    
-    return EFalse; 
-}
-// ---------------------------------------------------------------------------
-// void CIRIsdsClientInteface(TIRIsdsclientInterfaceIDs aISDSClientRequest)
-// Called by UI to make request to ISDS for catogories
-// @param :ENUM value depending on catogory which user wants to explore
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C TBool CIRIsdsClient::IRIsdsClientIntefaceL(TIRIsdsclientInterfaceIDs 
-	aISDSClientRequest)
-	{  
-	//cancels any pending request
-	IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Entering" );
-	CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData;
-	CleanupStack::PushL(requestData);
-	requestData->iAcceptLanguage.Copy( iShortLanguageCode );
-	//Sets the Htpp method to GET
-	requestData->iMethod = EIRHttpGET;
-	//check for valid cache
-	iForceGet=EFalse;  
-	 
-	TInt res=0;
-	  
-	switch(aISDSClientRequest)
-		{
-            //When genre data is requested by user
-		case EGenre:
-			{
-			//set the request type for subsiquent Use
-			iRequestType=0;
-			iDataFrom=EFalse;
-			iCachePath.Zero();
-			iCachePath.Copy(KGenres);
-			iCacheReqMade = ETrue;
-			iCache->CheckCacheL(0,KGenres,iForceGet,res);
-			if(res==0)//if cache is not available
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KGenres);
-				iConditonalGet=EFalse;
-				//issues request for Genre data
-				IRHttpIssueRequestL(*requestData);
-				iBrowseUrl.Zero();		
-				iBrowseUrl.Copy(requestData->iUri);
-				iBrowseReport->BrowseUrl(iBrowseUrl,0);    
-				iDataFrom=ETrue;				
-				}
-			if(res ==-1)//i cache is stale
-				{
-				iConditonalGet=ETrue;
-				requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-				requestData->isIfModifiedSet = ETrue;
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KGenres);
-				IRHttpIssueRequestL(*requestData);
-				iBrowseUrl.Zero();		
-		        iBrowseUrl.Copy(requestData->iUri);
-		        iBrowseReport->BrowseUrl(iBrowseUrl,0);    
-				iDataFrom=ETrue;	
-				}
-			if (res == 1)
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KGenres);
-				iBrowseUrl.Zero();		
-		        iBrowseUrl.Copy(requestData->iUri);
-		        iBrowseReport->BrowseUrl(iBrowseUrl,0);    						
-				}
-			}
-		break;
-        //When Language data is requested by user			 			
-		case ELanguages:
-			{
-	        //set the request type for subsiquent Use
-	        iRequestType=0;
-			iDataFrom=EFalse;
-			
-			iCachePath.Zero();
-			iCachePath.Copy(KLanguages);
-    		iCacheReqMade = ETrue;
-    		iCache->CheckCacheL(0,KLanguages,iForceGet,res);
-
-			if(res==0)//if cache is not available
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KLanguages);
-				//Isuues request for language data
-				IRHttpIssueRequestL(*requestData);
-				iConditonalGet=EFalse;	
-				iBrowseUrl.Zero();
-				iBrowseUrl.Copy(requestData->iUri);	
-				iBrowseReport->BrowseUrl(iBrowseUrl,0);
-				iDataFrom=ETrue;					
-				}			
-			if(res ==-1)//i cache is stale
-				{
-				iConditonalGet=ETrue;
-				requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-				requestData->isIfModifiedSet=ETrue;
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KLanguages);
-				//Isuues request for language data if cache isnt valid
-				IRHttpIssueRequestL(*requestData);	
-				iBrowseUrl.Zero();
-				iBrowseUrl.Copy(requestData->iUri);	
-				iBrowseReport->BrowseUrl(iBrowseUrl,0);
-				iDataFrom=ETrue;					
-				}
-			if (res == 1)
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KLanguages);
-				iBrowseUrl.Zero();		
-		        iBrowseUrl.Copy(requestData->iUri);
-		        iBrowseReport->BrowseUrl(iBrowseUrl,0);    						
-				}			
-			}
-		break;
-        //When Country data is requested by user			 						      			
-    	case  ECountries:
-			{
-			//set the request type for subsiquent Use
-			iRequestType=0;
-			iDataFrom=EFalse;
-			
-			iCachePath.Zero();
-			iCachePath.Copy(KCountries);
-			iCacheReqMade = ETrue;
-			iCache->CheckCacheL(0,KCountries,iForceGet,res);
-			if(res==0)//if cache is not available
-                {
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KCountries);	
-				//Isuues request for country data			
-				IRHttpIssueRequestL(*requestData);	
-				iConditonalGet=EFalse;
-				iBrowseUrl.Zero();
-				iBrowseUrl.Copy(requestData->iUri);
-				iBrowseReport->BrowseUrl(iBrowseUrl,0);
-				iDataFrom=ETrue;					
-				}
-			if(res ==-1)//i cache is stale
-				{
-				iConditonalGet=ETrue;
-			    requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-				requestData->isIfModifiedSet = ETrue;
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KCountries);
-				//Isuues request for country data if cache isnt valid
-				IRHttpIssueRequestL(*requestData);
-				iBrowseUrl.Zero();		
-			    iBrowseUrl.Copy(requestData->iUri);
-				iBrowseReport->BrowseUrl(iBrowseUrl,0);
-				iDataFrom=ETrue;					
-				}
-			if (res == 1)
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KCountries);
-				iBrowseUrl.Zero();		
-		        iBrowseUrl.Copy(requestData->iUri);
-		        iBrowseReport->BrowseUrl(iBrowseUrl,0);    						
-				}
-			 
-			}
-		break;
-    				
-    		//When hotpics data is requested by user			 						      				
-    	case  Ehotpicks:
-			{
-			//set the request type for subsiquent Use
-			iRequestType=1;
-			iCacheReqMade = ETrue;
-			iCache->CheckCacheL(1,KHotpicks,iForceGet,res);
-			iCachePath.Zero();
-			iCachePath.Copy(KHotpicks);
-			iDataFrom=EFalse;
-
-			if(res==0)//if cache is not available
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KHotpicks);
-				//Isuues request for hotpics data
-				IRHttpIssueRequestL(*requestData);
-				iConditonalGet=EFalse;
-				iBrowseUrl.Zero();
-			    iBrowseUrl.Copy(requestData->iUri);
-			        iBrowseReport->BrowseUrl(iBrowseUrl,0);     
-				iDataFrom=ETrue;					
-				}	
-			if(res ==-1)//i cache is stale
-			 	{
-				 iConditonalGet=ETrue;
-				 requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-				 requestData->isIfModifiedSet=ETrue;
-				 requestData->iUri.Copy(iCatgoryURL);
-				 requestData->iUri.Append(KHotpicks);
-				 //Isuues request for hotpics data if cache isnt valid
-				 IRHttpIssueRequestL(*requestData);
-				 iBrowseUrl.Zero();		
-		         iBrowseUrl.Copy(requestData->iUri);
-				 iBrowseReport->BrowseUrl(iBrowseUrl,0);     
-				 iDataFrom=ETrue;					
-				 }	
-			if (res == 1)
-				{
-				requestData->iUri.Copy(iCatgoryURL);
-				requestData->iUri.Append(KHotpicks);
-				iBrowseUrl.Zero();		
-		        iBrowseUrl.Copy(requestData->iUri);
-		        iBrowseReport->BrowseUrl(iBrowseUrl,0);    						
-				}
-			}
-		break;
-       	
-	    }
-	CleanupStack::PopAndDestroy(requestData); 
-	IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Exiting." );
-	return iDataFrom;		
-	}//end of function	
-	
-	
-EXPORT_C CIRDataProvider* CIRIsdsClient::GetDataProvider()
-{
-	IRLOG_DEBUG( "CIRIsdsClient::GetDataProvider" );
-	return iDataProvider;
-}
-
-	
-	
-	
-
-// ---------------------------------------------------------------------------
-// void IRHttpContentNotChanged()	
-// this is call back funtion called by Dataprovider in case 
-// HTTP content isnt changed by ISDS 
-// ---------------------------------------------------------------------------
-//	
-void CIRIsdsClient::IRHttpResponseCodeReceived( TInt aResponseCode,
-	CIRHttpResponseData& aResponseHeaders )
-	{
-	IRLOG_INFO2( "CIRIsdsClient::IRHttpResponseCodeReceived (%d)", aResponseCode );
-	TInt res = KErrNotFound;
-	switch (aResponseCode)
-		{
-		case KNotFound://404
-			{
-			//make channel user defined.
-			if(iSyncRequest)
-				{
-				iSyncRequest = EFalse;
-				//make the preset user-defined
-				TRAP_IGNORE(iIsdsResponseObserver.IsdsPresetRemovedL(
-													iPresetToBeSynced))	
-				}
-			
-			/*if(iOtaReqFrom)
-				{
-				TRAP_IGNORE(PurgeOtaInfoL())
-				}*/
-			
-			}
-			break;
-		case KNotModified://304
-			{
-			if(iConditonalGet)
-				{
-				//update the trust period 
-				//no problem if it leaves
-				TRAP_IGNORE(iCache->UpdateTrustPeriodL(iRequestType,iCachePath,
-				aResponseHeaders))
-				//do a forced get because the data is notmodifed in isds and 
-				//trustable
-				iForceGet=ETrue;
-				iCacheReqMade = ETrue;
-				TRAP_IGNORE(iCache->CheckCacheL(iRequestType,iCachePath,
-					iForceGet,res))
-				}
-			/*if(iOtaReqFrom)
-				{
-				TRAP_IGNORE(PurgeOtaInfoL())
-				}*/
-			}
-			break;
-		 default:
-		 	{
-		 	
-		 	}
-			break;
-		}
-	IRLOG_DEBUG( "CIRIsdsClient::IRHttpResponseCodeReceived - Exiting." );
-	}
-		
-
-// ---------------------------------------------------------------------------
-// void RHttpGeneralError(TInt aErrorCode)
-// It is a call back function called by the data provider 
-// to return error code in case of some error.
-// ---------------------------------------------------------------------------
-//
-void CIRIsdsClient::IRHttpGeneralError(TInt aErrorCode)
-	{
-	IRLOG_ERROR2( "CIRIsdsClient::IRHttpGeneralError (%d)", aErrorCode );
-	IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR",KNullDesC);
-	if(iSyncRequest)
-		{
-		IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR--IF ISYNC",KNullDesC);
-		iSyncRequest=EFalse;
-		if(aErrorCode == KNotModified  ||  aErrorCode == KServiceUnavailable)
-			{
-			TRAP_IGNORE(iIsdsResponseObserver.IsdsPresetNoChangeL())
-			return;			
-			}
-	    IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (1)." );
-		}
-
-	/*if(iOtaReqFrom)
-		{
-		//if internal service request
-		//reset the flag
-		iOtaReqFrom = EFalse
-		IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (2)." )
-		return	
-		}*/
-	if(iConditonalGet)
-		{
-		IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (3). ");
-		iConditonalGet = EFalse;
-		if(aErrorCode==KNotModified)
-			{
-			return;
-			}
-		}
-	if(iPostResponsePending)
-		{
-		IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (4). ");
-		IRRDEBUG2("CIRISDSCLIENT::ISDSGENERALERROR--POSTPENDING",KNullDesC);
-		iPostResponsePending = EFalse;
-		//no action required
-		//session log is backed up before sending;
-		return;
-		}
-	if(iIRIDPending)
-		{
-		IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR--IF IRID",KNullDesC);
-		IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (7). ");			
-		iIRIDPending = EFalse;
-//d		TRAP_IGNORE( IRGetIRIDL() )
-		}
-	IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR--BEFORE TRAPD",KNullDesC);
-	TRAPD(errd,iIsdsResponseObserver.IsdsErrorL(aErrorCode));
-	if(errd)
-		{
-		IRRDEBUG2("CIRISDSCLIENT::IRHTTPGENERALERROR--IF ERRD",KNullDesC);
-        IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (5)." );
-		return;		
-		}
-    IRLOG_DEBUG( "CIRIsdsClient::IRHttpGeneralError - Exiting (6)." );
-	}
-
-	
-// ---------------------------------------------------------------------------
-// void IRHttpDataReceived(TDesC& aXmlPath)
-// It is a call back function called by the data provider 
-// once it recieves the XML data
-// ---------------------------------------------------------------------------
-//
-void CIRIsdsClient::IRHttpDataReceived( const TDesC& aXmlPath, 
-										const CIRHttpResponseData& aResponseHeaders)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Entering" );
-	TBuf<KMaxLength> xmlPath;
-	xmlPath.Copy(aXmlPath);
-	
-	//!Calls XML parser with file path to XML file recieved
-	TRAPD(xmlErr,iXmlReader->ParseXmlL(xmlPath,iCachePath,aResponseHeaders))
-	if(xmlErr!=KErrNone)
-		{
-	    IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Exiting (1)." );
-		return;
-		}
-
-	if(iIRIDPending)
-		{
-		iIRIDPending = EFalse;
-		//if any request is pending by the time IRID response comes
-		if(iReqPending)
-			{
-			//issue the pending request
-			TRAP_IGNORE(IRHttpIssueRequestL(*iTempRequestObject))
-			}
-		}
-
-	IRLOG_DEBUG( "CIRIsdsClient::IRHttpDataReceived - Exiting (2)." );
-	}
-
-EXPORT_C TBool CIRIsdsClient::IRIsdsIsChannelCachedL(TUint aSelectedOption)
-{   
-    TInt res = 0;
-    iCacheReqMade = EFalse;
-    iForceGet=EFalse;
-     
-     //previous data from cache
-    if (iCatDataFrom)
-    {
-        if (aSelectedOption >= iCache->iPtrCategory->Count())
-        {
-            User::Leave(KErrArgument);
-        }
-
-        if (iCache->iPtrCategory->Count())
-        {
-            iCachePath.Zero();
-            iCachePath.Copy(
-                    (*(iCache->iPtrCategory))[aSelectedOption]->iCatId->Des());
-
-            iCache->CheckCacheL(1,
-                    iCachePath,
-                    iForceGet, res);
-        }
-    }
-    //previous data from xml
-    else
-    {
-        if (aSelectedOption >= iXmlReader->iPtrCategory->Count())
-        {
-            User::Leave(KErrArgument);
-        }
-
-        if (iXmlReader->iPtrCategory->Count())
-        {
-            iCachePath.Zero();
-            iCachePath.Copy(
-                    (*(iXmlReader-> iPtrCategory))[aSelectedOption]->iCatId->Des());
-            iCache->CheckCacheL(
-                    1,
-                    iCachePath,
-                    iForceGet, res);
-        }
-    }
-    
-     
-    if( CIRCacheMgmt::ECacheUseable == res )
-        return ETrue;
-    
-    return EFalse;  
-}
-
-// ---------------------------------------------------------------------------
-// void CIRIsdsClientInteface(TUint aSelectedOption,TIRIsdsClientInterfaces aChoice)
-// This API is used by the UI to make request for isds listed channels
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRIsdsClient::IRIsdsClientIntefaceL(TUint aSelectedOption,
-	TIRIsdsClientInterfaces aChoice,TInt aHistoryBool)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Entering" );
-	iForceGet=EFalse;
-	CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData;	  	
-	CleanupStack::PushL(requestData);
-	requestData->iMethod = EIRHttpGET;
-	requestData->iAcceptLanguage.Copy( iShortLanguageCode );
-    requestData->iUri.Copy( *iISDSBaseUrl );
-    
-    TBool isAdvPresent = EFalse;
-    
-
-	TInt res;
-	if(aChoice==ECatagory)
-		{
-		//set the request type for subsiquent Use
-		iRequestType=1;
-		//previous data from cache
-		if(iCatDataFrom)
-			{
-			TInt categoryCacheIndex;
-
-			if (( *(iCache->iPtrCategory))[0]->iCatGetOperation)
-				{
-				isAdvPresent = EFalse;	
-				}
-			else
-				{
-				isAdvPresent = ETrue;	
-				}				
-			if (!isAdvPresent)
-				{
-				categoryCacheIndex = 0;				
-				}
-			else
-				{
-				categoryCacheIndex = 1;					
-				}			
- 
-			if( aSelectedOption >= iCache->iPtrCategory->Count())
-			{
-			    User::Leave(KErrArgument);
-			}
-			
-			if(iCache->iPtrCategory->Count())
-				{
-				iCachePath.Zero();
-				iCachePath.Copy((*(iCache->iPtrCategory))[aSelectedOption]->iCatId->Des());
-				iCacheReqMade = ETrue;
-				iCache->CheckCacheL(1,(*(iCache->iPtrCategory))[aSelectedOption]->
-					iCatId->Des(),iForceGet,res);
-				iDataFrom=EFalse;			
-				if(res == 0)	
-					{
-					requestData->iUri.Append( (*(iCache->
-						iPtrCategory))[categoryCacheIndex]->iCatGetOperation->Des());
-					requestData->iUri.Append( (*(iCache->
-						iPtrCategory))[aSelectedOption]->iCatId->Des());	
-					IRHttpIssueRequestL(*requestData);
-					iConditonalGet=EFalse;
-					iBrowseUrl.Copy(requestData->iUri);
-					iBrowseReport->BrowseUrl(iBrowseUrl,0);
-					iDataFrom=ETrue;		
-					}
-				if(res == -1)
-					{
-					iConditonalGet=ETrue;
-					requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-					requestData->isIfModifiedSet = ETrue;
-					requestData->iUri.Append( (*(iCache->
-						iPtrCategory))[categoryCacheIndex]->iCatGetOperation->Des()); //0
-					requestData->iUri.Append( (*(iCache->
-						iPtrCategory))[aSelectedOption]->iCatId->Des());	
-					IRHttpIssueRequestL(*requestData);
-					iBrowseUrl.Copy(requestData->iUri);
-					iBrowseReport->BrowseUrl(iBrowseUrl,0);
-					iDataFrom=ETrue;		
-					}		
-				}
-			}
-		//previous data from xml
-		else
-			{
-			TInt categoryXmlIndex;
-			if (( *(iXmlReader->iPtrCategory))[0]->iCatGetOperation)
-				{
-				isAdvPresent = EFalse;	
-				}				
-			else
-				{
-				isAdvPresent = ETrue;	
-				}				
-			if (!isAdvPresent)
-				{
-				categoryXmlIndex = 0;				
-				}
-			else
-				{
-				categoryXmlIndex = 1;					
-				}
-			
-	        if (aSelectedOption >= iXmlReader->iPtrCategory->Count())
-	            {
-	            User::Leave(KErrArgument);
-                }
-	        
-			if(iXmlReader->iPtrCategory->Count())
-				{
-				iCachePath.Zero();
-				iCachePath.Copy((*(iXmlReader->
-					iPtrCategory))[aSelectedOption]->iCatId->Des());
-				iCacheReqMade = ETrue;
-				iCache->CheckCacheL(1,(*(iXmlReader->
-					iPtrCategory))[aSelectedOption]->iCatId->Des(),iForceGet,res);
-				iDataFrom=EFalse;			
-				if( res==0 )	
-					{
-					requestData->iUri.Append( (*(iXmlReader->
-						iPtrCategory))[categoryXmlIndex]->iCatGetOperation->Des());			  	  	
-					requestData->iUri.Append( (*(iXmlReader->
-						iPtrCategory))[aSelectedOption]->iCatId->Des());	
-					IRHttpIssueRequestL(*requestData);
-					iConditonalGet=EFalse;         
-					iBrowseUrl.Copy(requestData->iUri);
-					iBrowseReport->BrowseUrl(iBrowseUrl,0);	
-					iDataFrom=ETrue;	
-					}
-				if( res==-1 )
-					{
-					iConditonalGet=ETrue;
-					requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-					requestData->isIfModifiedSet = ETrue;
-					requestData->iUri.Append( (*(iXmlReader->
-						iPtrCategory))[categoryXmlIndex]->iCatGetOperation->Des());
-					requestData->iUri.Append( (*(iXmlReader->
-						iPtrCategory))[aSelectedOption]->iCatId->Des());	
-					IRHttpIssueRequestL(*requestData);
-					iBrowseUrl.Copy(requestData->iUri);
-					iBrowseReport->BrowseUrl(iBrowseUrl,0);
-					iDataFrom=ETrue;	
-					}
-				}
-			}
-		}
-	else if(aChoice==EChannels)
-		{
-    
-		TBuf<KChannelidMaxLength> channelid;
-		//set the request type for subsiquent Use
-		iRequestType=KTwo;	 	
-		_LIT(KFormat,"%d");
-		if(aHistoryBool)
-			{
-			_LIT(KPresetFetchUrl,"/do/directory/getPreset?channelid=");
-			requestData->iUri.Append(KPresetFetchUrl);
-			TBuf<KChannelidMaxLength> channelid;
-			_LIT(KFormat,"%d");
-			channelid.Format(KFormat,aSelectedOption);
-			requestData->iUri.Append(channelid);	
-			IRHttpIssueRequestL(*requestData);
-			iConditonalGet=EFalse;
-			//Session Log
-			iBrowseUrl.Zero();
-			iBrowseUrl.Copy(requestData->iUri);
-			iBrowseReport->BrowseUrl(iBrowseUrl,1);
-			iDataFrom=ETrue;
-			CleanupStack::PopAndDestroy(requestData); 
-			return iDataFrom;
-			}
-		
-		//previous data from cache
-		if( iChannelDataFrom)
-			{
-			TInt channelCacheIndex;
-			if (( *(iCache->iPtrChannel))[0]->iChannelGetOperation)
-				{
-				isAdvPresent = EFalse;	
-				}				
-			else
-				{
-				isAdvPresent = ETrue;	
-				}				
-			if (!isAdvPresent)
-				{
-				channelCacheIndex = 0;				
-				}
-			else
-				{
-				channelCacheIndex = 1;					
-				}
-			
-
-            if( aSelectedOption >= iCache->iPtrChannel->Count())
-            {
-                User::Leave(KErrArgument);
-            }
-            
-			if(iCache->iPtrChannel->Count())
-				{
-				channelid.Format(KFormat,(*(iCache->
-					iPtrChannel))[aSelectedOption]->iChannelID);
-				iCachePath.Zero();
-				iCachePath.Copy(channelid); 
-				iCacheReqMade = ETrue;
-				iCache->CheckCacheL(KTwo,channelid,iForceGet,res);
-				iDataFrom=EFalse;			
-				if( res == 0 || res==-1)	
-					{
-					requestData->iUri.Append( (*(iCache->
-						iPtrChannel))[channelCacheIndex]->iChannelGetOperation->Des());
-					requestData->iUri.Append(channelid);	
-					IRHttpIssueRequestL(*requestData);
-					iConditonalGet=EFalse;
-	        		//Session Log	
-					iBrowseUrl.Copy(requestData->iUri);				
-					iBrowseReport->BrowseUrl(iBrowseUrl,1);
-					iDataFrom=ETrue;		
-					}
-				}
-			}
-		//previous data from xml
-		else
-			{
-			TInt channelXmlIndex;
-			if( 0 == ( *(iXmlReader->iPtrChannel)).Count() )
-			{
-			    CleanupStack::PopAndDestroy(requestData); 
-			    IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Error!" );
-			    return iDataFrom;
-			}
-			
-			if (( *(iXmlReader->iPtrChannel))[0]->iChannelGetOperation)
-				{
-				isAdvPresent = EFalse;
-				}
-			else
-				{
-				isAdvPresent = ETrue;	
-				}				
-			if (!isAdvPresent)
-				{
-				channelXmlIndex = 0;				
-				}
-			else
-				{
-				channelXmlIndex = 1;					
-				}
-			
-            if( aSelectedOption >= iXmlReader->iPtrChannel->Count())
-            {
-                User::Leave(KErrArgument);
-            }
-            
-			if(iXmlReader->iPtrChannel->Count())
-				{
-				channelid.Format(KFormat,(*(iXmlReader->
-					iPtrChannel))[aSelectedOption]->iChannelID);
-				iCachePath.Zero();
-				iCachePath.Copy(channelid); 
-				iCacheReqMade = ETrue;
-				iCache->CheckCacheL(KTwo,channelid,iForceGet,res);
-				iDataFrom=EFalse;			
-				if(res == 0 || res==-1)	
-					{
-					requestData->iUri.Append( (*(iXmlReader->
-						iPtrChannel))[channelXmlIndex]->iChannelGetOperation->Des());
-					requestData->iUri.Append(channelid);	
-					IRHttpIssueRequestL(*requestData);
-					iConditonalGet=EFalse;
-	                //Session Log
-					iBrowseUrl.Copy(requestData->iUri);
-					iBrowseReport->BrowseUrl(iBrowseUrl,1);
-					iDataFrom=ETrue;		
-					}
-				}
-			}
-		}
-	else
-		{
-			
-		}		
-	CleanupStack::PopAndDestroy(requestData); 
-	IRLOG_DEBUG( "CIRIsdsClient::IRIsdsClientIntefaceL - Exiting" );
-	return iDataFrom;
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// void CIRGetIRID()
-// This API is used by the UI to get IR ID from 
-// isds if it doesnt have one
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::IRGetIRIDL()
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Entering" );
-	//if irid is not available fetch it
-	 if(iSettings->GetIRIDL().Length()==0)
-	 	{
-		 iReqFromGetIRIDFunc = ETrue;
-		 iIRIDPending = EFalse;
-		 CIRHttpRequestData *requestData= new(ELeave) CIRHttpRequestData(); 	
-		 CleanupStack::PushL(requestData);		  
-		 requestData->iMethod = EIRHttpGET;
-		 requestData->iAcceptLanguage.Copy( iShortLanguageCode );
-		 requestData->iUri.Copy(iGetIridUrl);		
-		 IRHttpIssueRequestL(*requestData);			
-		 CleanupStack::PopAndDestroy(requestData);
-		 iIRIDPending = ETrue;
-         IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Exiting (1)." );
-		 return;	
-	 	}
-	IRLOG_DEBUG( "CIRIsdsClient::IRGetIRIDL - Exiting (2)." );
-	}
-// ---------------------------------------------------------------------------
-// void GetOtaStatus()
-// This API is used by the UI to query for ota update 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::GetOtaStatusL(TBool& aDataFrom)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::GetOtaStatusL - Entering" );
-	
- 	CIRHttpRequestData *requestData= new(ELeave) CIRHttpRequestData();
-  	
-	CleanupStack::PushL(requestData);
-
-	requestData->iMethod = EIRHttpGET;
-	requestData->iAcceptLanguage.Copy(iShortLanguageCode);
-	iGetOtaStatus.Zero();
-	iGetOtaStatus.Copy(*iISDSBaseUrl);
-	iGetOtaStatus.Append(KOtaUpdateUrl);
-	iGetOtaStatus.Append(	iSettings->GetIRIDL());
-	
-	//set the request type for subsiquent Use
-	iRequestType = EOtaInfo;
-	iDataFrom=EFalse;
-	iCachePath.Zero();
-	iCachePath.Copy(KOtaUpdateUrl);
-	TInt res = 0;
-	//check cache if it is a genral service request
-	//not initiated by the user.
-	if(iOtaReqFrom)
-		{
-		iCacheReqMade = ETrue;
-		iCache->CheckCacheL(EOtaInfo,KOtaUpdateUrl,iForceGet,res);
-		}
-	if(res == 1)
-		{
-		aDataFrom = EFalse;
-		}
-	//if cache is not available or stale(dont use the trust period val)
-	if(res == 0 || res == -1)
-		{
-		requestData->iUri.Copy(iGetOtaStatus);
-		iConditonalGet=EFalse;
-		//issues request for ota data
-		iDataProvider->IRHttpIssueRequestL(*requestData);
-		iDataFrom=ETrue;
-		aDataFrom = ETrue;				
-		}	
-	CleanupStack::PopAndDestroy(requestData);	
-	
-	IRLOG_DEBUG( "CIRIsdsClient::GetOtaStatusL - Exiting." );
-	}	
-
-// ---------------------------------------------------------------------------
-// CIRIsdsClient::IRISDSPostL()
-// This API is used to Post Irapp usage report to isds
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::IRISDSPostL(TFileName &/*aFileName*/)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSPostL - Entering" );
-	IRRDEBUG2("CIRISDSCLIENT::ISDSPOSTL",KNullDesC);
-	//Cancels any pending requests
-	IRISDSCancelRequest();
-	CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData;
-	CleanupStack::PushL(requestData);	 
-	//Sets the Http Method to POST
-	requestData->iMethod = EIRHttpPOST;
-	requestData->iAcceptLanguage.Copy(iShortLanguageCode);
-	requestData->iUri.Copy(*iISDSBaseUrl);
-	requestData->iUri.Append(KLogUsageUrl);
-	//issues request to post the log usage report to isds
-	iPostResponsePending = ETrue;
-	IRHttpIssueRequestL(*requestData);
-	CleanupStack::PopAndDestroy(requestData);
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSPostL - Exiting" );
-	}
-	
-// ---------------------------------------------------------------------------
-// void CIRISDSCancelRequest()
-// This API is used by the UI to cancel a request made.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::IRISDSCancelRequest()
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSCancelRequest - Entering" );
-	iSyncRequest = EFalse;
-	iReqFromSync = EFalse;
-	iOtaReqFrom = EFalse;
-	iConditonalGet = EFalse;
-	iPostResponsePending = EFalse;
-	iIRIDPending = EFalse;
-	iDataProvider->IRHttpCancelRequest();
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSCancelRequest - Exiting" );
-	}
-
-EXPORT_C void CIRIsdsClient::IRISDSMultiSearchL(const TDesC& aGenreID, const TDesC& aCountryID, const TDesC& aLanguageID, const TDesC& aSearchText)
-{
-    IRLOG_DEBUG( "CIRIsdsClient::IRISDSMultiSearch - Entering" );
-    CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData();
-    iCachePath.Zero();  
-    CleanupStack::PushL(requestData);
-    
-    requestData->iMethod = EIRHttpGET;
-    requestData->iAcceptLanguage.Copy( iShortLanguageCode );
-    
-    HBufC8* utfEncodedSearchText = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aSearchText );     
-    CleanupStack::PushL( utfEncodedSearchText );    
-    
-     
-    HBufC8 *encodedQuery = NULL; 
-    encodedQuery = EscapeUtils::EscapeEncodeL(*utfEncodedSearchText, EscapeUtils::EEscapeQuery);       
-       
-    HBufC* searchURL = HBufC::NewLC(iISDSBaseUrl->Length() + KMultiSearchUrl().Length() + aGenreID.Length() + aLanguageID.Length() + aCountryID.Length() +
-            KSearchUrl().Length() + utfEncodedSearchText->Size()/2+1);
-    HBufC* searchPartURL = HBufC::NewLC(KMultiSearchUrl().Length() + aGenreID.Length() + aLanguageID.Length() + aCountryID.Length());
-    searchPartURL->Des().Format(KMultiSearchUrl, &aGenreID, &aCountryID, &aLanguageID);
-    
-    HBufC* searchText = HBufC::NewLC(utfEncodedSearchText->Size()/2+1);
-    TPtr searchTextPtr(searchText->Des());
-    searchTextPtr.Copy(*utfEncodedSearchText);
-     
-    TPtr uriPtr( searchURL->Des());
-    uriPtr.Append(*iISDSBaseUrl);
-    uriPtr.Append(*searchPartURL);
-    uriPtr.Append(searchTextPtr);
-    uriPtr.Append(KSearchUrl);    
-    
-    if (encodedQuery)
-    {
-        delete encodedQuery;
-    }   
-    
-    requestData->iUri.Copy( searchURL->Left( requestData->iUri.MaxLength() ) );
-    IRHttpIssueRequestL(*requestData);
-    CleanupStack::PopAndDestroy(searchText);
-    CleanupStack::PopAndDestroy(searchPartURL);    
-    CleanupStack::PopAndDestroy(searchURL);
-    CleanupStack::PopAndDestroy(utfEncodedSearchText);
-    
-    
-    iBrowseUrl.Zero();
-    iBrowseUrl.Copy(requestData->iUri);
-    EncodeUrlL(iBrowseUrl);
-    iBrowseReport->BrowseUrl(iBrowseUrl,1);
-    CleanupStack::PopAndDestroy(requestData);   
-    
-    IRLOG_DEBUG( "CIRIsdsClient::IRISDSMultiSearch - Exiting." );
-}
-// ---------------------------------------------------------------------------
-// void CIRISDSSearch(TDesC& aSearchString)
-// This API is used by the UI to search channels from isds
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::IRISDSSearchL(const TDesC& aSearchString)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSSearchL - Entering" );
-	CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData();
-	iCachePath.Zero();	
-	CleanupStack::PushL(requestData);
-	//Sets the Http method to GET	
-	requestData->iMethod = EIRHttpGET;
-	requestData->iAcceptLanguage.Copy( iShortLanguageCode );
-
-    // This is a blatant hack to circumvent the fact that the application has hard-coded
-    // 256 to be the maximum length of the URI everywhere. Due to time-restraints it is
-    // not feasible to fix the actual issue here, so every search query that would exceed
-    // the said limit is truncated to fit it.
-    //
-    // The practical impacts of this hack is that should the maximum length be exceeded,
-    // a connection timed out query is most often displayed. 
-    //
-    // The scope of this quick hack is to enable users to perform search with UTF-8 characters
-    // with no possibility of application panics due to descriptor overflows, not to fix
-    // the actual problem with the hard-coded TBufs in the application.
-
-    HBufC8* utfEncoded = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aSearchString );
-    CleanupStack::PushL( utfEncoded );
-    HBufC8* uri = HBufC8::NewL( iSearchURL.Size() + utfEncoded->Size() + KSearchUrl().Size() );
-    TPtr8 uriPtr( uri->Des() );
-    uriPtr.Copy( iSearchURL );
-    
-	HBufC8 *encodedQuery = NULL;
-	encodedQuery = EscapeUtils::EscapeEncodeL(*utfEncoded,EscapeUtils::EEscapeQuery);
-    uriPtr.Append( *encodedQuery );
-    uriPtr.Append( KSearchUrl );
-    if(encodedQuery)
-	    {
-	    delete encodedQuery ;	
-	    }
-    CleanupStack::PopAndDestroy( utfEncoded );
-    requestData->iUri.Copy( uri->Left( requestData->iUri.MaxLength() ) );
-	delete uri;
-	
-	IRHttpIssueRequestL(*requestData);
-	iBrowseUrl.Zero();
-	iBrowseUrl.Copy(requestData->iUri);
-	EncodeUrlL(iBrowseUrl);
-	iBrowseReport->BrowseUrl(iBrowseUrl,1);
-	CleanupStack::PopAndDestroy(requestData);
-	IRLOG_DEBUG( "CIRIsdsClient::IRISDSSearchL - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-//void ParsedStructure(TInt aChoice)
-//Call back funtion called by XML parser after parsing is over
-// ---------------------------------------------------------------------------
-//
-void  CIRIsdsClient::ParsedStructureL(TInt aChoice)
-{
-	IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Entering" );
-	//if catogory info is recieved
-	if(aChoice==ECategoryInfoRecieved)
-		{
-		iCatDataFrom=EFalse;
-		iIsdsResponseObserver.IsdsCatogoryDataReceivedL(*(iXmlReader->
-			iPtrCategory));
-		}
-	// if channels list is recieved	
-	else if(aChoice==EChannelListRecieved)
-		{
-		iChannelDataFrom=EFalse;
- 		iIsdsResponseObserver.IsdsChannelDataReceivedL(*(iXmlReader->iPtrChannel));
-		}
-
-	//if preset data is recieved
-	else if(aChoice==EPresetDataRecieved)
-		{
-		if(iSyncRequest)
-			{
-			iSyncRequest = EFalse;
-			//update the preset(replace it)
-			iIsdsResponseObserver.IsdsPresetChangedL(*iXmlReader->iPtrPreset->At(0));
-			}
-		else
-			{
-			iIsdsResponseObserver.IsdsPresetDataReceivedL(*(iXmlReader->
-				iPtrPreset));	
-			}	
-		}
-	/*else if(aChoice==EOtaInfoRecieved)
-		{
-		if(!iOtaReqFrom)
-			{
-			iIsdsResponseObserver.IsdsOtaInfoRecieved(*iXmlReader->iOTA)
-			}
-		else
-			{
-			iOtaReqFrom=EFalse;
-			//update settings
-			if(iXmlReader->iOTA->iUpdateInterval!=0)
-				{
-				iSettings->SetSilencePeriodL(iXmlReader->iOTA->iUpdateInterval)
-				}
-			else
-				{
-				iSettings->SetSilencePeriodL(KDays*KHour*KMinute*KSecond)
-				}
-			}
-		}*/
-	else if(aChoice==EIridRecieved)
-		{
-		iSettings->SetIRIDL(iXmlReader->iRID);
-		}
-	else if( aChoice == ESessionLogRecieved )
-		{
-		//session log is recieved in ISDS
-		iPostResponsePending = EFalse;
-		iBrowseReport->ReponseFromISDSObtained();
-		}
-	
-	else
-		{
-		TRAPD(errd,iIsdsResponseObserver.IsdsErrorL(KDataProviderTimeout));
-		if(errd)
-			{
-			IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Exiting ." );
-			return;		
-			}
-		}	
-	IRLOG_DEBUG( "CIRIsdsClient::ParsedStructureL - Exiting." );
-	}
-    
-// ---------------------------------------------------------------------------
-// void ParseError()
-// Call back funtion called by XML parser in case of parsing error
-// ---------------------------------------------------------------------------
-//
-void CIRIsdsClient::ParseError( TInt aErrorCode )
-	{
-	IRLOG_ERROR( "CIRIsdsClient::ParseError - Entering" );
-	
-	IRHttpGeneralError( aErrorCode );
-	IRLOG_DEBUG( "CIRIsdsClient::ParseError - Exiting." );
-	}
-
-
- void CIRIsdsClient::CacheError()
- 	{
-	IRLOG_ERROR( "CIRIsdsClient::CacheError" );
- 	}
-
- void CIRIsdsClient::CacheFailed()
- 	{
-	IRLOG_WARNING( "CIRIsdsClient::CacheFailed" );
- 	}
-
-// ---------------------------------------------------------------------------
-// cache is present but Stale.
-// called by cache mgmt as a callback.
-// after copying the lastmodified time into its variable
-// here it is copied into the variable ilastModifiedTime 
-// ---------------------------------------------------------------------------
-//
-void CIRIsdsClient::CacheInvalid()
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::CacheInvalid - Entering" );
-	iLastModifiedTime = iCache->iLastModified;
-	IRLOG_DEBUG( "CIRIsdsClient::CacheInvalid - Exiting" );
-	}
-
- void CIRIsdsClient::CachedStructureL(TInt aChoice)
- 	{
-	IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL - Entering" );
-	if(iCacheReqMade)
-		{
-		iCacheReqMade = EFalse;
-		//if catogory info is recieved
-		if(aChoice==ECategoryInfoRecieved)
-			{
-			iCatDataFrom=ETrue;
-			iIsdsResponseObserver.IsdsCatogoryDataReceivedL(*(iCache->iPtrCategory));
-			}
-		
-		// if channels list is recieved	
-		else if(aChoice==EChannelListRecieved)
-			{
-			iChannelDataFrom=ETrue;
-			iIsdsResponseObserver.IsdsChannelDataReceivedL(*(iCache->iPtrChannel));
-			}
-		
-		//if preset data is recieved
-		else if(aChoice==EPresetDataRecieved)
-			{
-			//multiple presets can be presented to the UI.
-			iIsdsResponseObserver.IsdsPresetDataReceivedL(*(iCache->iPtrPreset));
-			}
-			
-		//if ota data is recieved
-		/*else if(aChoice==EOtaInfoRecieved)
-			{
-			if(!iOtaReqFrom)
-				{
-				iIsdsResponseObserver.IsdsOtaInfoRecieved(*iCache->iOTA)
-				}
-			else
-				{
-				iOtaReqFrom=EFalse;
-				//update settings
-				if(iCache->iOTA->iUpdateInterval!=0)
-					{
-					iSettings->SetSilencePeriodL(iCache->iOTA->iUpdateInterval)
-					}
-				else
-					{
-					iSettings->SetSilencePeriodL(KDays*KHour*KMinute*KSecond)
-					}
-				}
-			}*/
-		//if logo data is recieved
-		else if(aChoice==KFour)
-			{
-			//No implementation
-			}
-		else
-			{
-			TRAPD(errd,iIsdsResponseObserver.IsdsErrorL(KDataProviderTimeout));
-			if(errd)
-				{
-				IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL- Exiting ." );
-				return;		
-				}
-			}	
-					
-		}
-    IRLOG_DEBUG( "CIRIsdsClient::CachedStructureL - Exiting." );
- 	}
-
-// ---------------------------------------------------------------------------
-// void CIRIsdsClient::SyncPresetL()
-// Used to syncronize presets
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsClient::SyncPresetL(TInt aPresetId,const TDesC& 
-	aIfModifiedSince)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::SyncPresetL - Entering" );
-	IRRDEBUG2("CIRISDCLIENT::SYNCPRESETL",KNullDesC);
-	iReqFromSync = ETrue;
-	iPresetToBeSynced=aPresetId;
-	CIRHttpRequestData * requestData= new(ELeave) CIRHttpRequestData;
-	CleanupStack::PushL(requestData);
-	requestData->iMethod = EIRHttpGET;
-	 
-	requestData->iAcceptLanguage.Copy(iShortLanguageCode);	
-	TDateTime lastModified;
-	ConvertToTimeDate(aIfModifiedSince,lastModified);
-	requestData->isIfModifiedSet=ETrue;
-	requestData->iIfModifiedSince.Set(lastModified.Year(),lastModified.Month(),
-		lastModified.Day(),lastModified.Hour(),lastModified.Minute(),
-		lastModified.Second(),lastModified.MicroSecond());
-	_LIT(KPresetFetchUrl,"/do/directory/getPreset?channelid=");
-
-	TBuf<KUrlPassMaxLength> urlPass(iSettings->GetISDSBaseUrlL());
-	urlPass.Append(KPresetFetchUrl);
-	
-	TBuf<KChidMaxLength> chid;
-	_LIT(KFormat,"%d");
-	chid.Format(KFormat,aPresetId);
-	urlPass.Append(chid);
-	requestData->iUri.Copy(urlPass);
-
-	IRHttpIssueRequestL(*requestData);	
-	CleanupStack::PopAndDestroy(requestData);
-	IRLOG_DEBUG( "CIRIsdsClient::SyncPresetL - Exiting." );
-	return 1;
-	}
-
-// ---------------------------------------------------------------------------
-// void ReleaseResources()
-//
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C void CIRIsdsClient::ReleaseResources()
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::ReleaseResources - Entering" );
-	iDataProvider->ReleaseResources();	
-	IRLOG_DEBUG( "CIRIsdsClient::ReleaseResources - Exiting" );
-	}
-	
-//---------------------------------------------------------------------------
-//CIRIsdsClient::GetMultiplePresetsL
-//for multiple selected presets to be saved 
-//
-//---------------------------------------------------------------------------	
-//
-	
-EXPORT_C void CIRIsdsClient::GetMultiplePresetsL(const RArray<TInt>& aIndexArray,TBool& aDataFrom)
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::GetMultiplePresetsL - Entering" );
-	_LIT(KSeparator,",");
-	//get the count of the no of requested presets
-	TInt multiSelectedCount = aIndexArray.Count();
-	//allocate space for the request url
-	HBufC8* channelIds = HBufC8::NewLC(multiSelectedCount*KDefaultRealWidth 
-										+ multiSelectedCount);
-	//http request data		
-	CIRHttpRequestData* requestData= new(ELeave) CIRHttpRequestData;
-	requestData->iUri.Copy(*iISDSBaseUrl);
-	CleanupStack::PushL(requestData);
-	requestData->iAcceptLanguage.Copy(iShortLanguageCode);
-	//create a tptr to modify it
-	TPtr8 channelIdPtr = channelIds->Des();
-	//set the request type 
-	iRequestType=EPresets;
-	//result
-	TInt res;	 	
-	_LIT8(KFormat,"%d");
-	//if from cache
-	if( iChannelDataFrom)
-		{
-		for(TInt i=0;i<multiSelectedCount;i++)
-			{
-			ASSERT( aIndexArray[i] >= 0 && aIndexArray[i] < iCache->iPtrChannel->Count() ); 
-			TInt channelID = iCache->iPtrChannel->At(aIndexArray[i])->iChannelID;
-			if(i!=0)
-				{
-				channelIdPtr.Append(KSeparator);
-				}
-			TBuf8<KChannelidMaxLength> channelIdBuf;
-			channelIdBuf.Format(KFormat,channelID);
-			channelIdPtr.Append(channelIdBuf);					
-			}
-		iCachePath.Zero();
-		iCachePath.Copy(*channelIds); 
-		//check if cache is available
-		iCacheReqMade = ETrue;
-		iCache->CheckCacheL(EPresets,iCachePath,iForceGet,res);
-		aDataFrom=EFalse;			
-		if( res == KErrNone )	
-			{
-			requestData->iUri.Append( (*(iCache->
-			iPtrChannel))[0]->iChannelGetOperation->Des());
-			requestData->iUri.Append(*channelIds);	
-			IRHttpIssueRequestL(*requestData);
-			iConditonalGet=EFalse;
-    		//Session Log	
-			iBrowseUrl.Copy(requestData->iUri);				
-			iBrowseReport->BrowseUrl(iBrowseUrl,1);
-			aDataFrom=ETrue;		
-			}
-		if(res == KErrNotFound)
-			{
-			iConditonalGet=ETrue;
-			requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-			requestData->isIfModifiedSet = ETrue;
-			requestData->iUri.Append( (*(iCache->
-			iPtrChannel))[0]->iChannelGetOperation->Des());
-			requestData->iUri.Append(*channelIds);	
-			IRHttpIssueRequestL(*requestData);
-          	iBrowseUrl.Copy(requestData->iUri);				
-			iBrowseReport->BrowseUrl(iBrowseUrl,1);
-			aDataFrom=ETrue;
-			}
-		}
-	//if from xml file
-	else
-		{
-		for(TInt i=0;i<multiSelectedCount;i++)
-			{
-			ASSERT( aIndexArray[i] >= 0 && aIndexArray[i] < iXmlReader->iPtrChannel->Count() );
-			TInt channelID = iXmlReader->iPtrChannel->At(aIndexArray[i])->iChannelID;
-			if(i!=0)
-				{
-				channelIdPtr.Append(KSeparator);
-				}
-			TBuf8<KChannelidMaxLength> channelIdBuf;
-			channelIdBuf.Format(KFormat,channelID);
-			channelIdPtr.Append(channelIdBuf);					
-			}
-		iCachePath.Zero();
-		iCachePath.Copy(*channelIds); 
-		iCacheReqMade = ETrue;
-		iCache->CheckCacheL(EPresets,iCachePath,iForceGet,res);
-		aDataFrom=EFalse;			
-		if( res == KErrNone )	
-			{
-			requestData->iUri.Append( (*(iXmlReader->
-			iPtrChannel))[0]->iChannelGetOperation->Des());
-			requestData->iUri.Append(*channelIds);	
-			IRHttpIssueRequestL(*requestData);
-			iConditonalGet=EFalse;
-            //Session Log
-			iBrowseUrl.Copy(requestData->iUri);
-			iBrowseReport->BrowseUrl(iBrowseUrl,1);
-			aDataFrom=ETrue;		
-			}
-		if(res == KErrNotFound)
-			{
-			iConditonalGet=ETrue;
-			requestData->iIfModifiedSince = iLastModifiedTime.DateTime();
-			requestData->isIfModifiedSet = ETrue;
-			requestData->iUri.Append( (*(iXmlReader->
-				iPtrChannel))[0]->iChannelGetOperation->Des());
-			requestData->iUri.Append(*channelIds);	
-			IRHttpIssueRequestL(*requestData);
-            //Session Log
-			iBrowseUrl.Copy(requestData->iUri);
-			iBrowseReport->BrowseUrl(iBrowseUrl,1);
-			aDataFrom=ETrue;		
-			}
-		}
-	CleanupStack::PopAndDestroy(requestData);
-	CleanupStack::PopAndDestroy(channelIds);
-	IRLOG_DEBUG( "CIRIsdsClient::GetMultiplePresetsL - Exiting" );
-	}
-//---------------------------------------------------------------------------
-//CIRIsdsClient::ConvertToTimeDate
-//converts the date-time stamp (last modified) to Symbian DateTime format
-//---------------------------------------------------------------------------
-	
-void CIRIsdsClient::ConvertToTimeDate(const TDesC& aTime,
-									TDateTime& aDateTime) const
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::ConvertToTimeDate - Entering" );
-	TBuf8<KCopyOfTimeMaxLength> copyOfTime;
-	copyOfTime.Copy(aTime);
-	TInternetDate time;
-	TRAPD(error,time.SetDateL(copyOfTime));
-	if(!error)
-		{
-		aDateTime = time.DateTime();
-		}	
-	
-	IRLOG_DEBUG( "CIRIsdsClient::ConvertToTimeDate - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//CIRIsdsClient::IRHttpIssueRequestL
-//Issues Http Request to DataProvider to get data from URL in Request object
-//The Request URL is also encoded here
-//---------------------------------------------------------------------------
-//
-void CIRIsdsClient::IRHttpIssueRequestL( CIRHttpRequestData &aRequestObject )
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::IRHttpIssueRequestL - Entering" );
-	IRRDEBUG2("CIRISDSCLIENT::IRHTTPISSUEREQUESTL",KNullDesC);
-	if(iIRIDPending)
-		{
-		//if IRID reqeust is pending then queue the reuest 
-		//till IRID response comes
-		iReqPending = ETrue;
-		//temporary request object
-		iTempRequestObject= new(ELeave) CIRHttpRequestData;
-		iTempRequestObject->iMethod = aRequestObject.iMethod;
-		iTempRequestObject->iIfModifiedSince = aRequestObject.iIfModifiedSince;
-		iTempRequestObject->isIfModifiedSet = aRequestObject.isIfModifiedSet;
-		iTempRequestObject->iAcceptLanguage = aRequestObject.iAcceptLanguage;
-		iTempRequestObject->iContentType = aRequestObject.iContentType;
-		iTempRequestObject->iUri = aRequestObject.iUri;
-		}
-	else
-		{
-		if(iSettings->GetIRIDL().Length()==0)
-			{
-			if(iReqFromGetIRIDFunc)
-				{
-				iReqFromGetIRIDFunc = EFalse;
-				iDataProvider->IRHttpIssueRequestL(aRequestObject);					
-				}
-			else
-				{
-				//When the user cancels the http req,irid is not present.
-				//On next request,automatically first irid req is made.
-				//save the actual request
-				//get irid from isds
-				//once irid is received send the saved request to isds
-				iReqPending = ETrue;
-				//temporary request object
-				iTempRequestObject= new(ELeave) CIRHttpRequestData;
-				iTempRequestObject->iMethod = aRequestObject.iMethod;
-				iTempRequestObject->iIfModifiedSince = aRequestObject.iIfModifiedSince;
-				iTempRequestObject->isIfModifiedSet = aRequestObject.isIfModifiedSet;
-				iTempRequestObject->iAcceptLanguage = aRequestObject.iAcceptLanguage;
-				iTempRequestObject->iContentType = aRequestObject.iContentType;
-				iTempRequestObject->iUri = aRequestObject.iUri;
-				IRGetIRIDL();
-				}
-			}
-		else
-			{
-			iReqPending = EFalse;
-			if(iReqFromSync)
-				{
-				iReqFromSync = EFalse;
-				iSyncRequest = ETrue;					
-				}
-			iDataProvider->IRHttpIssueRequestL(aRequestObject);
-			}
-		}
-	IRLOG_DEBUG( "CIRIsdsClient::IRHttpIssueRequestL - Exiting." );
-	}
-
-//---------------------------------------------------------------------------
-//CIRIsdsClient::EncodeUrlL
-//This url encoding is for session log
-//---------------------------------------------------------------------------
-//
-void CIRIsdsClient::EncodeUrlL( TDes &aQuery )
-	{
-	IRLOG_DEBUG( "CIRIsdsClient::EncodeUrlL - Entering" );
-	//Encodes the URL inside the request object
-	HBufC *encodedurl = NULL;
-	encodedurl = EscapeUtils::EscapeEncodeL(aQuery,
-		EscapeUtils::EEscapeUrlEncoded);
-	aQuery.Copy(encodedurl->Left(aQuery.MaxLength()));
-	//encoded url is released
-	if( encodedurl )
-		{
-		delete encodedurl;
-		}
-	IRLOG_DEBUG( "CIRIsdsClient::EncodeUrlL - Exiting." );
-	}
-    
-//---------------------------------------------------------------------------
-//CIRIsdsClient::PurgeOtaInfoL
-//delete all the data cached wrt OTA
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsClient::PurgeOtaInfoL()
-    {		
-	IRLOG_DEBUG( "CIRIsdsClient::PurgeOtaInfoL - Entering" );
-    //reset update available flag to 0
-    iSettings->ReSetUpdateAvailableL();
-    //reset silence period to 0
-    iSettings->SetSilencePeriodL(0);
-    //reset silence period start time to a zero string
-    iSettings->SetSilencePeriodStartL(KNullDesC);
-    //clear the cache info if any
-    TRAP_IGNORE(iCache->RemoveOtaInfoL())
-	IRLOG_DEBUG( "CIRIsdsClient::PurgeOtaInfoL - Exiting" );
-    }
-
--- a/internetradio2.0/isdsclientsrc/irlanguagemapper.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,340 +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 <btsdp.h>
-
-#include "irlanguagemapper.h"
-#include "irdebug.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// IRLanguageMapper::MapLanguage
-// ---------------------------------------------------------
-
-TBufC8<KIRLanguageCodeLength> IRLanguageMapper::MapLanguage(TLanguage aLanguage)
-	{
-	IRLOG_DEBUG( "IRLanguageMapper::MapLanguage - Entering" );
-	TUint16 value=0;
-
-	switch(aLanguage)
-		{
-	case ELangEnglish:
-		value = KLanguageEnglish;
-		break;
-	case ELangFrench:
-		value = KLanguageFrench;
-		break;
-	case ELangGerman:
-		value = KLanguageGerman;
-		break;
-	case ELangSpanish:
-		value = KLanguageSpanish;
-		break;
-	case ELangItalian:
-		value = KLanguageItalian;
-		break;
-	case ELangSwedish:
-		value = KLanguageSwedish;
-		break;
-	case ELangDanish:
-		value = KLanguageDanish;
-		break;
-	case ELangNorwegian:
-		value = KLanguageNorwegian;
-		break;
-	case ELangFinnish:
-		value = KLanguageFinnish;
-		break;
-	case ELangAmerican:
-		value = KLanguageEnglish;
-		break;
-	case ELangSwissFrench:
-		value = KLanguageFrench;
-		break;
-	case ELangSwissGerman:
-		value = KLanguageGerman;
-		break;
-	case ELangPortuguese:
-		value = KLanguagePortuguese;
-		break;
-	case ELangTurkish:
-		value = KLanguageTurkish;
-		break;
-	case ELangIcelandic:
-		value = KLanguageIcelandic;
-		break;
-	case ELangRussian:
-		value = KLanguageRussian;
-		break;
-	case ELangHungarian:
-		value = KLanguageHungarian;
-		break;
-	case ELangDutch:
-		value = KLanguageDutch;
-		break;
-	case ELangBelgianFlemish:
-		value = KLanguageDutch;
-		break;
-	case ELangAustralian:
-		value = KLanguageEnglish;
-		break;
-	case ELangBelgianFrench:
-		value = KLanguageFrench;
-		break;
-	case ELangAustrian:
-		value = KLanguageGerman;
-		break;
-	case ELangNewZealand:
-		value = KLanguageEnglish;
-		break;
-	case ELangInternationalFrench:
-		value = KLanguageFrench;
-		break;
-	case ELangCzech:
-		value = KLanguageCzech;
-		break;
-	case ELangSlovak:
-		value = KLanguageSlovak;
-		break;
-	case ELangPolish:
-		value = KLanguagePolish;
-		break;
-	case ELangSlovenian:
-		value = KLanguageSlovenian;
-		break;
-	case ELangTaiwanChinese:
-		value = KLanguageChinese;
-		break;
-	case ELangHongKongChinese:
-		value = KLanguageChinese;
-		break;
-	case ELangPrcChinese:
-		value = KLanguageChinese;
-		break;
-	case ELangJapanese:
-		value = KLanguageJapanese;
-		break;
-	case ELangThai:
-		value = KLanguageThai;
-		break;
-	case ELangAfrikaans:
-		value = KLanguageAfrikaans;
-		break;
-	case ELangAlbanian:
-		value = KLanguageAlbanian;
-		break;
-	case ELangAmharic:
-		value = KLanguageAmharic;
-		break;
-	case ELangArabic:
-		value = KLanguageArabic;
-		break;
-	case ELangArmenian:
-		value = KLanguageArmenian;
-		break;
-	case ELangTagalog:
-		value = KLanguageTagalog;
-		break;
-	case ELangBelarussian:
-		value = KLanguageRussian;
-		break;
-	case ELangBengali:
-		value = KLanguageBengali;
-		break;
-	case ELangBulgarian:
-		value = KLanguageBulgarian;
-		break;
-	case ELangBurmese:
-		value = KLanguageBurmese;
-		break;
-	case ELangCatalan:
-		value = KLanguageCatalan;
-		break;
-	case ELangCroatian:
-		value = KLanguageCroatian;
-		break;
-	case ELangCanadianEnglish:
-		value = KLanguageEnglish;
-		break;
-	case ELangInternationalEnglish:
-		value = KLanguageEnglish;
-		break;
-	case ELangSouthAfricanEnglish:
-		value = KLanguageEnglish;
-		break;
-	case ELangEstonian:
-		value = KLanguageEstonian;
-		break;
-	case ELangFarsi:
-		value = KLanguagePersian;
-		break;
-	case ELangCanadianFrench:
-		value = KLanguageFrench;
-		break;
-	case ELangScotsGaelic:
-		value = KLanguageScotsGaelic;
-		break;
-	case ELangGeorgian:
-		value = KLanguageGeorgian;
-		break;
-	case ELangGreek:
-		value = KLanguageGreek;
-		break;
-	case ELangCyprusGreek:
-		value = KLanguageGreek;
-		break;
-	case ELangGujarati:
-		value = KLanguageGujarati;
-		break;
-	case ELangHebrew:
-		value = KLanguageHebrew;
-		break;
-	case ELangHindi:
-		value = KLanguageHindi;
-		break;
-	case ELangIndonesian:
-		value = KLanguageIndonesian;
-		break;
-	case ELangIrish:
-		value = KLanguageIrish;
-		break;
-	case ELangSwissItalian:
-		value = KLanguageItalian;
-		break;
-	case ELangKannada:
-		value = KLanguageKannada;
-		break;
-	case ELangKazakh:
-		value = KLanguageKazakh;
-		break;
-	case ELangKhmer:
-		value = KLanguageCambodian;
-		break;
-	case ELangKorean:
-		value = KLanguageKorean;
-		break;
-	case ELangLao:
-		value = KLanguageLaothian;
-		break;
-	case ELangLatvian:
-		value = KLanguageLatvian;
-		break;
-	case ELangLithuanian:
-		value = KLanguageLithuanian;
-		break;
-	case ELangMacedonian:
-		value = KLanguageMacedonian;
-		break;
-	case ELangMalay:
-		value = KLanguageMalay;
-		break;
-	case ELangMalayalam:
-		value = KLanguageMalayalam;
-		break;
-	case ELangMarathi:
-		value = KLanguageMarathi;
-		break;
-	case ELangMoldavian:
-		value = KLanguageMoldavian;
-		break;
-	case ELangMongolian:
-		value = KLanguageMongolian;
-		break;
-	case ELangNorwegianNynorsk:
-		value = KLanguageNorwegian;
-		break;
-	case ELangBrazilianPortuguese:
-		value = KLanguagePortuguese;
-		break;
-	case ELangPunjabi:
-		value = KLanguagePunjabi;
-		break;
-	case ELangRomanian:
-		value = KLanguageRomanian;
-		break;
-	case ELangSerbian:
-		value = KLanguageSerbian;
-		break;
-	case ELangSinhalese:
-		value = KLanguageSinhalese;
-		break;
-	case ELangSomali:
-		value = KLanguageSomali;
-		break;
-	case ELangInternationalSpanish:
-		value = KLanguageSpanish;
-		break;
-	case ELangLatinAmericanSpanish:
-		value = KLanguageSpanish;
-		break;
-	case ELangSwahili:
-		value = KLanguageSwahili;
-		break;
-	case ELangFinlandSwedish:
-		value = KLanguageSwedish;
-		break;
-	case ELangTamil:
-		value = KLanguageTamil;
-		break;
-	case ELangTelugu:
-		value = KLanguageTelugu;
-		break;
-	case ELangTibetan:
-		value = KLanguageTibetan;
-		break;
-	case ELangTigrinya:
-		value = KLanguageTigrinya;
-		break;
-	case ELangCyprusTurkish:
-		value = KLanguageTurkish;
-		break;
-	case ELangTurkmen:
-		value = KLanguageTurkmen;
-		break;
-	case ELangUkrainian:
-		value = KLanguageUkrainian;
-		break;
-	case ELangUrdu:
-		value = KLanguageUrdu;
-		break;
-	case ELangVietnamese:
-		value = KLanguageVietnamese;
-		break;
-	case ELangWelsh:
-		value = KLanguageWelsh;
-		break;
-	case ELangZulu:
-		value = KLanguageZulu;
-		break;
-	default:
-		value = KLanguageEnglish;
-		break;
-		}
-
-	/* translate the two bytes into actual 'string' */
-	TBuf8<KIRLanguageCodeLength> ret;
-	TUint char1 = (value >> 8) & 0xFFu;
-	TUint char2 = value & 0xFFu;
-	ret.Append(static_cast<TUint8>(char1));
-	ret.Append(static_cast<TUint8>(char2));
-	IRLOG_DEBUG( "IRLanguageMapper::MapLanguage - Exiting" );
-	return ret;
-	}
-
-//  End of File  
--- a/internetradio2.0/mbm/qgn_indi_ai_music_play.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
-<g>
-<rect fill="none" width="16" height="16"/>
-<path d="M2,2C1.447,2,1,2.448,1,3v11c0,0.552,0.447,1,1,1h13c0.553,0,1-0.448,1-1V3c0-0.552-0.447-1-1-1H2z"/>
-<rect x="2" y="3" fill="#D9D9D9" width="12.313" height="10.302"/>
-<polygon fill="#B2B2B2" points="14,3 14,13 2,13 2,14 15,14 15,3  "/>
-<polygon fill="#5A910A" points="5,5 5,12 12,8.5  "/>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_ai_music_stop.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 16 16">
-<g>
-<g>
-<path d="M2,2C1.447,2,1,2.448,1,3v11c0,0.552,0.447,1,1,1h13c0.553,0,1-0.448,1-1V3c0-0.552-0.447-1-1-1H2z"/>
-<rect x="2" y="3" fill="#D9D9D9" width="12.369" height="10.301"/>
-<polygon fill="#B2B2B2" points="14,3 14,13 2,13 2,14 15,14 15,3 "/>
-<rect fill="none" width="16" height="16"/>
-<rect x="5.115" y="4.846" width="6.439" height="6.439"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_fmradio_tb_listen.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon points="3.729,2.75 3.729,19.25 18.271,11.079 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_fmradio_tb_listen_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon fill="#FFFFFF" points="3.729,2.75 3.729,19.25 18.271,11.079 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_addstation.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M11,16c2.762,0,5-2.238,5-5l0,0h-2c0,1.656-1.343,3-3,3V16z M11,8V6l0,0c-2.761,0-5,2.239-5,5h2l0,0       C8,9.344,9.344,8,11,8L11,8z M11,4L11,4V2c-4.97,0-9,4.03-9,9h2l0,0C4,7.134,7.134,4,11,4z M18,11c0,3.866-3.134,7-7,7v2l0,0       c4.971,0,9-4.029,9-9l0,0H18z"/>
-<polygon points="21.5,3 19,3 19,0.5 18,0.5 18,3 15.5,3 15.5,4 18,4 18,6.5 19,6.5 19,4 21.5,4 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_addstation_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M11,16c2.762,0,5-2.238,5-5l0,0h-2c0,1.656-1.343,3-3,3V16z M11,8V6l0,0c-2.761,0-5,2.239-5,5h2l0,0       C8,9.344,9.344,8,11,8L11,8z M11,4L11,4V2c-4.97,0-9,4.03-9,9h2l0,0C4,7.134,7.134,4,11,4z M18,11c0,3.866-3.134,7-7,7v2l0,0       c4.971,0,9-4.029,9-9l0,0H18z" fill="#FFFFFF"/>
-<polygon fill="#FFFFFF" points="21.5,3 19,3 19,0.5 18,0.5 18,3 15.5,3 15.5,4 18,4 18,6.5 19,6.5 19,4 21.5,4 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_addtofav.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon points="21,8.922 13.495,8.923 11.03,1.71 8.566,8.922 1,8.923 7.063,13.328 4.687,20.29 11.03,16.21 17.376,20.287        14.995,13.313 "/>
-<polygon points="21.5,3 19,3 19,0.5 18,0.5 18,3 15.5,3 15.5,4 18,4 18,6.5 19,6.5 19,4 21.5,4 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_addtofav_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon fill="#FFFFFF" points="21,8.922 13.495,8.923 11.03,1.71 8.566,8.922 1,8.923 7.063,13.328 4.687,20.29 11.03,16.21        17.376,20.287 14.995,13.313 "/>
-<polygon fill="#FFFFFF" points="21.5,3 19,3 19,0.5 18,0.5 18,3 15.5,3 15.5,4 18,4 18,6.5 19,6.5 19,4 21.5,4 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_findnshop.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M20,3h-4c-0.55,0-1,0.45-1,1v12H1.03c-0.55,0-1,0.45-1,1s0.45,1,1,1H3.5h10H16c0.55,0,1-0.45,1-1V5h3       c0.55,0,1-0.45,1-1S20.55,3,20,3z M12,19.5c0,0.828,0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S14.328,18,13.5,18S12,18.672,12,19.5z        M2,19.5C2,20.328,2.672,21,3.5,21S5,20.328,5,19.5S4.328,18,3.5,18S2,18.672,2,19.5z"/>
-<path d="M14,5l-2.148-0.001v2.673c-0.229,2.143-2.604,2.612-3.953,1.83c-0.385,1.345-1.572,1.829-2.537,1.835       c-1.178,0-2.125-0.708-2.305-1.723C2.86,8.473,3.696,7.397,4.975,7.105V4.999H1.03C0.467,5.002-0.158,5.564,0.081,6.315       l1.999,6C2.217,12.723,2.599,13,3.029,13H14V5z"/>
-<path d="M10.85,1.382c0-0.325-0.357-0.47-0.645-0.327C9.917,1.199,5.977,3.17,5.977,3.17v4.906       C5.764,8.031,5.533,8.02,5.293,8.063C4.495,8.204,3.936,8.821,4.043,9.44c0.109,0.619,0.847,1.008,1.646,0.866       c0.719-0.125,1.238-0.639,1.256-1.192H6.95V4.306l2.927-1.463v3.771C9.664,6.567,9.433,6.558,9.194,6.599       C8.395,6.74,7.837,7.357,7.944,7.977C8.042,8.532,8.649,8.9,9.35,8.866c0.773,0.011,1.43-0.583,1.496-1.195L10.85,1.382z"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_findnshop_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M20,3h-4c-0.55,0-1,0.45-1,1v12H1.03c-0.55,0-1,0.45-1,1s0.45,1,1,1H3.5h10H16c0.55,0,1-0.45,1-1V5h3       c0.55,0,1-0.45,1-1S20.55,3,20,3z M12,19.5c0,0.828,0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S14.328,18,13.5,18S12,18.672,12,19.5z        M2,19.5C2,20.328,2.672,21,3.5,21S5,20.328,5,19.5S4.328,18,3.5,18S2,18.672,2,19.5z" fill="#FFFFFF"/>
-<path d="M14,5l-2.148-0.001v2.673c-0.229,2.143-2.604,2.612-3.953,1.83c-0.385,1.345-1.572,1.829-2.537,1.835       c-1.178,0-2.125-0.708-2.305-1.723C2.86,8.473,3.696,7.397,4.975,7.105V4.999H1.03C0.467,5.002-0.158,5.564,0.081,6.315       l1.999,6C2.217,12.723,2.599,13,3.029,13H14V5z" fill="#FFFFFF"/>
-<path d="M10.85,1.382c0-0.325-0.357-0.47-0.645-0.327C9.917,1.199,5.977,3.17,5.977,3.17v4.906       C5.764,8.031,5.533,8.02,5.293,8.063C4.495,8.204,3.936,8.821,4.043,9.44c0.109,0.619,0.847,1.008,1.646,0.866       c0.719-0.125,1.238-0.639,1.256-1.192H6.95V4.306l2.927-1.463v3.771C9.664,6.567,9.433,6.558,9.194,6.599       C8.395,6.74,7.837,7.357,7.944,7.977C8.042,8.532,8.649,8.9,9.35,8.866c0.773,0.011,1.43-0.583,1.496-1.195L10.85,1.382z" fill="#FFFFFF"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_history.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon points="4,1 15,1 15,0 3,0 3,16 4,16 "/>
-<polygon points="6,3 17,3 17,2 5,2 5,18 6,18 "/>
-<polygon points="9.186,17.18 16.419,9.946 16.419,14.316 19,14.316 19,4 7,4 7,20 12.005,20 "/>
-<polygon points="21,15.316 21,19.042 15.418,19.042 15.418,22 10.6,17.18 15.418,12.361 15.418,15.316 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_history_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon fill="#FFFFFF" points="4,1 15,1 15,0 3,0 3,16 4,16 "/>
-<polygon fill="#FFFFFF" points="6,3 17,3 17,2 5,2 5,18 6,18 "/>
-<polygon fill="#FFFFFF" points="9.186,17.18 16.419,9.946 16.419,14.316 19,14.316 19,4 7,4 7,20 12.005,20 "/>
-<polygon fill="#FFFFFF" points="21,15.316 21,19.042 15.418,19.042 15.418,22 10.6,17.18 15.418,12.361 15.418,15.316 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_saveall.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M17.502,6.998V4.499h-2.5V2H3v19h16V6.998H17.502z M8,5.771h7.498c0.277,0,0.5,0.223,0.5,0.5s-0.223,0.5-0.5,0.5H8       c-0.277,0-0.5-0.223-0.5-0.5S7.723,5.771,8,5.771z M6.006,5.521c0.414,0,0.75,0.336,0.75,0.75s-0.336,0.75-0.75,0.75       s-0.75-0.336-0.75-0.75S5.592,5.521,6.006,5.521z M6.006,16.023c-0.414,0-0.75-0.336-0.75-0.75s0.336-0.75,0.75-0.75       s0.75,0.336,0.75,0.75S6.42,16.023,6.006,16.023z M6.006,13.051c-0.414,0-0.75-0.336-0.75-0.75s0.336-0.75,0.75-0.75       s0.75,0.336,0.75,0.75S6.42,13.051,6.006,13.051z M6.039,9.988c-0.414,0-0.75-0.336-0.75-0.75c0-0.413,0.336-0.75,0.75-0.75       s0.75,0.337,0.75,0.75C6.789,9.652,6.453,9.988,6.039,9.988z M15.498,15.773h-7.5c-0.275,0-0.498-0.224-0.498-0.5       c0-0.275,0.223-0.502,0.498-0.502h7.5c0.277,0,0.502,0.227,0.502,0.502C16,15.551,15.775,15.773,15.498,15.773z M15.498,12.803       h-7.5c-0.275,0-0.498-0.225-0.498-0.502c0-0.275,0.223-0.5,0.498-0.5h7.5c0.277,0,0.502,0.225,0.502,0.5       C16,12.578,15.775,12.803,15.498,12.803z M15.498,9.744H8c-0.277,0-0.502-0.224-0.502-0.501c0-0.276,0.225-0.5,0.502-0.5h7.498       c0.277,0,0.502,0.225,0.502,0.5C16,9.521,15.775,9.744,15.498,9.744z"/>
-<polygon points="22,2.51 19.5,2.51 19.5,0.01 18.5,0.01 18.5,2.51 16,2.51 16,3.51 18.5,3.51 18.5,6.01 19.5,6.01 19.5,3.51        22,3.51 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_irradio_tb_saveall_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M17.502,6.998V4.499h-2.5V2H3v19h16V6.998H17.502z M8,5.771h7.498c0.277,0,0.5,0.223,0.5,0.5       s-0.223,0.5-0.5,0.5H8c-0.277,0-0.5-0.223-0.5-0.5S7.723,5.771,8,5.771z M6.006,5.521c0.414,0,0.75,0.336,0.75,0.75       s-0.336,0.75-0.75,0.75s-0.75-0.336-0.75-0.75S5.592,5.521,6.006,5.521z M6.006,16.023c-0.414,0-0.75-0.336-0.75-0.75       s0.336-0.75,0.75-0.75s0.75,0.336,0.75,0.75S6.42,16.023,6.006,16.023z M6.006,13.051c-0.414,0-0.75-0.336-0.75-0.75       s0.336-0.75,0.75-0.75s0.75,0.336,0.75,0.75S6.42,13.051,6.006,13.051z M6.039,9.988c-0.414,0-0.75-0.336-0.75-0.75       c0-0.413,0.336-0.75,0.75-0.75s0.75,0.337,0.75,0.75C6.789,9.652,6.453,9.988,6.039,9.988z M15.498,15.773h-7.5       c-0.275,0-0.498-0.224-0.498-0.5c0-0.275,0.223-0.502,0.498-0.502h7.5c0.277,0,0.502,0.227,0.502,0.502       C16,15.551,15.775,15.773,15.498,15.773z M15.498,12.803h-7.5c-0.275,0-0.498-0.225-0.498-0.502c0-0.275,0.223-0.5,0.498-0.5       h7.5c0.277,0,0.502,0.225,0.502,0.5C16,12.578,15.775,12.803,15.498,12.803z M15.498,9.744H8c-0.277,0-0.502-0.224-0.502-0.501       c0-0.276,0.225-0.5,0.502-0.5h7.498c0.277,0,0.502,0.225,0.502,0.5C16,9.521,15.775,9.744,15.498,9.744z" fill="#FFFFFF"/>
-<polygon fill="#FFFFFF" points="22,2.51 19.5,2.51 19.5,0.01 18.5,0.01 18.5,2.51 16,2.51 16,3.51 18.5,3.51 18.5,6.01        19.5,6.01 19.5,3.51 22,3.51 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_copy.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 22 22">
-<g>
-<g>
-<rect fill="none" width="22" height="22"/>
-<path d="M4.792,10.375c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52H7.75V7.521H4.792      C4.505,7.521,4.271,7.289,4.271,7c0-0.287,0.233-0.52,0.521-0.52H7.75V5.584h5.979V1.167H2.854v14H7.75v-4.792H4.792z       M4.792,3.625h7.001c0.287,0,0.521,0.233,0.521,0.521c0,0.288-0.233,0.521-0.521,0.521H4.792c-0.287,0-0.521-0.233-0.521-0.521      C4.271,3.859,4.505,3.625,4.792,3.625z"/>
-<path d="M8.604,6.375v14h10.875v-14H8.604z M17.543,15.584h-7.001c-0.287,0-0.521-0.232-0.521-0.521      c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52C18.063,15.352,17.83,15.584,17.543,15.584z M17.543,12.73      h-7.001c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52      C18.063,12.498,17.83,12.73,17.543,12.73z M17.543,9.875h-7.001c-0.287,0-0.521-0.233-0.521-0.521s0.233-0.521,0.521-0.521      h7.001c0.287,0,0.521,0.234,0.521,0.521S17.83,9.875,17.543,9.875z"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_copy_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 22 22">
-<g>
-<g>
-<rect fill="none" width="22" height="22"/>
-<path fill="#FFFFFF" d="M4.792,10.375c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52H7.75V7.521H4.792      C4.505,7.521,4.271,7.289,4.271,7c0-0.287,0.233-0.52,0.521-0.52H7.75V5.584h5.979V1.167H2.854v14H7.75v-4.792H4.792z       M4.792,3.625h7.001c0.287,0,0.521,0.233,0.521,0.521s-0.233,0.521-0.521,0.521H4.792c-0.287,0-0.521-0.233-0.521-0.521      C4.271,3.859,4.505,3.625,4.792,3.625z"/>
-<path fill="#FFFFFF" d="M8.604,6.375v14h10.875v-14H8.604z M17.543,15.584h-7.001c-0.287,0-0.521-0.232-0.521-0.521      c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52C18.063,15.352,17.83,15.584,17.543,15.584z M17.543,12.73      h-7.001c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.231,0.521,0.52      C18.063,12.498,17.83,12.73,17.543,12.73z M17.543,9.875h-7.001c-0.287,0-0.521-0.233-0.521-0.521s0.233-0.521,0.521-0.521      h7.001c0.287,0,0.521,0.234,0.521,0.521S17.83,9.875,17.543,9.875z"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_details.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M19,2.001H3c-0.553,0-1,0.447-1,1V19c0,0.554,0.447,1,1,1h16c0.553,0,1-0.446,1-1V3C20,2.448,19.553,2.001,19,2.001z        M12.703,17.606H9.781V9.857H8.676v-1.66h4.027V17.606z M11.242,7.12c-1.058,0-1.586-0.62-1.586-1.337       c0-0.731,0.487-1.336,1.586-1.336c1.132,0,1.584,0.714,1.584,1.336C12.826,6.61,12.154,7.12,11.242,7.12z"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_details_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M19,2.001H3c-0.553,0-1,0.447-1,1V19c0,0.554,0.447,1,1,1h16c0.553,0,1-0.446,1-1V3       C20,2.448,19.553,2.001,19,2.001z M12.703,17.606H9.781V9.857H8.676v-1.66h4.027V17.606z M11.242,7.12       c-1.058,0-1.586-0.62-1.586-1.337c0-0.731,0.487-1.336,1.586-1.336c1.132,0,1.584,0.714,1.584,1.336       C12.826,6.61,12.154,7.12,11.242,7.12z" fill="#FFFFFF"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_find.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<path d="M13.948,11.441c-0.162,0.263-0.882,1.491-2.495,2.5L18.509,21c0.57-0.284,1.64-0.857,2.491-2.505L13.948,11.441z"/>
-<path d="M13.958,6.764c-0.406-3.568-3.627-6.127-7.192-5.721c-3.57,0.404-6.132,3.625-5.724,7.192       c0.404,3.566,3.627,6.128,7.194,5.722C11.802,13.551,14.363,10.331,13.958,6.764z M8.123,12.964       c-3.019,0.345-5.746-1.823-6.087-4.841C1.69,5.105,3.858,2.379,6.878,2.038c3.017-0.344,5.742,1.821,6.086,4.84       C13.309,9.896,11.14,12.621,8.123,12.964z"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_find_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<path d="M13.948,11.441c-0.162,0.263-0.882,1.491-2.495,2.5L18.509,21c0.57-0.284,1.64-0.857,2.491-2.505       L13.948,11.441z" fill="#FFFFFF"/>
-<path d="M13.958,6.764c-0.406-3.568-3.627-6.127-7.192-5.721c-3.57,0.404-6.132,3.625-5.724,7.192       c0.404,3.566,3.627,6.128,7.194,5.722C11.802,13.551,14.363,10.331,13.958,6.764z M8.123,12.964       c-3.019,0.345-5.746-1.823-6.087-4.841C1.69,5.105,3.858,2.379,6.878,2.038c3.017-0.344,5.742,1.821,6.086,4.84       C13.309,9.896,11.14,12.621,8.123,12.964z" fill="#FFFFFF"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_next.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon points="17.211,4.643 17.211,10.58 9.666,4.85 9.666,10.585 2.02,4.85 2.02,17.146 9.666,11.507 9.666,17.146        17.211,11.512 17.211,17.146 20,17.146 20,4.643 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_next_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon fill="#FFFFFF" points="17.211,4.643 17.211,10.58 9.666,4.85 9.666,10.585 2.02,4.85 2.02,17.146 9.666,11.507        9.666,17.146 17.211,11.512 17.211,17.146 20,17.146 20,4.643 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_paste.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 22 22">
-<g>
-<g>
-<rect fill="none" width="22" height="22"/>
-<path d="M19.562,8.625H8.687v11.25h10.875V8.625z M10.624,11.083h7.001c0.287,0,0.521,0.235,0.521,0.522s-0.233,0.52-0.521,0.52      h-7.001c-0.287,0-0.521-0.232-0.521-0.52S10.337,11.083,10.624,11.083z M17.625,17.834h-7.001c-0.287,0-0.521-0.232-0.521-0.521      c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52C18.146,17.602,17.912,17.834,17.625,17.834z       M17.625,14.981h-7.001c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52      C18.146,14.749,17.912,14.981,17.625,14.981z"/>
-<g>
-<polygon points="14.801,7.479 14.801,2.579 11.879,2.579 13.909,4.371 4.224,4.371 6.255,2.579 3.331,2.579 3.331,17.141        7.643,17.141 7.643,7.479 "/>
-<polygon points="6.775,3.487 7.705,2.556 6.368,1.218 11.766,1.218 10.539,2.443 11.605,3.51 "/>
-</g>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_paste_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 22 22">
-<g>
-<g>
-<rect fill="none" width="22" height="22"/>
-<path fill="#FFFFFF" d="M19.562,8.625H8.687v11.25h10.875V8.625z M10.624,11.083h7.001c0.287,0,0.521,0.235,0.521,0.522      s-0.233,0.52-0.521,0.52h-7.001c-0.287,0-0.521-0.232-0.521-0.52S10.337,11.083,10.624,11.083z M17.625,17.834h-7.001      c-0.287,0-0.521-0.232-0.521-0.521c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52      C18.146,17.602,17.912,17.834,17.625,17.834z M17.625,14.981h-7.001c-0.287,0-0.521-0.232-0.521-0.521      c0-0.287,0.233-0.52,0.521-0.52h7.001c0.287,0,0.521,0.232,0.521,0.52C18.146,14.749,17.912,14.981,17.625,14.981z"/>
-<g>
-<polygon fill="#FFFFFF" points="14.801,7.479 14.801,2.579 11.879,2.579 13.909,4.371 4.224,4.371 6.255,2.579 3.331,2.579        3.331,17.141 7.643,17.141 7.643,7.479 "/>
-<polygon fill="#FFFFFF" points="6.775,3.487 7.705,2.556 6.368,1.218 11.766,1.218 10.539,2.443 11.605,3.51 "/>
-</g>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_play.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon points="3.729,2.75 3.729,19.25 18.271,11.079 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_play_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<polygon fill="#FFFFFF" points="3.729,2.75 3.729,19.25 18.271,11.079 "/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_previous.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon points="19.99,4.955 12.344,10.69 12.344,4.955 4.797,10.686 4.797,4.748 2.01,4.748 2.01,17.252 4.797,17.252        4.797,11.617 12.344,17.252 12.344,11.611 19.99,17.252 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_previous_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="none" height="22" width="22"/>
-<polygon fill="#FFFFFF" points="19.99,4.955 12.344,10.69 12.344,4.955 4.797,10.686 4.797,4.748 2.01,4.748 2.01,17.252        4.797,17.252 4.797,11.617 12.344,17.252 12.344,11.611 19.99,17.252 "/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_stop.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect height="14" width="14" x="4" y="4"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_indi_tb_stop_white.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" viewBox="0 0 22 22" width="22">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="#FFFFFF" height="14" width="14" x="4" y="4"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_ir_transparent.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="6" viewBox="0 0 6 6" width="6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<switch>
-<foreignObject content="structured text" height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"/>
-<g>
-<g>
-<rect fill="#FFFFFF" fill-opacity="0" height="5" stroke="#FFFFFF" stroke-opacity="0" width="5" x="0.5" y="0.5"/>
-</g>
-</g>
-</switch>
-</svg>
--- a/internetradio2.0/mbm/qgn_menu_irradio.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 44 44">
-<g>
-<g>
-<g>
-<path d="M33.216,16.98c-1.104,0-2,0.896-2,2v12.941c0,1.104,0.896,2,2,2h3.451c1.104,0,2-0.896,2-2V18.98c0-1.104-0.896-2-2-2       H33.216z"/>
-</g>
-<g>
-<path d="M7.333,16.98c-1.104,0-2,0.896-2,2v12.941c0,1.104,0.896,2,2,2h3.451c1.104,0,2-0.896,2-2V18.98c0-1.104-0.896-2-2-2       H7.333z"/>
-</g>
-<g>
-<path d="M8.196,25.45c0,3.688,1.436,7.155,4.043,9.763c2.607,2.606,6.073,4.042,9.76,4.042c7.611,0,13.804-6.192,13.804-13.805       c0-7.611-6.192-13.803-13.804-13.803C14.388,11.647,8.196,17.839,8.196,25.45z"/>
-</g>
-<circle fill="#635E54" cx="22" cy="25.45" r="12.941"/>
-<path fill="#AAA096" d="M11.571,31.533l21.557-10.778c-1.836-4.334-6.133-7.382-11.128-7.382      c-6.66,0-12.079,5.418-12.079,12.078C9.921,27.668,10.525,29.745,11.571,31.533z"/>
-<g>
-<path fill="#4F4A44" d="M18.567,13.336h-1.084c-0.516,0.193-1.021,0.41-1.503,0.664v1.063c0,0,0,0.862-0.863,0.862       s-1.727,0-1.727,0s-0.047,0-0.114-0.012c-2.199,2.014-3.699,4.77-4.098,7.878c0.434,0.435,0.763,0.764,0.763,0.764       s-0.862,0.86,0,1.725c0.863,0.862,4.314,4.313,4.314,4.313s-0.863,0.863,0,1.726c0.803,0.802,1.726,1.727,1.726,1.727v2.858       c1.319,0.695,2.772,1.161,4.313,1.364v-0.771c0.863,0,1.725-0.864,1.725-1.727v-4.313c0-0.762-0.913-1.726-1.725-1.726       s-1.726,0-1.726,0s-0.337-0.337-0.863-0.862c-0.526-0.527-1.225-0.504-1.725,0c-0.5,0.501-0.863,0.862-0.863,0.862       l-1.726-1.726c0.427-0.427,0.46-1.249,0-1.709c-0.46-0.461-0.861-0.88-0.861-0.88c-0.446-0.444-0.446-1.282,0-1.726       c0.442-0.444,1.279-0.444,1.724,0l0.863,0.865v1.725c0,0.431,0.863,0.431,0.863,0v-1.725l1.725-2.589c0,0,0,0,0.863,0       c0.862,0,1.726-0.864,1.726-1.727c0-0.861-0.863-1.726-1.726-1.726c-0.806,0-0.431,0-0.863,0s-0.432-0.864,0-0.864       s1.725,0,1.725,0s-0.001,0,0.863,0.864c0.432,0.433,1.294,0.431,1.726,0c0.431-0.432,0.429-1.294,0-1.726       C21.949,16.719,18.567,13.336,18.567,13.336z M34.676,22.826h-1.442l-1.726,1.728c0,0-1.725,0-2.587,0       c-0.863,0-1.727,0.86-1.727,1.725v2.588c0,0.825,0.921,1.725,1.727,1.725c0,0.009,0.862,0,0.862,0s0,0.863,0,1.726       c0,0.863,0.863,0.863,0.863,0.863v1.883c2.631-2.369,4.295-5.791,4.295-9.612C34.941,24.554,34.848,23.674,34.676,22.826z        M28.921,23.688c0.862,0,0.862-0.862,0.862-0.862v-1.722c0,0,0.005-0.866,0.864-0.866h2.586c0,0,0,0.863,0.863,0.863       c0.027,0,0.052,0,0.079,0c-1.28-3.587-4.092-6.436-7.658-7.765h-0.187l-1.725,1.726v2.591l0.696,0.696       c0.222,0.224,0.641,0.224,0.862,0c0.223-0.222,0.223-0.641,0-0.863l-0.255-0.254c-0.452-0.453,0-0.875,0-0.875       s0.421-0.433,0.854,0c0.431,0.432,0.86,0.867,0.86,0.867s-1.754,1.756-2.154,2.153c-0.399,0.401,0,0.864,0,0.864l0.861,0.863       c0,0,0,0.861,0,1.722c0,0.862,0.863,0.862,0.863,0.862S28.058,23.688,28.921,23.688z"/>
-<path fill="#FFFDFC" d="M18.288,13.057c-1.161,0.346-2.251,0.857-3.251,1.495c-0.087,0.229-0.285,0.474-0.717,0.501       c-3.171,2.345-5.239,6.097-5.257,10.342c0.005,0.006,0.009,0.013,0.016,0.02c0.862,0.863,4.313,4.313,4.313,4.313       s-0.861,0.863,0,1.725c0.803,0.803,1.726,1.728,1.726,1.728v3.217c1.301,0.82,2.754,1.423,4.313,1.738V36.63       c0.863,0,1.726-0.862,1.726-1.725v-4.314c0-0.765-0.913-1.727-1.726-1.727c-0.813,0-1.725,0-1.725,0s-0.337-0.336-0.862-0.861       c-0.526-0.527-1.225-0.502-1.726,0c-0.5,0.501-0.863,0.861-0.863,0.861L12.53,27.14c0.425-0.427,0.458-1.248,0-1.709       c-0.461-0.46-0.864-0.879-0.864-0.879c-0.444-0.446-0.444-1.282,0-1.726c0.443-0.445,1.281-0.445,1.725,0l0.863,0.862v1.726       c0,0.431,0.863,0.431,0.863,0v-1.726l1.726-2.589c0,0,0,0,0.862,0c0.863,0,1.725-0.861,1.725-1.724       c0-0.864-0.862-1.727-1.725-1.727c-0.806,0-0.432,0-0.862,0c-0.432,0-0.432-0.862,0-0.862c0.431,0,1.725,0,1.725,0       s-0.002-0.001,0.862,0.862c0.431,0.432,1.295,0.432,1.726,0c0.431-0.431,0.43-1.296,0-1.725       C21.105,15.873,19.258,14.027,18.288,13.057z M34.891,24.443c-0.088-0.143-0.093-0.299-0.035-0.446       c-0.078-0.695-0.218-1.374-0.403-2.033h-2.081l-1.725,1.725c0,0-1.726,0-2.589,0s-1.727,0.863-1.727,1.726v2.588       c0,0.824,0.922,1.726,1.727,1.726c0,0.008,0.863,0,0.863,0s0,0.863,0,1.725c0,0.863,0.862,0.863,0.862,0.863v3.459       c3.128-2.362,5.158-6.102,5.158-10.324C34.941,25.111,34.916,24.777,34.891,24.443z M28.058,22.826       c0.863,0,0.863-0.862,0.863-0.862v-1.723c0,0,0.004-0.867,0.864-0.867h2.586c0,0,0,0.864,0.862,0.864c0.206,0,0.411,0,0.607,0       c-1.606-3.645-4.843-6.396-8.785-7.351l-1.313,1.311v2.591l0.696,0.695c0.224,0.222,0.641,0.222,0.863,0       c0.222-0.22,0.222-0.639,0-0.861l-0.255-0.255c-0.453-0.453,0-0.875,0-0.875s0.422-0.434,0.853,0       c0.431,0.433,0.861,0.867,0.861,0.867s-1.756,1.755-2.155,2.154c-0.399,0.4,0,0.863,0,0.863l0.863,0.864c0,0,0,0.858,0,1.723       c0,0.862,0.861,0.862,0.861,0.862S27.194,22.826,28.058,22.826z"/>
-</g>
-<path fill="#4F4A44" d="M32.756,18.252c-0.241,0.153-0.403,0.421-0.403,0.728v12.941c0,0.307,0.162,0.574,0.403,0.728      c1.38-2.059,2.186-4.534,2.186-7.199C34.941,22.786,34.136,20.311,32.756,18.252z"/>
-<path fill="#4F4A44" d="M11.245,32.649c0.241-0.153,0.402-0.421,0.402-0.728V18.98c0-0.307-0.161-0.574-0.402-0.728      c-1.38,2.058-2.186,4.533-2.186,7.197C9.059,28.115,9.865,30.591,11.245,32.649z"/>
-<path d="M22,4.313L22,4.313L22,4.313c-11.155,0-19.412,4.399-19.412,14.667c0,6.284,0.062,8.442,2.588,10.353h3.02v-5.607h-3.02      c0,0-0.062-0.831-0.062-2.218c0-9.298,7.224-13.496,16.885-13.496v0c9.661,0,16.885,4.198,16.885,13.496      c0,1.388-0.062,2.218-0.062,2.218h-3.02v5.607h3.02c2.527-1.911,2.589-6.532,2.589-10.353C41.412,8.713,33.154,4.313,22,4.313z"/>
-<g>
-<path fill="#D9D9D9" d="M3.451,18.98L3.451,18.98c0,6.094,0.102,7.905,2.045,9.49c0.349,0,1.087,0,1.837,0       c0-1.011,0-2.872,0-3.883c-0.88,0-2.996,0-2.996,0l-0.021-0.799l-0.064-2.282c0-8.991,6.635-14.359,17.748-14.359       c11.113,0,17.748,5.369,17.748,14.359l-0.088,3.12l-0.837-0.04c0,0-1.276,0-2.156,0c0,1.011,0,2.872,0,3.883       c0.737,0,1.435,0,1.806,0c2.059-1.809,2.076-6.225,2.076-9.49C40.549,6.97,28.928,5.176,22,5.176S3.451,6.97,3.451,18.98z"/>
-</g>
-<rect x="7.333" y="18.98" fill="#6EC3FF" width="3.451" height="12.941"/>
-<polygon fill="#2882C8" points="9.921,18.98 9.921,31.059 7.333,31.059 7.333,31.922 10.784,31.922 10.784,18.98 "/>
-<rect x="33.216" y="18.98" fill="#6EC3FF" width="3.451" height="12.941"/>
-<polygon fill="#2882C8" points="35.804,18.98 35.804,31.059 33.216,31.059 33.216,31.922 36.667,31.922 36.667,18.98 "/>
-<path d="M22,4.314L22,4.314L22,4.314c-11.57,0-17.605,4.866-18.549,12.078h4.745C9.47,10.775,13.634,8.602,22,8.585l0,0v0.001      c8.367,0.016,12.53,2.189,13.803,7.806h4.745C39.604,9.18,33.569,4.314,22,4.314z"/>
-<rect fill="none" width="44" height="44"/>
-<g>
-<path fill="#595959" d="M3.854,15.529c1.169,0,2.892,0,3.681,0c1.522-5.439,5.893-7.79,14.463-7.807       c8.574,0.017,12.945,2.368,14.466,7.807c0.789,0,2.511,0,3.681,0C38.075,6.571,27.988,5.176,22,5.176       C16.012,5.176,5.925,6.571,3.854,15.529z"/>
-</g>
-<rect x="36.667" y="24.588" fill="#8A8A8A" width="0.862" height="3.883"/>
-<path fill="#383838" d="M40.176,15.529h-1.614c0.125,0.281,0.237,0.57,0.343,0.863h1.438      C40.295,16.097,40.24,15.81,40.176,15.529z"/>
-<path fill="#383838" d="M3.657,16.392h1.438c0.105-0.293,0.218-0.582,0.342-0.863H3.824C3.76,15.81,3.705,16.097,3.657,16.392z"/>
-<rect x="6.471" y="24.588" fill="#8A8A8A" width="0.863" height="3.883"/>
-<path fill="#8A8A8A" d="M22,5.176c-5.988,0-16.075,1.395-18.146,10.353c0.069-0.297,0.15-0.582,0.235-0.863h2.828      c1.797-5.374,6.461-7.79,15.079-7.807c1.701,0.003,3.243,0.104,4.644,0.298l2.47-1.234C26.583,5.348,24.051,5.176,22,5.176z       M21.999,7.723c1.155,0.002,2.224,0.053,3.23,0.142l0.009-0.004"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_prop_ir_list_play.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 76 76">
-<g>
-<g>
-<rect fill="none" width="76" height="76"/>
-<path fill-opacity="0.5" stroke-opacity="0.5" d="M68.156,60.22c0,4.349-3.526,7.875-7.875,7.875H15.656      c-4.349,0-7.875-3.526-7.875-7.875V15.595c0-4.351,3.526-7.875,7.875-7.875h44.625c4.349,0,7.875,3.524,7.875,7.875V60.22z"/>
-<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="261.5049" y1="5.1226" x2="288.5793" y2="32.1971" gradientTransform="matrix(1 0 0 1 -244.125 18.9697)">
-<stop offset="0" style="stop-color:#848383"/>
-<stop offset="0.1914" style="stop-color:#787777"/>
-<stop offset="1" style="stop-color:#494949"/>
-</linearGradient>
-<path fill="url(#XMLID_7_)" d="M24.736,19.818c-2.066-1.18-3.836-0.107-3.836,1.812c0,1.918,0,30.647,0,32.271      s2.064,2.805,3.54,2.065s30.187-15.761,31.72-16.671c1.771-1.053,1.609-2.584-0.295-3.542      C54.273,34.952,24.736,19.818,24.736,19.818z"/>
-<path d="M21.339,55.238c0,0,2.134,1.453,3.206,0.906c1.071-0.545,31.854-17.098,31.854-17.098s0.604-1.995,0.201-2.56      L21.339,55.238z"/>
-<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="261.3887" y1="4.7949" x2="288.6448" y2="32.0509" gradientTransform="matrix(1 0 0 1 -244.125 18.9697)">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1084" style="stop-color:#F1F1F1"/>
-<stop offset="1" style="stop-color:#848383"/>
-</linearGradient>
-<path fill="url(#XMLID_8_)" d="M56.398,39.049c0,0,0.807-1.129-0.402-1.855c-1.21-0.726-31.29-15.886-32.258-16.451      c-0.968-0.563-1.775,0.08-1.775,1.048c0,0.969,0,30.727,0,31.695c0,1.531,0.646,2.498,0.646,2.498s-1.921-0.576-2.016-2.338      c-0.054-0.98-0.012-30.964,0-32.097c0.015-1.532,1.369-3.308,3.789-2.099c2.42,1.21,31.625,15.949,32.339,16.451      C58.898,37.437,56.398,39.049,56.398,39.049z"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_prop_ir_list_stopped.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 76 76">
-<g>
-<g>
-<rect fill="none" width="76" height="76"/>
-<path fill-opacity="0.5" stroke-opacity="0.5" d="M68.156,60.22c0,4.348-3.526,7.875-7.875,7.875H15.656      c-4.349,0-7.875-3.527-7.875-7.875V15.595c0-4.351,3.526-7.875,7.875-7.875h44.625c4.349,0,7.875,3.524,7.875,7.875V60.22z"/>
-<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="22.1313" y1="37.9731" x2="54.4346" y2="37.9731">
-<stop offset="0" style="stop-color:#848383"/>
-<stop offset="0.1914" style="stop-color:#787777"/>
-<stop offset="1" style="stop-color:#494949"/>
-</linearGradient>
-<path fill="url(#XMLID_3_)" d="M54.435,50.841c0,1.813-1.47,3.283-3.282,3.283H25.414c-1.813,0-3.283-1.47-3.283-3.283V25.104      c0-1.813,1.47-3.283,3.283-3.283h25.738c1.813,0,3.282,1.47,3.282,3.283V50.841z"/>
-<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="37.9355" y1="21.7769" x2="37.9353" y2="54.0269">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.5965" style="stop-color:#B3B2B2"/>
-<stop offset="1" style="stop-color:#848383"/>
-</linearGradient>
-<path fill="url(#XMLID_4_)" d="M53.838,23.312c0,0-0.795-1.391-2.285-1.491c-1.492-0.1-25.246,0-26.737,0      s-2.783,1.689-2.783,2.882s0,24.944,0,26.039s1.093,3.282,2.584,3.282s-0.596,0.199-0.994-3.28c-0.158-1.382,0-24.153,0-25.644      s0.696-1.789,1.789-1.789S53.838,23.312,53.838,23.312z"/>
-<path d="M23.821,52.335l1.593,1.789c0,0,24.051,0,25.939,0s3.08-1.59,3.08-2.883s0-25.544,0-26.638s-0.596-1.292-0.596-1.292      l-1.689,0.099c0,0,0,25.842,0,27.432c0,1.591-0.796,1.591-1.591,1.591S23.821,52.335,23.821,52.335z"/>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mbm/qgn_prop_set_apps_ir.svg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 42 29">
-<g>
-<g>
-<rect fill="none" width="42" height="29"/>
-<g>
-<g>
-<path d="M29.118,11.427c-0.799,0-1.448,0.648-1.448,1.448v9.367c0,0.799,0.649,1.446,1.448,1.446h2.498        c0.8,0,1.447-0.647,1.447-1.446v-9.367c0-0.799-0.647-1.448-1.447-1.448H29.118z"/>
-</g>
-<g>
-<path d="M10.384,11.427c-0.799,0-1.447,0.648-1.447,1.448v9.367c0,0.799,0.648,1.446,1.447,1.446h2.499        c0.799,0,1.447-0.647,1.447-1.446v-9.367c0-0.799-0.648-1.448-1.447-1.448H10.384z"/>
-</g>
-<g>
-<path d="M11.009,17.559c0,2.669,1.04,5.179,2.926,7.065C15.822,26.51,18.331,27.55,21,27.55c5.508,0,9.99-4.481,9.99-9.991        c0-5.509-4.48-9.991-9.99-9.991C15.491,7.568,11.009,12.049,11.009,17.559z"/>
-</g>
-<circle fill="#635E54" cx="21" cy="17.558" r="9.367"/>
-<path fill="#AAA096" d="M13.452,21.961l15.603-7.801C27.726,11.023,24.616,8.817,21,8.817c-4.82,0-8.743,3.921-8.743,8.743       C12.258,19.163,12.695,20.667,13.452,21.961z"/>
-<g>
-<path fill="#4F4A44" d="M18.516,8.79h-0.785c-0.374,0.14-0.739,0.297-1.088,0.48v0.77c0,0,0,0.624-0.625,0.624s-1.25,0-1.25,0        s-0.034,0-0.083-0.009c-1.591,1.458-2.677,3.453-2.966,5.702c0.314,0.314,0.552,0.553,0.552,0.553s-0.624,0.623,0,1.249        c0.625,0.624,3.122,3.121,3.122,3.121s-0.624,0.624,0,1.249c0.582,0.58,1.25,1.25,1.25,1.25v2.069        c0.955,0.503,2.006,0.84,3.122,0.986v-0.558c0.625,0,1.249-0.625,1.249-1.251v-3.121c0-0.551-0.661-1.249-1.249-1.249        c-0.587,0-1.249,0-1.249,0s-0.244-0.243-0.625-0.624c-0.381-0.382-0.887-0.364-1.249,0c-0.362,0.362-0.625,0.624-0.625,0.624        l-1.249-1.249c0.309-0.31,0.333-0.903,0-1.237c-0.333-0.333-0.624-0.636-0.624-0.636c-0.323-0.321-0.323-0.929,0-1.25        c0.32-0.321,0.926-0.321,1.248,0l0.625,0.626v1.249c0,0.312,0.625,0.312,0.625,0V16.91l1.249-1.874c0,0,0,0,0.625,0        c0.624,0,1.249-0.625,1.249-1.25c0-0.623-0.625-1.249-1.249-1.249c-0.583,0-0.312,0-0.625,0c-0.313,0-0.313-0.626,0-0.626        c0.313,0,1.248,0,1.248,0s0,0,0.625,0.626c0.313,0.313,0.937,0.312,1.25,0c0.312-0.313,0.311-0.937,0-1.25        C20.963,11.238,18.516,8.79,18.516,8.79z M30.175,15.659h-1.043l-1.25,1.251c0,0-1.248,0-1.872,0s-1.251,0.622-1.251,1.248        v1.873c0,0.597,0.668,1.248,1.251,1.248c0,0.007,0.624,0,0.624,0s0,0.625,0,1.25s0.625,0.625,0.625,0.625v1.362        c1.904-1.715,3.108-4.191,3.108-6.957C30.367,16.91,30.3,16.272,30.175,15.659z M26.01,16.282        c0.624,0,0.624-0.623,0.624-0.623v-1.246c0,0,0.003-0.628,0.625-0.628h1.871c0,0,0,0.625,0.625,0.625c0.021,0,0.039,0,0.058,0        c-0.927-2.596-2.962-4.658-5.542-5.62h-0.136l-1.249,1.25v1.875l0.503,0.504c0.161,0.162,0.464,0.162,0.624,0        c0.162-0.161,0.162-0.464,0-0.625l-0.185-0.184c-0.327-0.328,0-0.633,0-0.633s0.305-0.313,0.618,0        c0.312,0.313,0.622,0.627,0.622,0.627s-1.269,1.271-1.56,1.558c-0.289,0.291,0,0.626,0,0.626l0.624,0.625c0,0,0,0.622,0,1.246        c0,0.623,0.624,0.623,0.624,0.623S25.386,16.282,26.01,16.282z"/>
-<path fill="#FFFDFC" d="M18.313,8.588c-0.84,0.25-1.629,0.62-2.353,1.082c-0.063,0.167-0.207,0.343-0.52,0.363        c-2.295,1.697-3.792,4.413-3.805,7.486c0.003,0.003,0.007,0.009,0.012,0.015c0.624,0.623,3.122,3.122,3.122,3.122        s-0.624,0.624,0,1.248c0.581,0.58,1.249,1.251,1.249,1.251v2.328c0.941,0.593,1.993,1.029,3.122,1.258v-1.09        c0.625,0,1.25-0.625,1.25-1.249v-3.122c0-0.554-0.661-1.25-1.25-1.25c-0.588,0-1.249,0-1.249,0s-0.244-0.244-0.624-0.623        c-0.381-0.381-0.887-0.363-1.25,0c-0.362,0.362-0.625,0.623-0.625,0.623l-1.249-1.248c0.308-0.31,0.332-0.903,0-1.236        c-0.333-0.334-0.625-0.638-0.625-0.638c-0.321-0.322-0.321-0.928,0-1.248c0.321-0.322,0.927-0.322,1.249,0l0.625,0.623v1.25        c0,0.312,0.625,0.312,0.625,0v-1.25l1.249-1.873c0,0,0,0,0.625,0s1.248-0.624,1.248-1.248c0-0.625-0.624-1.25-1.248-1.25        c-0.583,0-0.313,0-0.625,0c-0.312,0-0.312-0.624,0-0.624s1.249,0,1.249,0s-0.001,0,0.624,0.624        c0.312,0.313,0.938,0.313,1.249,0c0.312-0.312,0.312-0.938,0-1.248C20.353,10.626,19.016,9.29,18.313,8.588z M30.331,16.829        c-0.064-0.104-0.067-0.216-0.025-0.322c-0.057-0.504-0.157-0.995-0.292-1.472h-1.506l-1.249,1.249c0,0-1.249,0-1.873,0        c-0.625,0-1.251,0.623-1.251,1.249v1.873c0,0.596,0.667,1.249,1.251,1.249c0,0.005,0.624,0,0.624,0s0,0.624,0,1.248        c0,0.625,0.624,0.625,0.624,0.625v2.503c2.265-1.709,3.733-4.416,3.733-7.472C30.367,17.313,30.349,17.071,30.331,16.829z         M25.386,15.659c0.624,0,0.624-0.624,0.624-0.624v-1.247c0,0,0.003-0.628,0.625-0.628h1.872c0,0,0,0.625,0.623,0.625        c0.15,0,0.299,0,0.44,0c-1.162-2.638-3.505-4.629-6.359-5.32l-0.95,0.949v1.875l0.503,0.503c0.163,0.161,0.465,0.161,0.625,0        c0.161-0.159,0.161-0.463,0-0.624l-0.185-0.184c-0.328-0.328,0-0.634,0-0.634s0.305-0.314,0.617,0        c0.313,0.313,0.623,0.628,0.623,0.628s-1.271,1.271-1.559,1.559c-0.289,0.29,0,0.625,0,0.625l0.624,0.626c0,0,0,0.621,0,1.247        c0,0.624,0.624,0.624,0.624,0.624S24.759,15.659,25.386,15.659z"/>
-</g>
-<path fill="#4F4A44" d="M28.785,12.349c-0.173,0.111-0.291,0.304-0.291,0.526v9.367c0,0.223,0.118,0.415,0.291,0.526       c0.999-1.49,1.582-3.281,1.582-5.21S29.784,13.838,28.785,12.349z"/>
-<path fill="#4F4A44" d="M13.216,22.769c0.174-0.11,0.291-0.304,0.291-0.526v-9.367c0-0.222-0.116-0.416-0.291-0.526       c-0.999,1.489-1.583,3.281-1.583,5.209C11.634,19.487,12.217,21.279,13.216,22.769z"/>
-<path d="M21,2.259L21,2.259L21,2.259c-8.074,0-14.05,3.184-14.05,10.616c0,4.548,0.045,6.11,1.873,7.493h2.186v-4.058H8.823       c0,0-0.045-0.602-0.045-1.606c0-6.729,5.229-9.767,12.222-9.767l0,0c6.992,0,12.221,3.038,12.221,9.767       c0,1.006-0.044,1.606-0.044,1.606h-2.188v4.058h2.188c1.828-1.383,1.873-4.728,1.873-7.493C35.051,5.444,29.073,2.259,21,2.259       z"/>
-<g>
-<path fill="#D9D9D9" d="M7.575,12.875L7.575,12.875c0,4.411,0.073,5.722,1.48,6.868c0.253,0,0.787,0,1.329,0        c0-0.73,0-2.078,0-2.811c-0.636,0-2.168,0-2.168,0l-0.016-0.578l-0.046-1.651C8.154,8.196,12.957,4.311,21,4.311        s12.846,3.886,12.846,10.393l-0.064,2.258l-0.604-0.028c0,0-0.925,0-1.562,0c0,0.732,0,2.079,0,2.811c0.534,0,1.038,0,1.307,0        c1.49-1.31,1.503-4.505,1.503-6.868c0-8.693-8.411-9.991-13.425-9.991C15.986,2.884,7.575,4.182,7.575,12.875z"/>
-</g>
-<rect x="10.384" y="12.875" fill="#6EC3FF" width="2.499" height="9.367"/>
-<polygon fill="#2882C8" points="12.258,12.875 12.258,21.617 10.384,21.617 10.384,22.242 12.883,22.242 12.883,12.875 "/>
-<rect x="29.118" y="12.875" fill="#6EC3FF" width="2.498" height="9.367"/>
-<polygon fill="#2882C8" points="30.992,12.875 30.992,21.617 29.118,21.617 29.118,22.242 31.616,22.242 31.616,12.875 "/>
-<path d="M21,2.26L21,2.26L21,2.26c-8.374,0-12.742,3.522-13.425,8.742h3.434c0.922-4.065,3.936-5.638,9.991-5.65l0,0l0,0       c6.056,0.012,9.069,1.585,9.99,5.65h3.435C33.742,5.782,29.374,2.26,21,2.26z"/>
-<g>
-<path fill="#595959" d="M7.866,10.377c0.846,0,2.094,0,2.665,0c1.102-3.937,4.266-5.638,10.468-5.65        c6.206,0.012,9.37,1.713,10.471,5.65c0.57,0,1.816,0,2.664,0C32.636,3.894,25.334,2.884,21,2.884        C16.667,2.884,9.366,3.894,7.866,10.377z"/>
-</g>
-<rect x="31.616" y="16.934" fill="#8A8A8A" width="0.624" height="2.811"/>
-<path fill="#383838" d="M34.156,10.377h-1.168c0.09,0.204,0.171,0.413,0.247,0.625h1.042       C34.241,10.789,34.202,10.581,34.156,10.377z"/>
-<path fill="#383838" d="M7.724,11.002h1.041c0.077-0.212,0.158-0.421,0.248-0.625H7.845       C7.798,10.581,7.759,10.789,7.724,11.002z"/>
-<rect x="9.761" y="16.934" fill="#8A8A8A" width="0.625" height="2.811"/>
-<path fill="#8A8A8A" d="M21,2.884c-4.334,0-11.635,1.01-13.134,7.493c0.05-0.215,0.109-0.421,0.17-0.624h2.047       c1.301-3.89,4.676-5.639,10.914-5.651c1.231,0.002,2.346,0.075,3.362,0.216l1.787-0.894C24.317,3.009,22.484,2.884,21,2.884z        M21,4.728c0.836,0.001,1.609,0.038,2.337,0.103l0.007-0.003"/>
-</g>
-</g>
-</g>
-</svg>
--- a/internetradio2.0/mcpplugininc/irmcpplugin.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Plugin used by Music content publisher to publish data and actions
-*                to Home Screen/Matrix Menu/Any component requiring them.
-*
-*/
-
-
-#ifndef IRMCPPLUGIN_H
-#define IRMCPPLUGIN_H
-
-#include "mcpplugin.h"
-#include "mcppluginobserver.h"
-#include "iractiveidleengnotifyhandler.h"
-
-class CIRActiveIdleEng;
-
-class CIRMetaData;
-#define KMAXLENGTH 256
-
-
-/**
- * IR Content Publisher plugin is publishes data and actions for 
- * Home screen and Matrix menu.
- * 
- * The plugin uses existing Active idle engine for getting information from VRA. 
- * 
- * The plugin is currently loaded by Music Content Publisher. 
- */
-NONSHARABLE_CLASS( CIRMCPPlugin ) : public CMCPPlugin,
-                                    public MIRActiveIdleEngNotifyHandler
-    {
-public:
-    /**
-     * Two-phase constructor. 
-     * 
-     * @param aObserver The plugin observer providing also the publishing API
-     * @return A pointer to new instance of CIRMCPPlugin 
-     */
-    static CIRMCPPlugin* NewL( MMCPPluginObserver* aObserver );
-    
-    /**
-     * Destructor.
-     */
-    ~CIRMCPPlugin();
-
-// from base class CMCPPlugin
-    void Deactivate();
-
-// from base class MIRActiveIdleEngNotifyHandler    
-   void HandleChannelChangeL();
-    void HandleMetaDataReceivedL( const CIRMetaData& aMetaData );
-    void HandleVolumeChangeL( const TInt aVolume );
-    void HandlePlayStopL( TIRStopPlayState aState );
-    void HandleApplicationRunningStateChangeL(  const TIRPSApplicationRunningState aRunningState );
-    void HandleBufferingStateL(TIRBufferingState aState );
-
-private:
-
-    /**
-     * Installs (publishes) a given VR Action Handler command to given destination.
-     * 
-     * @param aCommand The command to be installed to given destination.
-     * @param aDestination The destination where the given command is installed.
-     */
-    void InstallIRCommandActionL( const TDesC& aCommand, TMCPTriggerDestination aDestination );
-
-    /**
-     * Activates the plugin and publishes the actions and information accordingly.
-     */
-    void ActivateL();
-    
-    
-    
-    /**
-    * Publishes the actions and information of last played station.
-	*/
-	void PublishLastPlayedWidgetItemsL();
-    
-    
-    
-private:
-    /**
-     * C++ constructor.
-     * 
-     * @param aObserver The plugin observer providing also the publishing API
-     */
-    CIRMCPPlugin( MMCPPluginObserver* aObserver );
-    
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-    
-    /**
-     * Searches and adds the plugin's resource file to the environment.
-     */
-    void InitializeResourceLoadingL();
-
-private:
-    /**
-     * The observer providing the publishing API.
-     * Not owned.
-     */
-    MMCPPluginObserver* iObserver;
-
-    /**
-     * Active idle engine used for reading VRA states.
-     * Owned.
-     */
-    CIRActiveIdleEng* iEngine;
-    
-    /** 
-     * Last played text.
-     * Owned. 
-     */
-    HBufC* iLastPlayedText;
-
-    /**
-     * State indicator, the plugin can be active or inactive. 
-     */
-    TBool iActive;
-    
-    /** resource offset. */
-    TInt iResourceOffset;
-    
-    /**
-     * Radio Text overrides PS name, and we have both available.
-     * So we need to keep track which one is being currently published.  
-     */
-    TBool iShowingRDSRadioText;
-    
-    //Added by Snigdha
-    
-     /**
-     * Current meta data information.
-     * Owned.
-     */
-    CIRMetaData*  iMetaData;
-    
-     // Meta data info
-    TBuf 	<KMAXLENGTH> iChannelName;
-    TInt 	iPresetIndex;
-    
-    /** Internet Radio application running state */
-    TIRPSApplicationRunningState        iRunningState;
-    
-    TInt iPlayingState;
-    
-      /** 
-     * Last played text.
-     * Owned. 
-     */
-    HBufC* iBufferingText;
-
-
-    };
-
-#endif /* IRMCPPLUGIN_H */
--- a/internetradio2.0/mcpplugininc/mcpplugin.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Music Content Publisher Plugin interface definition
-*
-*/
-
-
-#ifndef C_MCPPLUGIN_H
-#define C_MCPPLUGIN_H
-
-#include <e32base.h>
-
-// CLASS DECLARATION
-/**
- * The interface class for all MCP plugins
- * Plugins are responsible for updating data and actions to the Music Widget
- * and Matrix Menu.
- *
- * The implementator of this interface should implement Deactivate function that 
- * will be invoked when the plugin is preempted by another plugin.
- *
- * IMPORTANT NOTE: 
- * It is recommended that the plugin does not publish data while not active.
- * After calling Deactivate on the plugin it should chnage its state to
- * not active.
- *
- */
-class CMCPPlugin : public CBase
-    {
-public:
-
-    /** 
-     * Triggers Deactivation Process.
-     * Note: This should return immediatelly.
-     *       Just a change of state variable is recommended.
-     */
-    virtual void Deactivate() = 0;
-    };
-
-#endif // C_MCPPLUGIN_H
\ No newline at end of file
--- a/internetradio2.0/mcpplugininc/mcppluginobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Manages MCP plugins, and content publishing.
-*
-*/
-
-
-#ifndef M_MCPPLUGINOBSERVER_H
-#define M_MCPPLUGINOBSERVER_H
-
-class CLiwDefaultMap;
-class CMCPPlugin;
-
-
-/**
- * Music Widget Image Destinations.
- * 9.1 Music Widget has two panels, The left panel contains an image:
- * TMCPImageDestination:EMWImage1, the right panel contains three text
- * rows: TMCPTextDestination:EMWText1, TMCPTextDestination:EMWText2, 
- * TMCPTextDestination:EMWText3. Actions can be installed into this
- * two panels to the triggers: TMCPTriggerDestination:EMWTrigger1, 
- * TMCPTriggerDestination:EMWTrigger2.
- */
-enum TMCPImageDestination
-    {
-     EMusicWidgetImage1 = 1000//do not change
-    };
-
-/**
- * Music Widget Text Destinations.
- * 9.1 Music Widget has two panels, The left panel contains an image:
- * TMCPImageDestination:EMWImage1, the right panel contains three text
- * rows: TMCPTextDestination:EMWText1, TMCPTextDestination:EMWText2, 
- * TMCPTextDestination:EMWText3. Actions can be installed into this
- * two panels to the triggers: TMCPTriggerDestination:EMWTrigger1, 
- * TMCPTriggerDestination:EMWTrigger2.
- */
-enum TMCPTextDestination
-    {
-     EMusicWidgetText1 = 2000//do not change
-     ,EMusicWidgetText2
-     ,EMusicWidgetText3
-    };
-
-/**
- * Music Widget Action Destinations.
- * 9.1 Music Widget has two panels, The left panel contains an image:
- * TMCPImageDestination:EMWImage1, the right panel contains three text
- * rows: TMCPTextDestination:EMWText1, TMCPTextDestination:EMWText2, 
- * TMCPTextDestination:EMWText3. Actions can be installed into this
- * two panels to the triggers: TMCPTriggerDestination:EMWTrigger1, 
- * TMCPTriggerDestination:EMWTrigger2.
- */
-enum TMCPTriggerDestination
-    {
-     EMusicWidgetTrigger1 = 3000//do not change
-     ,EMusicWidgetTrigger2
-    };
-
-/**
- *  Observer interface, to be implemented by the Music Content Publisher.
- *  This interface is to be used to inform the music harves of changes on the
- *  plugin that need to be propagated to the Music Widget UI. 
- *  @since S60 5.0
- */
-class MMCPPluginObserver
-    {
-public:
-    
-    /**
-     * Called when an image needs to be updated.
-     *
-     * @since S60 5.0
-     * @param aPlugin Where the mesage is coming from.
-     * @param aDestination Where the image is to be placed.
-     * @param aImagePath Source path of the Image.
-     */
-    virtual void PublishImageL(CMCPPlugin* aPlugin,
-            TMCPImageDestination aDestination, const TDesC& aImagePath) = 0;
-
-    /**
-     * Called when an image needs to be updated.
-     *
-     * @since S60 5.0
-     * @param aPlugin Where the mesage is coming from.
-     * @param aDestination Where the image is to be placed.
-     * @param aBitmapHandle Bitmap handle to the image.
-     */
-    virtual void PublishImageL(CMCPPlugin* aPlugin, 
-            TMCPImageDestination aDestination, TInt aBitmapHandle) = 0;
-
-    /**
-     * Called when a text needs to be updated.
-     *
-     * @since S60 5.0
-     * @param aPlugin Where the mesage is coming from.
-     * @param aDestination Where the text is to be placed.
-     * @param aText Descriptor containing the text.
-     */
-    virtual void PublishTextL( CMCPPlugin* aPlugin, 
-            TMCPTextDestination aDestination, const TDesC& aText ) = 0;
-
-    /**
-     * Called when an action needs to be updated.
-     *
-     * @since S60 5.0
-     * @param aPlugin Where the mesage is coming from.
-     * @param aDestination Destination trigger that should launch the action.
-     * @param aTrigerMap LIW Map containint the action that can be interpreted
-     * by the specified action handler plugin.
-     */
-    virtual void PublishActionL( CMCPPlugin* aPlugin, 
-            TMCPTriggerDestination aDestination, 
-            CLiwDefaultMap* aTrigerMap ) = 0;
-    
-    /**
-     * Called when a plugin becomes active.
-     *
-     * @since S60 5.0
-     * @param aPlugin Where the mesage is coming from.
-     */
-    virtual void BecameActiveL( CMCPPlugin* aPlugin ) = 0;
-
-    };
-
-#endif /*MCPPLUGINOBSERVER_H*/
--- a/internetradio2.0/mcpplugininc/mcppluginuids.hrh	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Resource headers for MCP Plugin 
-*
-*/
-
-
-#ifndef MCPPLUGINUIDS_HRH_
-#define MCPPLUGINUIDS_HRH_
-
-#define KMCPPluginUid 0x10207C19 // interface uid
-
-#endif /*MCPPLUGINUIDS_HRH_*/
-
-//  End of File
--- a/internetradio2.0/mcppluginsrc/irmcpplugin.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,584 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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 <bautils.h>
-#include <coemain.h>
-#include <data_caging_path_literals.hrh>
-#include <e32cmn.h>
-#include <implementationproxy.h>
-#include <liwvariant.h>
-#include <stringloader.h>
-#include <irmcpplugin.rsg>
-
-#include <e32property.h>
-
-#include "iractionhandler.hrh"
-#include "iractionhandlerdefs.h"
-#include "iractiveidleeng.h"
-#include "iractiveidleengnotifyhandler.h"
-#include "irdebug.h"
-#include "irmcpplugin.h"
-#include "irmcpplugin.hrh"
-
-
-
-#include "irmetadata.h"
-
-const TInt KIRMinVolumeLevel = 0;
-const TInt KIRMaxVolumeLevel  = 10;
-
-_LIT( KIRMCPPluginResourceFileName, "irmcpplugin.rsc" );
-
-//Temp images from Music widget, svg via handle to rgba bitmap will be supported soon.
-_LIT( KIMGPlay, "z:\\Resource\\apps\\qgn_prop_image_tb_play2_dimmed2.png" );
-_LIT( KIMGStop, "z:\\Resource\\apps\\qgn_prop_image_tb_pause_dimmed2.png" );
-
-_LIT8( KIRPluginUid, "plugin_id" );
-_LIT8( KIRData, "data" );
-_LIT( KEmpty, "" );
-// ---------------------------------------------------------
-// CIRMCPPlugin::NewL
-// ---------------------------------------------------------
-//
-CIRMCPPlugin* CIRMCPPlugin::NewL( MMCPPluginObserver* aObserver )
-    {
-    CIRMCPPlugin* self = new ( ELeave ) CIRMCPPlugin( aObserver );
-    CleanupStack::PushL( self );
-
-    self->ConstructL();
-    
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::~CIRMCPPlugin
-// ---------------------------------------------------------
-//
-CIRMCPPlugin::~CIRMCPPlugin()
-    {
-    if ( iResourceOffset > 0 )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
-        }
-
-    delete iMetaData;
-
-    delete iEngine;
-    delete iLastPlayedText;
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::CIRMCPPlugin
-// ---------------------------------------------------------
-//
-CIRMCPPlugin::CIRMCPPlugin( MMCPPluginObserver* aObserver )
-    : iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::ConstructL
-// ---------------------------------------------------------
-//
-void CIRMCPPlugin::ConstructL()
-    {
-    InitializeResourceLoadingL();
-
-    iRunningState = EIRPSApplicationUninitialized;
-
-    iLastPlayedText = StringLoader::LoadL( R_IR_MCP_LASTPLAYED);
-    iBufferingText = StringLoader::LoadL( R_IR_MCP_BUFFERING);
-
-    iEngine = CIRActiveIdleEng::NewL( *this );
-    iEngine->SecondConstructL();
-    
-    iMetaData = CIRMetaData::NewL();
-	HandleApplicationRunningStateChangeL(iRunningState);
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::InitializeResourceLoadingL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::InitializeResourceLoadingL()
-    {
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    RFs fs( coeEnv->FsSession() );
-    TFileName fileName; 
-    TFileName baseResource;
-    TFindFile finder( fs );
-    TLanguage language( ELangNone );
-    
-    TParsePtrC parse( KIRMCPPluginResourceFileName );
-    _LIT( resourceFileWildExt, ".r*" );
-
-    // Make sure to find all resource files, not only .rsc files as it may be so
-    // that there is only .r01, .r02, etc. files available
-    fileName.Copy( parse.Name() );
-    fileName.Append( resourceFileWildExt );
-
-    // TFindFile applies search order that is from 
-    // drive Y to A, then Z
-    CDir* entries = NULL;
-    TInt err = finder.FindWildByDir( fileName , KDC_RESOURCE_FILES_DIR, entries );
-    delete entries;
-    entries = NULL;
-    TBool found = EFalse;
-    while ( !found && err == KErrNone )
-        {
-        // Found file
-        fileName.Zero();
-        TParsePtrC foundPath( finder.File() );
-        fileName.Copy( foundPath.DriveAndPath() );
-        fileName.Append( KIRMCPPluginResourceFileName );
-        BaflUtils::NearestLanguageFile( fs, fileName, language );
-        if ( language != ELangNone && BaflUtils::FileExists( fs, fileName ) )
-            {
-            found = ETrue;
-            iResourceOffset = coeEnv->AddResourceFileL( fileName );
-            }
-        else
-            {
-            if ( language == ELangNone &&
-                 !baseResource.Compare( KNullDesC ) &&
-                 BaflUtils::FileExists( fs, fileName ) )
-                {
-                baseResource.Copy( fileName );
-                }
-            err = finder.FindWild( entries );
-            delete entries;
-            entries = NULL;
-            }
-        }
-
-    if ( !found && baseResource.Compare( KNullDesC ) )
-        {
-        // If we found *.rsc then better to use that than nothing
-        if ( BaflUtils::FileExists( fs, baseResource ) )
-            {
-            iResourceOffset = coeEnv->AddResourceFileL( baseResource );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::Deactivate
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::Deactivate()
-    {
-    IRRDEBUG2("InternetRadio -- CIRMCPPlugin::Deactivate Entering", KNullDesC);
-
-    iActive = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::ActivateL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::ActivateL()
-    {
-    IRRDEBUG2("CIRMCPPlugin::ActivateL Entering", KNullDesC);
-
-    iActive = ETrue;
-    iObserver->BecameActiveL(this);
-    
-    HandleChannelChangeL();
-    
-    HandleMetaDataReceivedL(*iMetaData);
-  
-  	RProperty::Get( KUidActiveInternetRadioApp,KIRPSPlayStop,
-					 iPlayingState );	 
-
-	HandlePlayStopL(static_cast<TIRStopPlayState>(iPlayingState));
-	
-/*	IRRDEBUG2("ActivateL iRunningState = %d",iRunningState);
-    InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-    iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay ); */ 	
-	
-    InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger2 );            
-
-    }
-
-
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::PublishLastPlayedWidgetItemsL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::PublishLastPlayedWidgetItemsL()
-    {
-    if ( iActive )
-    	{
-   	    IRRDEBUG2("CIRMCPPlugin::PublishLastPlayedWidgetItemsL Entering", KNullDesC);
-
-        InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-        }
-	
-    HandleChannelChangeL();
-    IRRDEBUG2("CIRMCPPlugin::PublishLastPlayedWidgetItemsL Exitings", KNullDesC);
-       
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleChannelChangeL
-// Handles channel change
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleChannelChangeL()
-	{
-	
-    IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL Entering", KNullDesC);
-
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
-				 	 iChannelName );
-				 	 
-	IRRDEBUG2("HandleChannelChange iRunningState = %d",iRunningState);
-
-	 if ( iActive )
-        {
-        switch(iRunningState)
-	        {
-	        case EIRPSApplicationRunning:
-		        {
-		        iObserver->PublishTextL( this, EMusicWidgetText1, iChannelName);
-		        IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL iChannelName published", KNullDesC);
-							       	
-				break;
-		        }
-		     
-	        case  EIRPSApplicationUninitialized:
-	        case  EIRPSApplicationClosing:
-		       {
-	     	   IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL EIRPSApplicationUninitialized", KNullDesC);
-		       iObserver->PublishTextL( this, EMusicWidgetText1, *iLastPlayedText );
-	           iObserver->PublishTextL( this, EMusicWidgetText2, iChannelName );
-	      			
-					break;
-		       }
-		       
-		    default:
-		    	break;
-	        }
-        }	
-
-    IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL Exiting", KNullDesC);
-
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleMetaDataReceivedL
-// Handles meta data changes
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleMetaDataReceivedL( const CIRMetaData& aMetaData )
-    {
-    IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Entering", KNullDesC);
-
-    iMetaData->SetL( aMetaData );
-    
-    if ( iActive )
-        {
-        switch(iRunningState)
-	        {
-
-	        case EIRPSApplicationRunning:
-		        {
-		        IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL EIRPSApplicationRunning", KNullDesC);
-				if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText2, iMetaData->Song());
-		            IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Song published", KNullDesC);
-					}
-			/*	else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText2, KEmpty)
-					}*/
-										
-				if(iMetaData->Artist().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Artist());
-			        IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Artist published", KNullDesC);
-					} 
-			/*	else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty)
-					}*/	
-									       	
-				break;
-		        }
-		     
-	        case  EIRPSApplicationUninitialized:
-	        case  EIRPSApplicationClosing:
-		       {
-	     	   IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL EIRPSApplicationUninitialized/Closing", KNullDesC);
-	           if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Song());
-		            IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL LastSong published", KNullDesC);
-					}
-			   else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty);
-					}	
-						
-					break;
-		       }
-		       
-		    default:
-		    	break;
-	        }
-        }	   
-        	
-    IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL exiting", KNullDesC);
-
-	}
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandlePlayStopL
-// Handles data change in Stop State
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandlePlayStopL( TIRStopPlayState aState )
-	{
-	
-    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL Entering", KNullDesC);
-
-	if ( aState == EIRStatePlay )
-		{
-	    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL unmute/play", KNullDesC);
-
-	    InstallIRCommandActionL( KIRCommandValueStop(), EMusicWidgetTrigger1 );
-
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGStop );
-		}
-	else 			//if (aState == EIRStateStop)
-		{
-		
-	    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL mute/stop", KNullDesC);
-
-	    InstallIRCommandActionL( KIRCommandValuePlay(), EMusicWidgetTrigger1 );
-
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-		}
-		
-		
-
-    IRRDEBUG2("InternetRadio -- CIRMCPPlugin::HandlePlayStopL Exiting", KNullDesC);
-
-	}
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleVolumeChangeL
-// Handles volume change
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleVolumeChangeL( const TInt aVolume )
-	  {
-      if ( aVolume >= KIRMinVolumeLevel && aVolume <= KIRMaxVolumeLevel )
-	      {
-	      	
-	      }
-	  else
-		  {
-		  User::Leave(KErrGeneral);
-	 	  }		      
- 	  }
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleApplicationRunningStateChangeL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleApplicationRunningStateChangeL( TIRPSApplicationRunningState 
-															aRunningState )
-	{
-	IRRDEBUG2("CIRMCPPlugin::HandleApplicationRunningStateChangeL Entering aRunningState= %d", aRunningState);
-
-	if ( iRunningState != aRunningState )
-		{
-		iRunningState = aRunningState;
-
-		switch ( iRunningState )
-			{
-			case EIRPSApplicationUninitialized:
-			case EIRPSApplicationRunning:
-			ActivateL();
-			break;
-			case EIRPSApplicationClosing:
-			if ( iActive )
-				{
-				IRRDEBUG2("HandleApplicationRunningStateChangeL EIRPSApplicationClosing iActive", KNullDesC);
-
-				InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-				IRRDEBUG2("HandleApplicationRunningStateChangeL StartNowPlaying", KNullDesC);
-
-				iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-				IRRDEBUG2("HandleApplicationRunningStateChangeL PublishImageL", KNullDesC);
-
- 				iObserver->PublishTextL( this, EMusicWidgetText1, *iLastPlayedText );
-	            iObserver->PublishTextL( this, EMusicWidgetText2, iChannelName );
-	      	
-
-				if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Song());
-					IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Song published", KNullDesC);
-					}
-				else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty);
-					}
-
-				}
-			iActive = EFalse;
-			break;
-			default:
-			break;
-
-			}
-
-		}
-	IRRDEBUG2("CIRMCPPlugin::HandleApplicationRunningStateChangeL Exiting", KNullDesC);
-
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::InstallIRCommandActionL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::InstallIRCommandActionL( const TDesC& aCommand, 
-											TMCPTriggerDestination aDestination )
-    {
-    IRRDEBUG2("CIRMCPPlugin::InstallIRCommandActionL Entering", KNullDesC);
-
-    CLiwDefaultMap* mapTrigger = CLiwDefaultMap::NewLC();
-    CLiwDefaultMap* mapData = CLiwDefaultMap::NewLC();
-
-    mapTrigger->InsertL( KIRPluginUid, TLiwVariant( 
-	TUid::Uid( KIRActionHandlerImplementationUid ) ) );
-	
-    mapData->InsertL( KIRCommand, TLiwVariant( aCommand ) );
-    
-    mapTrigger->InsertL( KIRData, TLiwVariant( mapData ) );
-    
-    if ( iActive )
-        {
-        IRRDEBUG2("InstallIRCommandActionL iActive", KNullDesC);
-        
-        iObserver->PublishActionL( this, aDestination, mapTrigger );
-        IRRDEBUG2("InstallIRCommandActionL PublishActionL", KNullDesC);
-        
-        }
-    
-    CleanupStack::PopAndDestroy( mapData );
-    CleanupStack::PopAndDestroy( mapTrigger );
-    
-    IRRDEBUG2("CIRMCPPlugin::InstallIRCommandActionL Exiting", KNullDesC);
-
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleBufferingStateL
-// Handles changes in Internet Radio buffering state
-// ---------------------------------------------------------------------------
-//
-
-void CIRMCPPlugin::HandleBufferingStateL(TIRBufferingState aState )
-	{
-	IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL Entering", KNullDesC);
-	
-	if(iActive)
-		{
-		switch (aState)	
-			{
-			case EIRStateBufferingStop:
-				{
-				IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL 0", KNullDesC);
-
-				HandleChannelChangeL();
-    
-    			HandleMetaDataReceivedL(*iMetaData);
-  
-  				RProperty::Get( KUidActiveInternetRadioApp,KIRPSPlayStop,
-					 iPlayingState );	 
-
-				HandlePlayStopL(static_cast<TIRStopPlayState>(iPlayingState));
-	
-	
-				}
-			break;
-			case EIRStateBufferingStart:
-				{
-				
- 				IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL 1", KNullDesC);
-
-				iObserver->PublishTextL( this, EMusicWidgetText1, KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText2,KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText3,*iBufferingText);
-	
-				}
-				break;
-				
-			case  EIRStateBufferingError:
-				{
-				iObserver->PublishTextL( this, EMusicWidgetText1, KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText2,KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText3,KEmpty);
-	
-				}
-			break;
-			}
-		}
-
-	IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL Exiting", KNullDesC);
-	
-	}
-
-    
-/** Provides a key-value pair table, that is used to identify the correct construction function for the requested interface. */
-const TImplementationProxy KIRMCPPluginImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( KIRMCPPluginImplementationUid, CIRMCPPlugin::NewL )
-    };
-
-const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount );
-
-// ---------------------------------------------------------------------------
-// Returns the implementations provided by this ECOM plugin DLL.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-    {
-    IRRDEBUG2("CIRMCPPlugin::ImplementationGroupProxy", KNullDesC);
-
-    aTableCount = sizeof( KIRMCPPluginImplementationTable ) / sizeof( TImplementationProxy );
-    return KIRMCPPluginImplementationTable;
-    }
-
--- a/internetradio2.0/mediaengineinc/iraacplayer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,320 +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 IRAACPLAYER_H
-#define IRAACPLAYER_H
-
-#include <audio.h>
-#include <mdaaudiooutputstream.h>
-
-#include "ircontrolparams.h"
-#include "irmediaenginedef.h"
-#include "irmediaengineinterface.h"
-
-class CIRBufferContainer;
-
-//========================================class declaration CIRAACPlayer============================================
-
-/**
- * This class is the implementation of AAC/AAC+ format.This forms a part of
- * media engine which is implemented as an ECom plugin. The interface class
- * is irmediaengineinterface.h  The mime type of mp3 is used to load this
- * plugin mimetype : audio/aac or audio/accp This is to be passed as the   
- * default data while creation of player
- * 
- * @code
- *
- * //mimetype is buffer with audio/aac or audio/aacp as data
- * iPlayer = CIRMediaEngineInterface::NewL(mimetype);
- *
- * TConfig config;
- * config.iVolume = xxxxxx; //some integer value between 0 and Maximum Volume
- * TUint8* buffer; //is a buffer of size [KINPUT_BUFFER_SIZE] as defined in  IRMediaEngineBuffer.h
- *                 //this is should have filled buffer when you call Intialize
- * CIRCtrlCmdObserver* aChannel; //command channel dll's instant
- * TInt volume;
- * iPlayer->Intialize(config,buffer,channel);
- * iPlayer->Play();//to play
- * iPlayer->Stop();//to stop
- * iPlayer->SetVolume(volume);//set the volume
- * iPlayer->Volume;// returns current volume
- * iPlayer->MaxVolume();//return maximum volume
- * iPlayer->StopPlayerBuffering();//stop buffering if required
- * iPlayer->StartPlayerBuffering();//start buffering (incase if stop you can restart with this method)
- * iPlayer->BufferFilled(); //should be called when the buffer given by player is return
- *                     //this will mark the buffer as filled
- *
- * @endcode
- *
- */
-
-NONSHARABLE_CLASS(CIRAACPlayer) : public CIRMediaEngineInterface,
-	public MMdaAudioOutputStreamCallback
-	{
-public:
-									//Member Functions
-	/**
-	 * Function : NewL
-	 * function to return an instance of CIRAACPlayer
-	 * Two phase constructor
-	 * @return instance of CIRAACPlayer
-	 */
-	static CIRAACPlayer* NewL();
-
-	/**
-	 * Function : NewLC
-	 * function to creates an instance of CIRAACPlayer
-	 * Two phase constructor
-	 * @return instance of CIRAACPlayer
-	 */
-	static CIRAACPlayer* NewLC();	
-
-	/**
-	 * Function : ~CIRAACPlayer
-	 * Default Destructor
-	 */
-	~CIRAACPlayer();
-
-										//Function which control the play
-
-	/**
-	 * Function : Play
-	 * function to which intiates the playing
-	 */
-	void Play();
-	
-	/**
-	 * Function : Stop
-	 * function to stop the player
-	 */
-	void Stop();   	     
-
-										 //Function to control the volume
-	       
-	/**
-	 * Function : SetVolume
-	 * function to set the volume, integer level of volume is the input
-	 * @param integer level of volume is the input
-	 */			
-	void SetVolume(TInt aVolume);
-			
-	/**
-	 * Function : MaxVolume
-	 * function to returns the maximum volume , integer value is the Output
-	 * @return integer value is the Output
-	 */		
-	TInt MaxVolume() const;
-	
-	/**
-	 * Function : Volume
-	 * function to returns the volume, integer level of voume is the Output
-	 * @return integer value is the Output
-	 */		
-	TInt Volume() const;
-	
-	/**
-	 * Function: Intialize
-	 * Set the codec type and sampling rate channel of stream
-	 * This is set to initial settings which is required to start the player
-	 * @param configuration infomation
-	 * @param instance of data buffer, whose size is defined in IRMediaEngineBuffer.h
-	 * @param instance of the channel through with information is sent to UI
-	 */			
-	void Intialize(TConfig& aConfig,TUint8* aInitParams,
-		CIRCtrlCmdObserver* aChannel);			
-	
-	/**
-	 * Function: StopPlayerBuffering
-	 * Function is used to freeze bufferring 
-	 */
-	void StopPlayerBuffering();
-	
-	/**
-	 * Function: BufferFilled
-	 * Function which is called when network gets the buffer filled with data
-	 */
-  	void BufferFilled();
-  	
-  	/**
-	 * Function: GetAudioPlayer
-	 * Function which is called To return the Current Audio Player
-	*/
-	CMdaAudioOutputStream* GetAudioPlayer();
-
-private:	
-	/**
-	 * Function: CIRAACPlayer
-	 * This function is the default constructor
-	 */
-	CIRAACPlayer();
-
-	/**
-	 * Function: ConstructL
-	 * Two phase constructor is used to intialize data members
-	 */
-	void ConstructL();	
-
-	/**	
-	 * Function: CreatebufferL 
-	 * Create the buffers and allocates address for each buffers
-	 * keeps them in buffer queue
-	 */       
-	void CreateBufferL();
-	
-	/**
-	 * Function: ReCreateBufferL
-	 * Function is used to recreate the buffer
-	 */	
-	void ReCreateBufferL();
-
-										//Call back functions from MMdaAudioOutputStreamCallback
-	
-	/**
-	 * Function: MaoscBufferCopied
-	 * call back to implement for using CMdaAudioOutputStream
-	 * Call as callback from the CMdaAudioOutputStream::WriteL
-	 * after frame work copies the stream to buffer
-	 * @param Error
-	 * @param reference to buffer
-	 */		
-	void MaoscBufferCopied(TInt aError, const TDesC8 &aBuffer);
-		
-	/**
-	 * Function: MaoscPlayComplete
-	 * call back to implement for using CMdaAudioOutputStream
-	 * Call as callback from the CMdaAudioOutputStream::WriteL
-	 * after play is completed
-	 * @param aError
-	 */	    
-	void MaoscPlayComplete(TInt aError);
-	
-	/**
-	 * Function: MaoscOpenComplete
-	 * call back to implement for using CMdaAudioOutputStream
-	 * Call as callback from the CMdaAudioOutputStream::Open
-	 * @param aError
-	 */	    
-	void MaoscOpenComplete(TInt aError);				
-		
-	/**
-	 * Function: GetAACAudioProperties
-	 * extract all the information to start the play from the stream
-	 */
-	void GetAACAudioProperties();
-	
-	/**
-	 * Function: DoFindnDecodeAACHeader
-	 * Function return a non modifiable pointer descriptor of data buffer
-	 */
-	void DoFindnDecodeAACHeaderL();
-	
-	/**
-	 * Function: ReArrangeBuffer
-	 * Function rearranges the buffer, and should be called after finding the header
-	 * from the address of buffers specified, the data buffers are kept in sink queue and 
-	 * remaining buffers are discarded that is put into source queue.
-	 * 
-	 * @param address of starting of header
-	 */	
-	void ReArrangeBufferL(TUint8* aInput);
-
-
-										        //data members
-										        
-private:	
-	//Enum for Play State
-	enum TState
-		{
-		ENotReady,    //Not ready to play
-		EReadyToPlay, //Ready to play
-		EPlaying      //Playing
-		};
-
-	// Player state	
-	TState iState; 		
-
-	//For implement Player functionalities	
-	
-	//player utility 
-	CMdaAudioOutputStream* iAudioPlayer;
-	
-	//Temporary holder for buffer container
-	CIRBufferContainer* iTempBufferHolder;
-	
-	//Holds the address of data buffer which is to be played
-	TUint8* iTempbuffer;				
-
-	//This represents a large input buffer which takes the input
-	TUint8* iInputBufferPtr;
-	
-	//Instance of channel through with data is sent UI
-	CIRCtrlCmdObserver* iChannel;
-		
-	//Setting for sampling rate, channel
-	TMdaAudioDataSettings iSettings;  
-				
-	//FourCC representation of the codec
-	TFourCC iDataType;				
-
-	//hold the configuration information
-	TConfig iConfig;  				
-				
-	//Hold the pointer to the buffer to be filled
-	TPtr8 iInputBuffer;				 
-
-	//Contains Data to be played
-	TPtr8 iInput;
-		
-	//Queue of buffer which is filled
-	TSglQue<CIRBufferContainer> iSourceBufferQ;
-		
-	//Queue of buffer which is empty
-	TSglQue<CIRBufferContainer> iSinkBufferQ;
-	
-	//Holds the audio format data
-	TAudioFormatData iAudioInfo;
-	
-	//Holds the percentage of data in the buffer
-	TInt iBufferPercentage;
-	
-	// For First time play
-	TBool iFirstTime;
-	
-	//checks whether header is found or not
-	TBool iHeaderFound;
-	
-	//this bool indicates buffering is taking place initially or rebuffering
-	//mainly to intial parameter like volume during rebuffering
-	TBool iNeedReBuffering;
-	
-	//Indicates that it is a new player
-	TBool iNewPlayer;
-	
-	//This is used to StopPlayerBuffering
-	TBool iStopPlayerBuffering;	
-	
-	//This is used to stop buffering if its rebuffering, set if stop function is called
-	//and  reset when play function is called
-	TBool iStopState;
-	
-	//skips sending the error code during stop if stop internally 
-	//is during play called
-	TBool iSkipPlayCompleted;	
-	};  
-
-#endif //IRAACPLAYER_H
--- a/internetradio2.0/mediaengineinc/iraacplayerlocal.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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 IRAACPLAYERLOCAL_H
-#define IRAACPLAYERLOCAL_H
-
-#include <e32def.h>
-
-//AAC sampling rate is based on bit index
-//sampling rate are taken from an array of 1x16 demension
-//and size of the array is defined below
-const TUint8 KAACSamplingRateArraySize = 16;
-
-//AAC sampling rate selection array
-const TUint KAacSamplingRate[KAACSamplingRateArraySize] =
-	{
-	96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,0,0,0,0
-	};
-
-//enumerated sampling frequency values 
-//for aac/aacp player	
-enum TIRAACSamplingFreq
-	{
-	EAACSamplingFreq8000 = 8000,
-	EAACSamplingFreq11025 = 11025,
-	EAACSamplingFreq12000 = 12000,
-	EAACSamplingFreq16000 = 16000,
-	EAACSamplingFreq22050 = 22050,
-	EAACSamplingFreq24000 = 24000,
-	EAACSamplingFreq32000 = 32000,
-	EAACSamplingFreq44100 = 44100,
-	EAACSamplingFreq48000 = 48000,
-	EAACSamplingFreq64000 = 64000,
-	EAACSamplingFreq88200 = 88200,
-	EAACSamplingFreq96000 = 96000,	
-	};	
-
-//zero indicates that channel is mono
-const TInt KAACChannelMono = 0;
-
-const TInt KAACHeaderSize = 4;
-
-#endif//IRAACPLAYERLOCAL_H
-
-
-
-
-
--- a/internetradio2.0/mediaengineinc/irbuffercontainer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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 IRBUFFERCONTAINER_H
-#define IRBUFFERCONTAINER_H
-
-#include <e32base.h>
-
-//========================================class declaration CIRBufferContainer============================================
-
-/**
- * This class is wrapper class which can hold an address of a memory chunk
- * and size (granularity) of memory chunk.
- * This is implemented so as to use with queue like TSglQue
- * iLink is public member and is of a member of type TSglQueLink
- * The memory address is of TUint8* type and address is of type TInt
- * you can assign the address and granularity only when you create an instance
- * and retrive address and size using Des() and GetSize() respectively
- * typical usage is as follows
- * Note: This class DOESN'T take any responsibility of removing memory chunk
- * associated to it when you delete the chunk, since it is not creating the memory
- * chunk it doesn't do deallocation it has to taken care from where you create
- * the memory chunk
- *
- * @code
- *
- * TSglQue<CIRBufferContainer> Myque;
- * TInt f_off = _FOFF(CIRBufferContainer,iLink);
- * Myque.SetOffset(f_off);
- * TUint8* buffer;
- * TInt sizeofbuffer;
- * CIRBufferContainer* bufferholder;
- * bufferholder = CIRBufferContainer::NewL(buffer,sizeofbuffer);
- * Myque.AddLast(*bufferholder);
- * TUint8* ptr = bufferholder->Des();
- * TInt size = bufferholder->GetSize();
- * bufferholder = Myque.First();
- * Myque.Remove(*bufferholder);
- * delete bufferholder; //deleting bufferholder doesn't deletes memory allocated
- *			            //to buffer is not getting deleted we have delete it explicitly
- * 
- * delete buffer;
- *
- * @endcode
- *   
- */
-
-NONSHARABLE_CLASS(CIRBufferContainer) : public CBase
-	{
-											//member functions
-public :
-	
-	/**
-	 * Two Phase NewL
-	 * returns an instance CIRBufferContainer
-	 * Owned by CIRBufferContainer
-	 * @param Address of data chunk
-	 * @param Granularity of data chunk
-	 * @return instance CIRBufferContainer
-	 */	
-	static CIRBufferContainer* NewL(TUint8* aAddress,TInt aGranularity);
-		
-	/**
-	 * Two Phase NewLC
-	 * Creates an instance CIRBufferContainer
-	 * Owned by CIRBufferContainer
-	 * @param Address of data chunk
-	 * @param Granularity of data chunk
-	 * @return instance CIRBufferContainer
-	 */
-	static CIRBufferContainer* NewLC(TUint8* aAddress,TInt aGranularity);
-
-	/**
-	 * destructor function
-	 * Owned by CIRBufferContainer
-	 */ 
-	~CIRBufferContainer();
-	
- 	/**	
-	 *  Des returns the Address of the chunk;
-	 *  Owned by CIRBufferContainer Class
-	 *  @return address
-	 */	
-	 TUint8* Des() const;
-	
-		 
-	/**	
-	 *  Size returns the size of the chunk;
-	 *  Owned by CIRBufferContainer Class
-	 *  @return size of chunk
-	 */
-	 TInt Size() const;	
-												
-private:
-
-	/**
-	 * Function : CIRBufferContainer
-	 * default constructor
-	 */	
-	CIRBufferContainer();
-				
-	/**
-	 * Two Phase ConstructL
-	 * Owned by CIRBufferContainer
-	 * @param Address of data chunk
-	 * @param Granularity of data chunk
-	 */
- 	void ConstructL(TUint8* aAddress,TInt aGranularity);
- 		 	
-												
-									//function which return address and granularity
-
-												//data members
-
-public:
-	//Que Link owned by CIRBufferContainer
-	TSglQueLink iLink; 
-
-private:
-		
-	//Queued buffer pointer owned by CIRBufferContainer
-	TUint8* iDataAddress;
-		
-	//Size of the chunk
-	TInt iSize;		
-	};
-
-#include "irbuffercontainer.inl"
-	
-#endif//IRBUFFERCONTAINER_H
-
-
--- a/internetradio2.0/mediaengineinc/irbuffercontainer.inl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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 IR_BUFFERCONTAINER_INL
-#define IR_BUFFERCONTAINER_INL
-
-// -----------------------------------------------------------------------------	
-//  Des returns the Address of the chunk;
-//  Owned by CIRBufferContainer Class
-// @return address
-// -----------------------------------------------------------------------------
-//
- inline TUint8* CIRBufferContainer::Des() const
-	{
-	return iDataAddress;	
-	} 
-	 
-// -----------------------------------------------------------------------------	
-//  Size returns the size of the chunk;
-//  Owned by CIRBufferContainer Class
-//  @return size of chunk
-// -----------------------------------------------------------------------------
-//
- inline TInt CIRBufferContainer::Size() const
-	{
-	return iSize;	
-	}
-	
-#endif
--- a/internetradio2.0/mediaengineinc/irmediaenginebuffer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +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 IRMEDIAENGINEBUFFER_H
-#define IRMEDIAENGINEBUFFER_H
-
-#include <e32def.h>
-
-// Number of input buffers
-const TInt KIRInputBufferCount = 20;
-
-//100 percentage of data 
-const TInt K100Percentage = 100;
-
-//zero percentage of data
-const TInt KZeroPercentage = 0;
-
-#endif//IRMEDIAENGINEBUFFER_H
-
--- a/internetradio2.0/mediaengineinc/irmediaenginedef.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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
-*
-*/
-
-
-//supported formats
-#ifndef IRMEDIAENGINEDEF_H 
-#define IRMEDIAENGINEDEF_H
-
-#include <e32def.h>
-
-//No of volume levels required other than zero volume level
-const TInt KNoVolumeLevels = 10;
-
-//volume level corresponding to zero volume (mute volume)
-const TInt KZeroVolume = 0;
-
-//This hold the initialization information which is required for a player to statrt playing
-class TConfig
-	{
-public:
-	TInt32  iVolume; //volume level
-	TInt    iPlayBufferCount; // number of playing buffers
-	TUint   iPlayBufferSize; // size of single playing buffer (in bytes)
-	};
-	
-//This structure holds the various parameter of an audio format which is available
-class TAudioFormatData
-	{
-public:
-	TUint32 iSamplingRate; //sampling rate
-	TUint32 iBitRate; //bit rate
-	TUint32 iVersion; //version
-	TUint32 iLayer; //layer
-	TUint32 iChannel; //channel
-	TUint32 iPadding; //padding
-	TUint32 iFrameSize; //frame size
-	TUint32 iSamplesPerFrame; //samples per frame
-	};
-		
-
-#endif//IRMEDIAENGINEDEF_H 
-
--- a/internetradio2.0/mediaengineinc/irmediaengineinterface.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +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 IRMEDIAENGINEINTERFACE_H
-#define IRMEDIAENGINEINTERFACE_H
-
-#include <ecom.h>
-#include <mdaaudiooutputstream.h>
-
-class CIRCtrlCmdObserver;
-class TConfig;
-
-// UID of this interface
-const TUid KMediaEngineInterfaceUid = {0x200087E8};
-
-//========================================class declaration CIRMediaEngineInterface============================================
-
-/**
- *
- * This is interface class for media engine, This has pure virtual function 
- * which the player implementation in the media engine should have. The default 
- * data typically can be mime type like audio/mpeg etc. 
- * It has virtual implementation like
- * Play() for play implementation
- * Stop() for stop implemtation 
- * SetVolume(TInt aVolume) for setting implementation
- * Volume() for setting the volume
- * MaxVolume() for setting the maximum volume
- * BufferFilled() is call back to intimate buffer is filled
- * Intialize(TConfig& ,TUint8* ,CIRCtrlCmdObserver* )
- * TConfig is structure the congfiguration data if required is supposed to pass
- * by this way, TUint8* refers to buffer and CIRCtrlCmdObserver* is instance to
- * CIRCtrlCmdObserver defined in IRCommandChannel.lib
- * and also functions like StopPlayerBuffering() and StartPlayerBuffering() to 
- * start and stop buffering.
- *
- */
-
-
-class CIRMediaEngineInterface : public CBase
-      {
-												//Member Function
-public:
-
-	/**
-	 * Function : NewL
-	 * function to creates an instance of CIRMediaEngineInterface
-	 * Two phase constructor
-	 * @param matching string
-	 */	
-	static CIRMediaEngineInterface* NewL(const TDesC8& aMatchString);
-
-	/**
-	 * Function : ~CIRMediaEngineInterface
-	 * Default Destructor
-	 */
-	~CIRMediaEngineInterface();
-
-	// Pure interface method
-
-	/**
-	 * Function : Play
-	 * function to which intiate the player
-	 */
-	virtual void Play() = 0;
-
-	/**
-	 * Function : Stop
-	 * function to which stop the player
-	 */
-	virtual void Stop() = 0; 
-	
-	/**
-	 * Function : SetVolume
-	 * function to set the volume 
-	 * @param integer level of volume is the input
-	 */		
-	virtual void SetVolume(TInt aVolume) = 0;
-
-	/**
-	 * Function : Volume
-	 * function to returns the volume, integer level of voume is the Output
-	 * @return integer value is the Output
-	 */
-	virtual TInt Volume() const = 0;
-	 
-	/**
-	 * Function : MaxVolume
-	 * function to returns the maximum volume 
-	 * @return integer value is the Output 
-	 */
-	virtual	TInt MaxVolume() const = 0;
-
-	/**
-	 * Function: Intialize
-	 * Set the codec type and sampling rate channel of stream
-	 * This is set to initial settings which is required to start the player
-	 * @param configuration infomation and instance of stream source
-	 * @param instance of data buffer, whose size is defined in IRMediaEngineBuffer.h
-	 * @param instance of the channel through with information is sent to UI
-	 */			
-	virtual void Intialize(TConfig& aConfig,TUint8* aInitParams,CIRCtrlCmdObserver* aChannel) = 0;
-						
-	/**
-	 * Function: BufferFilled
-	 * Function which is called when network gets the buffer filled with data
-	 */
-	virtual void BufferFilled() = 0;
-	
-	/**
-	 * Function: StopPlayerBuffering
-	 * Function is used to stop bufferring 
-	 */
-	virtual void StopPlayerBuffering() = 0;
-	
-	/**
-	 * Function: GetAudioPlayer()
-	 * Function is used to Return the Current Audio Player 
-	 */
-	virtual CMdaAudioOutputStream* GetAudioPlayer() = 0;
-									//Data Members
-protected:
-	//Default c'tor
-	inline CIRMediaEngineInterface();
-
-protected:
-
-    /* Size of a play buffer. */
-    TInt iPlayBufferSize;
-
-    /* Total size of input buffer(s). */
-    TInt iInputBufferSize;
-
-    /* Offset address of the buffers. */
-    TInt iBufferOffset;
-
-    /* The level of current volume */
-    TInt iCurrentVolume;
- 
-private:
-	// Unique instance identifier key
-	TUid iDtor_ID_Key;
-	};
-
-#include "irmediaengineinterface.inl"
-
-#endif//IRMEDIAENGINEINTERFACE_H
-
--- a/internetradio2.0/mediaengineinc/irmediaengineinterface.inl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +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
-*
-*/
-
-
-
-// -----------------------------------------------------------------------------
-// Function : CIRMediaEngineInterface
-// default constructor
-// @param none
-// @return none
-// -----------------------------------------------------------------------------
-//
-inline CIRMediaEngineInterface::CIRMediaEngineInterface()
-	{
-	//No implementation
-	}
-
-// -----------------------------------------------------------------------------
-// Function : ~CIRMediaEngineInterface
-// default destructor
-// -----------------------------------------------------------------------------
-//
-inline CIRMediaEngineInterface::~CIRMediaEngineInterface()
-	{
-	// Destroy any instance variables and then
-	// inform the framework that this specific 
-	// instance of the interface has been destroyed.
-	REComSession::DestroyedImplementation(iDtor_ID_Key);
-	}
-
-// -----------------------------------------------------------------------------
-// Function : NewL
-// function to creates an instance of CIRMediaEngineInterface
-// Two phase constructor 
-// @param matching string
-// -----------------------------------------------------------------------------
-//
-inline CIRMediaEngineInterface* CIRMediaEngineInterface::NewL(const TDesC8& aMatchString)
-	{
-	// Set up the interface find for the default resolver.
-	TEComResolverParams resolverParams;
-	resolverParams.SetDataType(aMatchString);
-	resolverParams.SetWildcardMatch(ETrue);		// Allow wildcard matching
-	
-	return reinterpret_cast<CIRMediaEngineInterface*> 
-					(REComSession::CreateImplementationL(KMediaEngineInterfaceUid, 
-									   _FOFF(CIRMediaEngineInterface,iDtor_ID_Key), 
-										NULL,resolverParams));
-	}
-
--- a/internetradio2.0/mediaengineinc/irmp3player.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +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 IRMP3PLAYER_H
-#define IRMP3PLAYER_H
-
-#include <audio.h>
-#include <mdaaudiooutputstream.h>
-
-#include "ircontrolparams.h"
-#include "irmediaenginedef.h"
-#include "irmediaengineinterface.h"
-
-class CIRBufferContainer;
-#ifdef __WINS__
-class CIRTestingAudioPlayer;
-#endif //__WINS__
-
-//========================================class declaration CIRMP3Player============================================
-
-/**
- * This class is the implementation of MP3 format.This forms a part of
- * media engine which is implemented as an ECom plugin. The interface class
- * is irmediaengineinterface.h . The mime type of mp3 is used to load this
- * plugin mimetype : audio/mpeg This is to be passed as the default data 
- * while creation of player
- * 
- * @code
- *
- * //mimetype is buffer with audio/mpeg as data
- * iPlayer = CIRMediaEngineInterface::NewL(mimetype);
- *
- * TConfig config;
- * config.iVolume = xxxxxx; //some integer value between 0 and Maximum Volume
- * TUint8* buffer; //is a buffer of size [KINPUT_BUFFER_SIZE] as defined in  IRMediaEngineBuffer.h
- *                 //this is should have filled buffer when you call Intialize
- * CIRCtrlCmdObserver* aChannel; //command channel dll's instant
- * TInt volume;
- * iPlayer->Intialize(config,buffer,channel);
- * iPlayer->Play();//to play
- * iPlayer->Stop();//to stop
- * iPlayer->SetVolume(volume);//set the volume
- * iPlayer->Volume;// returns current volume
- * iPlayer->MaxVolume();//return maximum volume
- * iPlayer->StopPlayerBuffering();//stop buffering if required
- * iPlayer->StartPlayerBuffering();//start buffering (incase if stop you can restart with this method)
- * iPlayer->BufferFilled(); //should be called when the buffer given by player is return
- *                     //this will mark the buffer as filled
- *
- * @endcode
- */
-
-NONSHARABLE_CLASS(CIRMP3Player) : public CIRMediaEngineInterface,
-								  public MMdaAudioOutputStreamCallback
-	{
-public:
-									//Member Functions
-	/**
-	 * Function : NewL
-	 * function returns an instance of CIRMP3Player
-	 * Two phase constructor
-	 * @return instance of CIRMP3Player
-	 */
-	static CIRMP3Player* NewL();
-
-	/**
-	 * Function : NewLC
-	 * function creates an instance of CIRMP3Player
-	 * Two phase constructor
-	 * @return instance of CIRMP3Player
-	 */
-	static CIRMP3Player* NewLC();
-	
-	/**
-	 * Function : ~CIRMP3Player
-	 * Default Destructor
-	 */
-	~CIRMP3Player();
-
-										//Function which control the play
-
-	/**
-	 * Function : Play
-	 * function to which intiate the player
-	 */
-	void Play();
-	
-	/**
-	 * Function : Stop
-	 * function to which stop the player
-	 */
-	void Stop();   	     
-
-										 //Function to control the volume
-	       
-	/**
-	 * Function : SetVolume
-	 * function to set the volume, integer level of volume is the input
-	 * @param integer level of volume is the input
-	 */			
-	void SetVolume(TInt aVolume);
-	
-	/**
-	 * Function : MaxVolume
-	 * function to returns the maximum volume , integer value is the Output
-	 * @return integer value is the Output
-	 */		
-	TInt MaxVolume() const;
-	
-	/**
-	 * Function : Volume
-	 * function to returns the volume, integer level of voume is the Output
-	 * @return integer value is the Output
-	 */		
-	TInt Volume() const;
-	
-	/**
-	 * Function: Intialize
-	 * Set the codec type and sampling rate channel of stream
-	 * This is set to initial settings which is required to start the player
-	 * @param configuration infomation
-	 * @param instance of data buffer, whose size is defined in IRMediaEngineBuffer.h
-	 * @param instance of the channel through with information is sent to UI
-	 */			
-	void Intialize(TConfig& aConfig,TUint8* aInitParams,CIRCtrlCmdObserver* aChannel);
-		
-	/**
-	 * Function: StopPlayerBuffering
-	 * Function is used to stop bufferring 
-	 */
-	void StopPlayerBuffering();
-	
-	/**
-	 * Function: BufferFilled
-	 * Function which is called when the buffer filled with data
-	 */
-  	void BufferFilled();
-  	
-  	/**
-	 * Function: GetAudioPlayer
-	 * Function which is called when the Player Instance has Changed
-	*/
-	CMdaAudioOutputStream* GetAudioPlayer();
-
-private:
-	/**
-	 * Function: CIRMP3Player
-	 * This function is the default constructor
-	 */
-	CIRMP3Player();
-
-	/**
-	 * Function: ConstructL
-	 * Two phase constructor is used to intialize data members
-	 */
-	void ConstructL();	
-
-	/**	
-	 * Function: CreateBufferL 
-	 * Create the buffers and allocates address for each buffers
-	 * keeps them in buffer queue
-	 */       
-	void CreateBufferL();
-	
-	/**
-	 * Function: ReCreateBufferL
-	 * Function is used to recreate the buffer
-	 */	
-	void ReCreateBufferL();
-	
-	 /**
-	 * Function: GetMP3AudioProperties
-	 * extract all the information to start the play from the stream by calling DoFindnDecodeMP3Header
-	 */
-	void GetMP3AudioProperties();
-	
-	/**
-	 * Function: DoFindnDecodeMP3Header
-   	 * Function is used to find the mp3 header and decode the mp3 header
-	 */
-	void DoFindnDecodeMP3Header();
-	
-	/**
-	 * Function: CrossCheckHeader
-	 * Function is cross checks sampling rate 
-	 * @param a pointer to input buffer
-	 * @return ETrue if the sampling rate matches with sampling rate of next MP3 frame
-	 */		
-	TBool CrossCheckHeader(TUint8* aInput);
-								
-								//Call back functions
-public:	
-	/**
-	 * Function: MaoscBufferCopied
-	 * call back to be implement for using CMdaAudioOutputStream
-	 * Call as callback from the CMdaAudioOutputStream::WriteL
-	 * after frame work copies the stream to buffer
-	 * @param Error code
-	 * @param reference to buffer
-	 */		
-	void MaoscBufferCopied(TInt aError, const TDesC8 &aBuffer);
-	
-	/**
-	 * Function: MaoscPlayComplete
-	 * call back to  beimplement for using CMdaAudioOutputStream
-	 * after play is completed
-	 * @param error code
-	 */	    
-	void MaoscPlayComplete(TInt aError);
-		
-	/**
-	 * Function: MaoscOpenComplete
-	 * call back to implement for using CMdaAudioOutputStream
-	 * Call as callback from the CMdaAudioOutputStream::Open
-	 * @param error code
-	 */	    
-	void MaoscOpenComplete(TInt aError);	
-
-										        //data members
-										        
-private:	
-	//Enum for Play State
-	enum TState
-		{
-		ENotReady,    //Not ready to play
-		EReadyToPlay, //Ready to play
-		EPlaying      //Playing
-		};
-
-	// Player state	
-	TState iState; 		
-
-
-	//For implement Player functionalities
-	
-	//player utility 
-	CMdaAudioOutputStream* iAudioPlayer;
-#ifdef __WINS__	
-	//Instance for TestingAudioPlayer
-	CIRTestingAudioPlayer* iTestingAudioPlayer;
-#endif //__WINS__
-	
-	//Holds the address of data buffer which is to be played
-	TUint8* iTempbuffer;				
-
-	//This represents a large input buffer which takes the input
-	TUint8* iInputBufferPtr;			 
-	
-	//Temporary holder for buffer container
-	CIRBufferContainer* iTempBufferHolder;
-	
-	//Instance of channel through with data is sent UI
-	CIRCtrlCmdObserver* iChannel;
-		
-	//Setting for sampling rate, channel
-	TMdaAudioDataSettings iSettings;  
-				
-	//FourCC representation of the codec
-	TFourCC iDataType;	
-				
-	//hold the configuration information
-	TConfig iConfig;  				
-				
-	//Hold the pointer to the buffer to be filled
-	TPtr8 iInputBuffer;				 
-
-	//Contains Data to be played
-	TPtr8 iInput;
-		
-	//Queue of buffer which is filled
-	TSglQue<CIRBufferContainer> iSourceBufferQ;
-		
-	//Queue of buffer which is empty
-	TSglQue<CIRBufferContainer> iSinkBufferQ;
-	
-	//Holds the audio format data
-	TAudioFormatData iAudioInfo;
-
-	//Holds the percentage of data in the buffer
-	TInt iBufferPercentage;
-	
-	// For First time play
-	TBool iFirstTime;
-	
-	//this bool indicates buffering is taking place initially or rebuffering
-	//mainly to intial parameter like volume during rebuffering
-	TBool iNeedReBuffering;
-	
-	//Indicates that it is a new player
-	TBool iNewPlayer;
-	
-	//This is used to StopPlayerBuffering while playing 
-	TBool iStopPlayerBuffering;
-	
-	//This is used to stop buffering if its rebuffering, set if stop function is called
-	//and  reset when play function is called
-	TBool iStopState;
-
-	//Indicates that player is rebuffering
-	TBool iReBuffering;
-	
-	//skips sending the error code during stop if stop internally 
-	//is during play called
-	TBool iSkipPlayCompleted;
-	};  
-
-#endif//IRMP3PLAYER_H
-
-
--- a/internetradio2.0/mediaengineinc/irmp3playerlocal.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +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 IRMP3PLAYERLOCAL_H
-#define IRMP3PLAYERLOCAL_H
-
-//sampling rate of MP3 is taken from a look up table
-//selection is made based on MPEG version and index bits
-//the look up table is made in the form of an array of 4x4 
-//and demension are define in terms of constant defined below
-const TUint8 KMP3SamplingRateVersionArraySize = 4;
-const TUint8 KMP3SamplingRateIndexArraySize = 4;
-
-//bitrate rate of MP3 is taken from a look up table
-//selection is made based on MPEG version and Layer and index bits
-//the look up table is made in the form of an array of 2x3x16 
-//and demension are define in terms of constant defined below
-const TUint8 KMP3BitRateMPEGArraySize = 2;
-const TUint8 KMP3BitRateLayerArraySize = 3;
-const TUint8 KMP3BitRateIndexArraySize = 16;
-
-//channel selection is based on 2 bits and is defined as array of 
-//demension 4 and is defined in terms of constant.
-const TUint8 KMP3ChannelArraySize = 4;
-
-
-//sampling rate is given in Hzs.
-//KMP3SamplingRate[MPEGVersion][bit index]
-const TInt32 KMP3SamplingRate[KMP3SamplingRateVersionArraySize][KMP3SamplingRateIndexArraySize] = //! Sampling rates for MP3
-	{		
-		{11025,12000,8000,0},    //MPEG 2.5 unofficial   00
-		{0, 0, 0, 0},            //reserved              01
-		{22050,24000,16000,0},   //MPEG 2                10
-		{44100,48000,32000,0}    //MPEG 1                11
-	};
-	
-//each bit rate is given in Kbps.
-// KBitRate[Version][Layer][bitselect] 
-const TUint32 KBitRate[KMP3BitRateMPEGArraySize]
-					  [KMP3BitRateLayerArraySize]
-					  [KMP3BitRateIndexArraySize] = //! Bit rates for Mp3
-	{
-		{	// MPEG 1
-			{0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,0},	// Layer1
-			{0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,0},	// Layer2
-			{0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,0}	// Layer3
-		},
-		{	// MPEG 2, 2.5		
-			{0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,0},	// Layer1
-			{0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,0},			// Layer2
-			{0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,0}			// Layer3
-		}
-	};
-
-//enumerated sampling frequency values 
-//for mp3 player
-enum TIRMp3SamplingFreq
-	{
-	EMp3SamplingFreq8000 = 8000,
-	EMp3SamplingFreq11025 = 11025,
-	EMp3SamplingFreq12000 = 12000,
-	EMp3SamplingFreq16000 = 16000,
-	EMp3SamplingFreq22050 = 22050,
-	EMp3SamplingFreq24000 = 24000,
-	EMp3SamplingFreq32000 = 32000,
-	EMp3SamplingFreq44100 = 44100,
-	EMp3SamplingFreq48000 = 48000,	
-	};	
-
-//channels 1 for stereo, and 0 for mono
-// bits 6,7:
-// 00 - Stereo
-// 01 - Joint stereo (Stereo)
-// 10 - Dual channel (Stereo)
-// 11 - Single channel (Mono)
-const TUint32 KChannelInfo[KMP3ChannelArraySize] =
-	{1,1,0,0};
-
-const TInt KMp3FrameHeaderSize = 5;
-
-//zero indicates that channel is mono
-const TInt KMp3ChannelMono = 0;
-
-#endif//IRMP3PLAYERLOCAL_H
-
--- a/internetradio2.0/mediaengineinc/irtestingaudioplayer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef IRTESTINGAUDIOPLAYER_H
-#define IRTESTINGAUDIOPLAYER_H
-
-
-#include <e32base.h>
-
-enum TAudioFunctionType
-	{
-	EOpen=0,
-	EWriteLBufferCopied,
-	EWriteLPlayComplete
-	};
-
-class CIRMP3Player;
-
-
-class CIRTestingAudioPlayer : public CActive
-	{
-public:
-									//Member Functions
-	public:
-        static CIRTestingAudioPlayer* NewL(CIRMP3Player& aMP3Player);
-        
-        void ConstructL();
-        
-        ~CIRTestingAudioPlayer();     // Destruction
-        
-        void IssueRequest();  // issue request
-       
-        void DoCancel();       // Cancel request
-        // Defined as pure virtual by CActive
-        // implementation provided by this class.
-       
-        void RunL();     // service completed request.
-        // Defined as pure virtual by CActive
-        // implementation provided by this class.
-  
-  		void Open();
-		void Write();
-		void Stop();
-		void Close();
-        
-    private:
-        
-        RTimer iTimer;      // Asynchronous service provider.
-        
-        TInt iCounter;
-        
-		CIRTestingAudioPlayer(CIRMP3Player& aMP3Player);        // Construction
-		
-	public:
-	
-		TAudioFunctionType iAudioFuncType;
-		
-		CIRMP3Player& iMP3Player;
-	};  
-
-#endif//IRTESTINGAUDIOPLAYER_H
--- a/internetradio2.0/mediaenginesrc/iraacplayer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,949 +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 <AudioPreference.h>
-
-#include "iraacplayer.h"
-#include "iraacplayerlocal.h"
-#include "irbuffercontainer.h"
-#include "irctrlcmdobserver.h"
-#include "irdebug.h"
-#include "irmediaenginebuffer.h"
-
-// Constants
-
-const TInt KZERO = 0 ;
-const TInt KONE = 1 ;
-const TInt KTWO = 2 ;
-const TInt KTHREE = 3 ;
-const TInt KFOUR = 4 ;
-const TInt KFIVE = 5 ;
-const TInt KSIX = 6 ;
-const TInt KELEVEN = 11 ;
-const TInt KTWENTYONE = 21 ;
-const TInt KTWENTYFOUR = 24 ;
-const TInt KSIXTEEN = 16 ;
-const TInt KEIGHT = 8 ;
-const TInt KONEFIVETHREESIX = 1536 ;
-
-
-
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// Function : NewL
-// function returns an instance of CIRAACPlayer
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRAACPlayer* CIRAACPlayer::NewL()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::NewL" );
-	CIRAACPlayer* self = CIRAACPlayer::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRAACPlayer::NewL - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Function : NewLC
-// function creates an instance of CIRAACPlayer
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRAACPlayer* CIRAACPlayer::NewLC()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::NewLC" );
-	CIRAACPlayer* self = new (ELeave) CIRAACPlayer;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRAACPlayer::NewLC - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Function : ~CIRAACPlayer
-// Default Destructor
-// ---------------------------------------------------------------------------
-//
-CIRAACPlayer::~CIRAACPlayer()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::~CIRAACPlayer" );
-	delete iAudioPlayer;
-	while(!iSinkBufferQ.IsEmpty())//deleting all the entries in sink buffers queue
-		{
-		iTempBufferHolder = iSinkBufferQ.First();
-		iSinkBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	while(!iSourceBufferQ.IsEmpty())//deleting all the entries in source buffers queue
-		{
-		iTempBufferHolder = iSourceBufferQ.First();
-		iSourceBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::~CIRAACPlayer - Exiting." );
-	}
-
-
-									//Function for Play control
-
-// ---------------------------------------------------------------------------
-// Function : Play
-// function which intiates the player to start playing
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::Play()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::Play" );
-	if ( EPlaying == iState ) //If the current state is playing
-		{
-		//internally stopped before playing so no need of sending
-		//stop status
-		iSkipPlayCompleted = ETrue;
-		iAudioPlayer->Stop(); //then we have to stop it then restart the play from begining
-		iSkipPlayCompleted = EFalse;
-		}
-	iState = ENotReady;
-	iBufferPercentage = KZeroPercentage;
-	iHeaderFound = EFalse;
-	iStopState = EFalse;
-
-	//note : using TRAP_IGNORE to suppress a codescanner warning
-	//"Ignoring the return value from Open() functions"
-	//this cannot be checked as this symbian API returns void
-
-	//opening the current player component
-	 TRAP_IGNORE(iAudioPlayer->Open(&iSettings); )
-	iChannel->SentRequest(EPlayingState,KErrNone);			
-	IRLOG_DEBUG( "CIRAACPlayer::Play - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : Stop
-// function which stops the player
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::Stop()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::Stop" );
-	//If the current state is playing
-	if ( EPlaying == iState )
-		{
-		iAudioPlayer->Stop();
-		}
-	else
-		{
-		//sending the updated status as stopped
-		iChannel->SentRequest( EStoppedPlaying, KErrNone );
-		}
-	iState = EReadyToPlay;
-	iStopState = ETrue;
-	IRLOG_DEBUG( "CIRAACPlayer::Stop - Exiting." );
-	}
-
-										//Functions for Volume Control
-
-// ---------------------------------------------------------------------------
-// Function : SetVolume
-// function to set the volume
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::SetVolume(TInt aVolume )
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::SetVolume" );
-	//If volume should be less than maximum value and greater than or equal to zero then set the volume
-	if( KZeroVolume <= aVolume && iAudioPlayer->MaxVolume() >= aVolume )
-		{
-		iAudioPlayer->SetVolume((TInt)(aVolume));
-		iConfig.iVolume = iCurrentVolume = aVolume;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::SetVolume - Exiting." );
-	}
-// ---------------------------------------------------------------------------
-// Function : MaxVolume
-// function to returns the maximum volume
-// ---------------------------------------------------------------------------
-//
-TInt CIRAACPlayer::MaxVolume() const
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::MaxVolume" );
-	return iAudioPlayer->MaxVolume();
-	}
-// ---------------------------------------------------------------------------
-// Function : Volume
-// function to returns the volume, integer level of voume is the Output
-// ---------------------------------------------------------------------------
-//
-TInt CIRAACPlayer::Volume() const
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::Volume" );
-	return iAudioPlayer->Volume();
-	}
-
-									//Intialization of Codec Settings
-
-// ---------------------------------------------------------------------------
-// Function: Intialize
-// Set the codec type and sampling rate channel of stream
-// This is set to initial settings which is required to start the player
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::Intialize(TConfig& aConfig,TUint8* aInitParams,
-	CIRCtrlCmdObserver* aChannel)
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::Intialize" );
-	iInputBufferPtr = reinterpret_cast<TUint8*> (aInitParams); //instance of buffer
-	//Configuration information
-	iConfig = aConfig; //! Set all the configuration information like volume
-	iPlayBufferSize = iConfig.iPlayBufferSize;
-	iInputBufferSize = iConfig.iPlayBufferCount*iPlayBufferSize;
-    iBufferOffset = iPlayBufferSize;
-	iDataType.Set(KMMFFourCCCodeAAC); //! Set the data type as AAC
-	iChannel = reinterpret_cast<CIRCtrlCmdObserver*> (aChannel);
-	iChannel->SentRequest(EPlayerChanged,KErrNone);									//creates an instance of the player
-	TRAPD(err,CreateBufferL()); //creates the buffer
-	if( err )
-		{
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		return;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::Intialize - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: StopPlayerBuffering
-// Function is used to freeze bufferring
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::StopPlayerBuffering()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::StopPlayerBuffering" );
-	iStopPlayerBuffering = ETrue;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: BufferFilled
-// Function which is called when network gets the buffer filled with data
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::BufferFilled()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::BufferFilled" );
-	if( !iNewPlayer )
-		{
-		//if not playing for the first time
-		if( !iSourceBufferQ.IsEmpty() )
-			{
-			//Initially all unfilled buffers are in source buffer Queue
-			//Once the buffer in the source buffer queue is filled it is moved to queue of buffer
-			//to the sink
-			iTempBufferHolder = iSourceBufferQ.First();
-			iSourceBufferQ.Remove(*iTempBufferHolder);
-			iSinkBufferQ.AddLast(*iTempBufferHolder);
-			}
-		}
-
-	if( iFirstTime )
-		{
-		//if it is playing for first time or rebuffering
-		if( !iNewPlayer )
-			{
-			//if not playing for the first time
-			if( !iSourceBufferQ.IsEmpty() )
-				{
-				//fill the entire buffer source queue
-				//if the entire source buffer queue is not filled
-				if( !iStopPlayerBuffering )
-					{
-					iTempBufferHolder = iSourceBufferQ.First();
-					iTempbuffer = iTempBufferHolder->Des();
-					iInputBuffer.Set
-						(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-
-					if( !iStopState )
-						{
-						//! Calls the fill the buffer for next subsequent times until the source buffer queue is empty
-						iChannel->FilltheBuffer(iInputBuffer);
-						IRLOG_DEBUG( "CIRAACPlayer::BufferFilled - Exiting (1)."  );
-						return;
-						}
-					}
-				}
-			else
-				{
-				//if the entire source buffer queue is filled
-				//gets the header informations like sampling rate and channel
-				//this function here is called to find proper header and
-				//rearrange buffer accordingly
-				GetAACAudioProperties();
-
-				//buffer is completetly filled and indicates that buffering is completed
-				iBufferPercentage = K100Percentage;
-				iChannel->SentRequest( EBufferFillStop, iBufferPercentage );
-
-				//takes the first buffer from sink buffer queue
-				if( !iSinkBufferQ.IsEmpty() )
-					{
-					iTempBufferHolder = iSinkBufferQ.First();
-					}
-				iTempbuffer = iTempBufferHolder->Des();
-
-				iInput.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-				iFirstTime = EFalse;
-				iState = EPlaying;
-				if( !iStopState )
-					{
-					//! Calls the play for the first time
-					TRAPD(err,iAudioPlayer->WriteL(iInput));
-					if( err )
-						{
-						iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-                        IRLOG_DEBUG( "CIRAACPlayer::BufferFilled - Exiting (2)." );
-						return;
-						}
-					}
-				}
-			}
-		else
-			{
-			//if a new player
-			TInt err( KErrNone );
-			//get audio properties like sampling rate and channel
-			if( !iHeaderFound )
-				{
-				GetAACAudioProperties();
-				}
-
-			//sets the audio properties like sampling rate and channel
-			TRAP(err, iAudioPlayer->SetAudioPropertiesL( iSettings.iSampleRate,
-														 iSettings.iChannels));
-			if( err )
-				{
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-                IRLOG_DEBUG( "CIRAACPlayer::BufferFilled - Exiting (3)." );
-				return;
-				}
-
-			//indicates that it is ready to play to client
-			iBufferPercentage = K100Percentage;
-			iChannel->SentRequest( EBufferFadeInReady, iBufferPercentage );
-
-			if( !iSinkBufferQ.IsEmpty() )
-				{
-				iTempBufferHolder = iSinkBufferQ.First();
-				}
-			iTempbuffer = iTempBufferHolder->Des();
-
-			//takes the first buffer from sink buffer queue
-			iInput.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-			iFirstTime = EFalse;
-			iState = EPlaying;
-			iNewPlayer = EFalse;
-			if( !iStopState )
-				{
-				//! Calls the play for the first time
-				TRAP(err,iAudioPlayer->WriteL(iInput));
-				if( err )
-					{
-					iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-                    IRLOG_DEBUG( "CIRAACPlayer::BufferFilled - Exiting (4)." );
-					return;
-					}
-				}
-			}
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::BufferFilled - Exiting (5)." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CIRAACPlayer
-// This function is the default constructor
-// ---------------------------------------------------------------------------
-//
-CIRAACPlayer::CIRAACPlayer():iInputBuffer(NULL,0,0),iInput(NULL,0,0)
-	{
-	IRLOG_DEBUG( "CIRAACPlayer()::CIRAACPlayer" );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor is used to intialize data members
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::ConstructL" );
-
-
-	iAudioPlayer = CMdaAudioOutputStream::NewL(*this,KAudioPriorityRealOnePlayer,
-		(TMdaPriorityPreference)KAudioPrefRealOneStreaming );
-
-
-
-										//creates an instance of the player
-
-	TInt f_off = _FOFF(CIRBufferContainer,iLink); //for the buffer queue which is maintained
-
-    iSinkBufferQ.SetOffset(f_off);	 //It is Queue of buffer used by media Sink
-    iSourceBufferQ.SetOffset(f_off); // Source of buffer which is ready to fill
-
-   	iNewPlayer = ETrue;    //indicates that this a newly created player
-	iStopPlayerBuffering = EFalse; //indicates whether to freeze buffering
-	iNeedReBuffering = EFalse; //if rebuffering is required this is to set true
-	iState = ENotReady;//current state not ready
-	IRLOG_DEBUG( "CIRAACPlayer::ConstructL - Exiting." );
-
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CreateBufferL
-// Allocates memory and  creates buffers of sink queue
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::CreateBufferL()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::CreateBufferL" );
-	TUint8* bufferaddress = iInputBufferPtr;
-
-	//Created memory to buffer and allocates buffers to buffer queues
-	for(TInt buffercount = 0;buffercount < KIRInputBufferCount; buffercount++)
-		{
-		iTempBufferHolder =
-			CIRBufferContainer::NewL(bufferaddress,iPlayBufferSize);
-		iSinkBufferQ.AddLast(*iTempBufferHolder);
-		bufferaddress += iBufferOffset;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::CreateBufferL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ReCreateBufferL
-// Recreates buffers of source queue
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::ReCreateBufferL()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::ReCreateBufferL" );
-	while(!iSinkBufferQ.IsEmpty())
-		{
-		//Deleting all the entries in sink buffers queue
-		iTempBufferHolder = iSinkBufferQ.First();
-		iSinkBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		iTempBufferHolder = NULL;
-		}
-	while(!iSourceBufferQ.IsEmpty())
-		{
-		//deleting all the entries in source buffers queue
-		iTempBufferHolder = iSourceBufferQ.First();
-		iSourceBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		iTempBufferHolder = NULL;
-		}
-	TUint8* bufferaddress = iInputBufferPtr;
-	for(TInt buffercount = 0;buffercount < KIRInputBufferCount; buffercount++)
-		{
-		//reallocates the buffer to source buffer queue
-		iTempBufferHolder =
-			CIRBufferContainer::NewL(bufferaddress,iPlayBufferSize);
-		iSourceBufferQ.AddLast(*iTempBufferHolder);
-		bufferaddress += iBufferOffset;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::ReCreateBufferL - Exiting." );
-	}
-
-									//Call back functions
-
-// ---------------------------------------------------------------------------
-// Function: MaoscBufferCopied
-// call back to be implemented for using CMdaAudioOutputStream
-// Call as callback from the CMdaAudioOutputStream::WriteL
-// after frame work has copied stream to a buffer * @param Error code
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscBufferCopied" );
-	if( aError )
-		{
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		IRLOG_DEBUG( "CIRAACPlayer::MaoscBufferCopied - Exiting (1)." );
-		return;
-		}
-	else
-		{
-        if ( iCurrentVolume < iConfig.iVolume )
-            {
-            iCurrentVolume = iConfig.iVolume;
-            IRLOG_INFO2( "CIRAACPlayer::MaoscBufferCopied - Setting volume to %d", iCurrentVolume );
-            iAudioPlayer->SetVolume( iCurrentVolume );
-            }
-		if( !iSinkBufferQ.IsEmpty() )
-			{
-			//removing the previously read buffer
-			iTempBufferHolder = iSinkBufferQ.First();
-			iSinkBufferQ.Remove(*iTempBufferHolder);
-			if(iTempBufferHolder->Size() == iPlayBufferSize)
-				{
-				iSourceBufferQ.AddLast(*iTempBufferHolder);
-				}
-			else
-				{
-				delete iTempBufferHolder;
-				iTempBufferHolder = NULL;
-				}
-			}
-
-		if( !iStopPlayerBuffering )
-			{
-			if( !iSourceBufferQ.IsEmpty() )
-				{
-				//refilling the first empty buffer from the source queue
-				iFirstTime = EFalse;
-				iTempBufferHolder = iSourceBufferQ.First();
-				iTempbuffer = iTempBufferHolder->Des();
-				iInputBuffer.Set
-					(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-				iChannel->FilltheBuffer(iInputBuffer);
-				}
-			}
-		if( iStopState )
-			{
-            IRLOG_DEBUG( "CIRAACPlayer::MaoscBufferCopied - Exiting (2)." );
-			return;
-			}
-		//starts to play next buffer
-		if( !iSinkBufferQ.IsEmpty() )
-			{
-			//takes the next buffer and plays
-			iTempBufferHolder = iSinkBufferQ.First();
-			iTempbuffer = iTempBufferHolder->Des();
-			iInput.Set(iTempbuffer,iTempBufferHolder->Size(),
-				iTempBufferHolder->Size());
-			//writing to MMF buffer
-			TRAPD(err,iAudioPlayer->WriteL(iInput));
-			if( err )
-				{
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-                IRLOG_DEBUG( "CIRAACPlayer::MaoscBufferCopied - Exiting (3)." );
-				return;
-				}
-			}
-		else
-			{
-			//If no buffer to play so rebuffer
-			if( !iStopPlayerBuffering )
-				{
-				Play();
-				}
-			}
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscBufferCopied - Exiting (4)." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: MaoscPlayComplete
-// call back to be implemented for using CMdaAudioOutputStream
-// after play is completed
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::MaoscPlayComplete(TInt aError)
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscPlayComplete" );
-	if( !iSkipPlayCompleted )
-		{
-		//sending the error code
-		iChannel->SentRequest( EStoppedPlaying, aError );
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscPlayComplete - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: MaoscOpenComplete
-// call back to be implemented for using CMdaAudioOutputStream
-// Call as callback from the CMdaAudioOutputStream::Open
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::MaoscOpenComplete( TInt aError )
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscOpenComplete" );
-	if( aError )
-		{
-		IRLOG_DEBUG( "CIRAACPlayer::MaoscOpenComplete - Exiting (1)." );
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		return;
-		}
-	else
-		{
-		//Setting the data type of player as MP3
-		TRAPD(err, iAudioPlayer->SetDataTypeL(iDataType.FourCC()));  //set type the data as MP3 type
-		if ( err )
-			{
-			if ( KErrNotSupported == err )
-				{
-				iChannel->SentRequest( EError, KErrNotSupported );
-				}
-			else
-				{
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-				}
-            IRLOG_DEBUG( "CIRAACPlayer::MaoscOpenComplete - Exiting (2)." );
-			return;
-			}
-
-		//during rebuffering current volume is to be taken
-		if( iNeedReBuffering )
-			{
-			iConfig.iVolume = iChannel->FetchVolume();
-			}
-		//Computes the current volume and sets the volume
-		TInt index = iAudioPlayer->MaxVolume()/KNoVolumeLevels;
-		iConfig.iVolume = iConfig.iVolume * index;
-		//if volume level given is greater than Maximum volume
-		//volume is set to maximum volume level
-		if( iConfig.iVolume > iAudioPlayer->MaxVolume() )
-			{
-			iConfig.iVolume = iAudioPlayer->MaxVolume();
-			}
-		//if volume level given is lesser than zero
-		//volume is set to zero volume level
-		if( iConfig.iVolume < KZeroVolume )
-			{
-			iConfig.iVolume = KZeroVolume;
-			}
-        // The actual setting of the volume is delayed to MaoscBufferCopied method.
-        // This was due to some error in N91 sound subsystem, which caused the
-        // volume not to adjust in some cases. 
-        iCurrentVolume = 0;
-        iAudioPlayer->SetVolume( iCurrentVolume );
-		iFirstTime = ETrue;
-		iNeedReBuffering = ETrue;
-		if( !iNewPlayer )
-			{
-			//if rebuffering
-			TRAP(err,ReCreateBufferL());
-			if ( err )
-				{
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-                IRLOG_DEBUG( "CIRAACPlayer::MaoscOpenComplete - Exiting (3)." );
-				return;
-				}
-			if( !iStopPlayerBuffering )
-				{
-				//initiates rebuffering for the first time
-				iTempBufferHolder = iSourceBufferQ.First();
-				iTempbuffer = iTempBufferHolder->Des();
-				iInputBuffer.Set(iTempbuffer,iTempBufferHolder->Size(),
-					iTempBufferHolder->Size());
-
-				iChannel->SentRequest( EBufferFillStart, iBufferPercentage );
-				//! Call FilltheBuffer for first time
-				iChannel->FilltheBuffer(iInputBuffer);	//start fill the data
-				}
-			}
-		else
-			{
-			//First time playing
-			BufferFilled();
-			}
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::MaoscOpenComplete - Exiting (4)." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: GetAACAudioProperties
-// extract all the information to start the playing from the stream
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::GetAACAudioProperties()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::GetAACAudioProperties" );
-	//decoding the AAC header
-	TRAPD(err,DoFindnDecodeAACHeaderL());
-	if( err )
-		{
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-        IRLOG_DEBUG( "CIRAACPlayer::GetAACAudioProperties - Exiting (1)." );
-		return;
-		}
-	switch(iAudioInfo.iSamplingRate)
-		{
-		case EAACSamplingFreq8000: //sampling frequency 8000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
-			}
-			break;
-		case EAACSamplingFreq11025: //sampling frequency 11025
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate11025Hz;
-			}
-			break;
-		case EAACSamplingFreq12000:	//sampling frequency 12000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate12000Hz;
-			}
-			break;
-		case EAACSamplingFreq16000:	//sampling frequency 16000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate16000Hz;
-			}
-			break;
-		case EAACSamplingFreq22050:	//sampling frequency 22050
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz;
-			}
-			break;
-		case EAACSamplingFreq24000:	//sampling frequency 24000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate24000Hz;
-			}
-			break;
-		case EAACSamplingFreq32000:	//sampling frequency 32000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate32000Hz;
-			}
-			break;
-		case EAACSamplingFreq44100:	//sampling frequency 44100
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate44100Hz;
-			}
-			break;
-		case EAACSamplingFreq48000:	//sampling frequency 48000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate48000Hz;
-			}
-			break;
-		case EAACSamplingFreq64000:	//sampling frequency 64000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate64000Hz;
-			}
-			break;
-		case EAACSamplingFreq96000:	//sampling frequency 96000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate96000Hz;
-			}
-			break;
-		default:	//default sampling frequency 22050
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz;
-			}
-			break;
-		}
-
-	//sets the channel information
-	if( KAACChannelMono == iAudioInfo.iChannel ) //if 0 it indicates mono
-		{
-		iSettings.iChannels = TMdaAudioDataSettings::EChannelsMono;
-		}
-	else //else if it is 1 it indicates stereo
-		{
-		iSettings.iChannels = TMdaAudioDataSettings::EChannelsStereo;
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::GetAACAudioProperties - Exiting (2)." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: DoFindnDecodeAACHeader
-// Function return a non modifiable pointer descriptor of data buffer
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::DoFindnDecodeAACHeaderL()
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::DoFindnDecodeAACHeaderL." );
-	TUint8* input = iInputBufferPtr;
-	TUint8* endptr = iInputBufferPtr + iInputBufferSize - KAACHeaderSize;
-	while ( (endptr > input) && (!iHeaderFound) )
-		{
-		//ADIF header is checked
-		if( ('A' == input[KZERO]) && ('D' == input[KONE]) && ('I' == input[KTWO])	&&
-			('F' ==input[KTHREE]) )
-			{
-			iHeaderFound = ETrue;
-			}
-		else
-			{
-			//checking for sync bits
-			if( (0xFF == input[0]) && (0xF0 == (0xF6 & input[1])) )
-				{
-				//sync bits are obtained
-				TInt framelength = 0;
-				framelength |= (input[KTHREE] & 0x03) << KELEVEN;
-				framelength |= (input[KFOUR] << KTHREE);
-				framelength |= (input[KFIVE] >> KFIVE) & 0x07;
-				if( (0 >= framelength) &&
-					(endptr > (input + framelength + KFOUR)) )
-					{
-					iHeaderFound = EFalse;
-					}
-				else
-					{
-					//cross checked
-					TUint8* nextheader = input + framelength;
-					if( (0xFF == nextheader[0]) &&
-						(0xF0 == ( 0xF6 & nextheader[1])) )
-						{
-					 	iHeaderFound = ETrue;
-						}
-					}
-				}
-			}
-		if( iHeaderFound )
-			{
-			//header is found
-			TUint value = 0;
-			value |= input[0] << KTWENTYFOUR;
-			value |= input[1] << KSIXTEEN;
-			value |= input[2] << KEIGHT;
-			value |= input[KTHREE];
-			//version information is obtained from 19th bit
-			//of acc/accp header
-			TInt index = ( value >> 20 ) & 0x0FFF;
-			if( 0x0FFF == (index & 0xFFF) )
-				{
-				iAudioInfo.iVersion = (value >> 19) & 0x01; //MPEG version
-														    //0 MPEG 4
-														    //1 MPEG 2
-				//selection bits for sampling rate starts with 10th bit
-				//4 bits are need for getting the sampling rate.
-				//this bit combination is extracted and stored in index
-				index = ( value >> 10 ) & 0x00F;
-				iAudioInfo.iSamplingRate = KAacSamplingRate[index]; //gets the sampling rate
-				if( 0 == iAudioInfo.iSamplingRate ) //if sampling rate is zero then we consider the header is wrong
-					{
-					iHeaderFound = EFalse;
-					}
-				else
-					{
-					//decoding channel information
-					index = (value >> 6) & 0x07;
-					if( index == 0 || index == 2 )
-						{
-						iAudioInfo.iChannel = 1; //channel information
-						}
-					else if( index == 1 )
-						{
-						//1 represents stereo and
-						iAudioInfo.iChannel = 0; //0 represents mono
-						}
-					else
-						{
-						iHeaderFound = EFalse;
-						}
-
-					if( iHeaderFound )
-						{
-						//additional check is done for validation
-						//of aac header
-						index = ( value >> 10 ) & 0x00F;
-
-						value = 0;
-						value |= (input[KFOUR] << KTWENTYFOUR);
-						value |= (input[KFIVE] << KSIXTEEN);
-						value |= (input[KSIX] << KEIGHT);
-
-						index |= ( (value >> KTWENTYONE ) & 0x07FF );
-						TInt RawData = ((value >> KEIGHT) &0x03) + 1;
-						if( index > (KONEFIVETHREESIX * RawData) )
-							{
-							iHeaderFound = EFalse;
-							}
-						}
-					}
-				}
-			}
-		//if header is not found we go for next header
-		if( !iHeaderFound )
-			{
-			input++;
-			}
-		}
-	if( iHeaderFound )
-		{
-		ReArrangeBufferL(input);
-		}
-	IRLOG_DEBUG( "CIRAACPlayer::DoFindnDecodeAACHeaderL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ReArrangeBuffer
-// Function rearranges the buffer, and should be called after finding the header
-// from the address of buffers specified, the data buffers are kept in sink queue and
-// remaining buffers are discarded that is put into source queue.
-// ---------------------------------------------------------------------------
-//
-void CIRAACPlayer::ReArrangeBufferL(TUint8* aInput)
-	{
-	IRLOG_DEBUG( "CIRAACPlayer::ReArrangeBufferL" );
-	//if header is found we are rearranging the buffer
-	TUint8* input = aInput;
-	TUint8* endptr = iInputBufferPtr + iInputBufferSize;
-	TUint8* tempbuffer = input;
-
-	while(!iSinkBufferQ.IsEmpty())
-		{
-		//removing all the entries in sink buffers queue
-		iTempBufferHolder = iSinkBufferQ.First();
-		iSinkBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		iTempBufferHolder = NULL;
-		}
-
-	//adds the valid data
-	for(tempbuffer = input; endptr > (tempbuffer + iBufferOffset);
-		tempbuffer += iBufferOffset)
-		{
-		iTempBufferHolder =
-			CIRBufferContainer::NewL(tempbuffer,iPlayBufferSize);
-		iSinkBufferQ.AddLast(*iTempBufferHolder);
-		}
-
-	//adds the valid data
-	TInt length = endptr - tempbuffer;
-	if( length > 0 )
-		{
-		// this buffer will be removed after first time you play
-		iTempBufferHolder =
-			CIRBufferContainer::NewL(tempbuffer,length);
-		iSinkBufferQ.AddLast(*iTempBufferHolder);
-		}
-
-	//adds the buffers to source buffer queue
-	for(tempbuffer = iInputBufferPtr;
-		input > (tempbuffer + iBufferOffset);
-		tempbuffer += iBufferOffset)
-		{
-		iTempBufferHolder =
-			CIRBufferContainer::NewL(tempbuffer,iPlayBufferSize);
-		iSourceBufferQ.AddLast(*iTempBufferHolder);
-		}
-
-	IRLOG_DEBUG( "CIRAACPlayer::ReArrangeBufferL - Exiting." );
-	}
-
-// CIRMP3Player::GetMediaClientInstance()
-// Returns the Audio Player Instance
-// ---------------------------------------------------------------------------
-//
-CMdaAudioOutputStream* CIRAACPlayer::GetAudioPlayer()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::GetMediaClientInstance " );
-	return iAudioPlayer;	
-	}
--- a/internetradio2.0/mediaenginesrc/irbuffercontainer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +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 "irbuffercontainer.h"
-#include "irdebug.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// Two Phase NewL
-// returns an instance CIRBufferContainer
-// Owned by CIRBufferContainer
-// ---------------------------------------------------------------------------
-//
-CIRBufferContainer* CIRBufferContainer::NewL
-	(TUint8* aAddress,TInt aGranularity)
-	{
-	IRLOG_DEBUG( "CIRBufferContainer::NewL" );
-	CIRBufferContainer *self = 
-		CIRBufferContainer::NewLC(aAddress,aGranularity);
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRBufferContainer::NewL - Exiting." );
-	return self;	
-	}
-
-// ---------------------------------------------------------------------------
-// Two Phase NewLC
-// Creates an instance CIRBufferContainer
-// Owned by CIRBufferContainer
-// ---------------------------------------------------------------------------
-//
-CIRBufferContainer* CIRBufferContainer::NewLC
-	(TUint8* aAddress,TInt aGranularity)
-	{
-	IRLOG_DEBUG( "CIRBufferContainer::NewLC" );
-	CIRBufferContainer *self = new(ELeave) CIRBufferContainer;
-	CleanupStack::PushL(self);
-	self->ConstructL(aAddress,aGranularity);
-	IRLOG_DEBUG( "CIRBufferContainer::NewLC - Exiting." );
-	return self;
-	}
-	
-// ---------------------------------------------------------------------------
-// destructor function
-// Owned by CIRBufferContainer
-// ---------------------------------------------------------------------------
-//
-CIRBufferContainer::~CIRBufferContainer ()
-	{
-	IRLOG_DEBUG( "CIRBufferContainer::~CIRBufferContainer" );
-	//No implementation
-	}	
-	
-// ---------------------------------------------------------------------------
-// Function : CIRBufferContainer
-// default constructor
-// ---------------------------------------------------------------------------
-//
- CIRBufferContainer::CIRBufferContainer()
-	{
-	IRLOG_DEBUG( "CIRBufferContainer::CIRBufferContainer" );
-	//No implementation	
-	}
-
-// ---------------------------------------------------------------------------
-// Two Phase ConstructL
-// Owned by CIRBufferContainer
-// ---------------------------------------------------------------------------
-//
-void CIRBufferContainer::ConstructL(TUint8* aAddress,TInt aGranularity)
-	{
-	IRLOG_DEBUG( "CIRBufferContainer::ConstructL" );
-	//address of memory chunk
-	iDataAddress = aAddress;
-	//granularity of each chunk
-	iSize = aGranularity;
-	IRLOG_DEBUG( "CIRBufferContainer::ConstructL - Exiting." );
-	}
-
-
--- a/internetradio2.0/mediaenginesrc/irmediaengineproxy.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +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 <implementationproxy.h>
-
-#include "iraacplayer.h"
-#include "irmp3player.h"
-
-// Map the interface UIDs to implementation factory functions
-// violates PC lint error :: Warning 611: Suspicious cast
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY(0x200087E9,CIRMP3Player::NewL),	
-	IMPLEMENTATION_PROXY_ENTRY(0x200087EA,CIRAACPlayer::NewL),
-	IMPLEMENTATION_PROXY_ENTRY(0x200087EB,CIRAACPlayer::NewL),
-	};
-
-// Exported proxy for instantiation method resolution
-// violates PC lint error 714-- not refrenced.  
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy
-	(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-	return ImplementationTable;
-	}
-
--- a/internetradio2.0/mediaenginesrc/irmp3player.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1142 +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 <AudioPreference.h>
-
-#include "irbuffercontainer.h"
-#include "irctrlcmdobserver.h"
-#include "irdebug.h"
-#include "irmediaenginebuffer.h"
-#include "irmp3player.h"
-#include "irmp3playerlocal.h"
-
-#ifdef __WINS__
-#include "irtestingaudioplayer.h"
-#endif //__WINS__
-
-
-
-// Constants
-const TInt KZero = 0;
-const TInt KOne = 1;
-const TInt KTwo = 2;
-const TInt KThree = 3;
-
-const TInt KTwentyFour = 24;
-const TInt KSixteen = 16;
-const TInt KEight = 8;
-const TInt KSamplesPerFrame1 = 576;
-const TInt KSamplesPerFrame2 = 1152;
-const TInt KOneFourFour = 144;
-const TInt KThousand = 1000;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// Function : NewL
-// function returns an instance of CIRMP3Player
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRMP3Player* CIRMP3Player::NewL()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::NewL" );
-	CIRMP3Player* self = CIRMP3Player::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRMP3Player::NewL - Exiting." );
-	return self;
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : NewLC
-// function creates an instance of CIRMP3Player
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRMP3Player* CIRMP3Player::NewLC()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::NewLC" );
-	CIRMP3Player* self = new (ELeave) CIRMP3Player;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRMP3Player::NewLC - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Function : ~CIRMP3Player
-// Default Destructor
-// ---------------------------------------------------------------------------
-//
-CIRMP3Player::~CIRMP3Player()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::~CIRMP3Player" );
-	//delete the instance of the player
-	delete iAudioPlayer;
-	
-#ifdef __WINS__
-	if(iTestingAudioPlayer)
-		{
-		iTestingAudioPlayer->Close();
-		delete iTestingAudioPlayer;
-		iTestingAudioPlayer = NULL;
-		}
-	CActiveScheduler::Delete(iTestingAudioPlayer);
-
-#endif //__WINS__
-
-	while(!iSinkBufferQ.IsEmpty())
-		{
-		//Deleting all the entries in sink buffers queue
-		iTempBufferHolder = iSinkBufferQ.First();
-		iSinkBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	while(!iSourceBufferQ.IsEmpty())
-		{
-		//deleting all the entries in source buffers queue
-		iTempBufferHolder = iSourceBufferQ.First();
-		iSourceBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	IRLOG_DEBUG( "CIRMP3Player::~CIRMP3Player - Exiting." );	
-	}
-									//Function for Play control
-
-// ---------------------------------------------------------------------------
-// Function : Play
-// function to which intiate the player
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::Play()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::Play" );
-	//! then we have to stop it then restart the play from begining
-	if ( EPlaying == iState )
-		{
-		//internally stopped before playing so no need of sending
-		//stop status		
-		iSkipPlayCompleted = ETrue;
-		
-#ifdef __WINS__
-		iTestingAudioPlayer->Stop();
-#else 
-		iAudioPlayer->Stop(); 
-#endif //__WINS__
-		
-		iSkipPlayCompleted = EFalse;		
-		}
-	iState = ENotReady;
-	iStopState = EFalse;
-	iBufferPercentage = KZeroPercentage;
-	
-	//note : using TRAP_IGNORE to suppress a codescanner warning
-	//"Ignoring the return value from Open() functions"
-	//this cannot be checked as this symbian API returns void
-#ifdef __WINS__
-	TRAP_IGNORE ( iTestingAudioPlayer->Open() );
-#else 
-	//opening the current player component
-	TRAP_IGNORE ( iAudioPlayer->Open(&iSettings) );
-#endif //__WINS__
-	iChannel->SentRequest(EPlayingState,KErrNone);	
-	IRLOG_DEBUG( "CIRMP3Player::Play - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : Stop
-// function to which stop the player
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::Stop()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::Stop" );	
-	//If the current state is playing 	
-	if ( EPlaying == iState )
-		{
-#ifdef __WINS__
-		iTestingAudioPlayer->Stop();
-#else
-		iAudioPlayer->Stop();	
-#endif //__WINS__
-		
-		}		
-	else
-		{
-	IRRDEBUG2("CIRMP3Player::Stop EStoppedPlaying", KNullDesC); 
-		//sending the updated status as stopped
-		iChannel->SentRequest( EStoppedPlaying, KErrNone );	
-		}		
-	iState = EReadyToPlay;
-	iStopState = ETrue;
-	IRLOG_DEBUG( "CIRMP3Player::Stop - Exiting." );	
-	}
-										
-										//Functions for Volume Control
-
-// ---------------------------------------------------------------------------
-// Function : SetVolume
-// function to set the volume 
-// ---------------------------------------------------------------------------
-//	
-void CIRMP3Player::SetVolume(TInt aVolume )
-	{	
-	IRLOG_DEBUG( "CIRMP3Player::SetVolume" );		
-	//! If volume should be less than maximum value and greater than or equal to zero then set the volume
-	if( KZeroVolume <= aVolume && iAudioPlayer->MaxVolume() >= aVolume )
-		{
-		iAudioPlayer->SetVolume( aVolume );	
-		iConfig.iVolume = iCurrentVolume = aVolume;
-		}		
-	IRLOG_DEBUG( "CIRMP3Player::SetVolume - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : MaxVolume
-// function to returns the maximum volume 
-// ---------------------------------------------------------------------------
-//
-TInt CIRMP3Player::MaxVolume() const
-	{
-	IRLOG_DEBUG( "CIRMP3Player::MaxVolume" );
-	return iAudioPlayer->MaxVolume();	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : Volume
-// function to returns the volume, integer level of volume is the Output
-// ---------------------------------------------------------------------------
-//
-TInt CIRMP3Player::Volume() const
-	{
-	IRLOG_DEBUG( "CIRMP3Player::Volume" );
-	return iAudioPlayer->Volume();
-	}
-
-									//Intialization of Codec Settings
-
-// ---------------------------------------------------------------------------
-// Function: Intialize
-// Set the codec type and sampling rate channel of stream
-// This is set to initial settings which is required to start the player
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::Intialize(TConfig& aConfig,TUint8* aInitParams,
-	CIRCtrlCmdObserver* aChannel)
-	{
-	IRLOG_DEBUG( "CIRMP3Player::Intialize" );
-	iInputBufferPtr = reinterpret_cast<TUint8*> (aInitParams); //instance of buffer
-	iConfig = aConfig; //! Set all the configuration information like volume
-	iPlayBufferSize = iConfig.iPlayBufferSize;
-	iInputBufferSize = iConfig.iPlayBufferCount*iPlayBufferSize;
-    iBufferOffset = iPlayBufferSize;
-	iDataType.Set(KMMFFourCCCodeMP3); //! Set the data type as MP3
-	iChannel = reinterpret_cast<CIRCtrlCmdObserver*> (aChannel);
-	TRAPD(err,CreateBufferL()); // allocates buffer to the queue
-	if( err )
-		{
-	IRRDEBUG2("CIRMP3Player::Intialize - EError", KNullDesC);
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		return;	
-		}
-	iChannel->SentRequest(EPlayerChanged,KErrNone);									//creates an instance of the player
-	IRLOG_DEBUG( "CIRMP3Player::Intialize - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: StopPlayerBuffering
-// Function is used to stop buffering 
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::StopPlayerBuffering()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::StopPlayerBuffering" );
-	//stops the player from buffering
-	iStopPlayerBuffering = ETrue;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: BufferFilled
-// Function which is called when network gets the buffer filled with data
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::BufferFilled()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::BufferFilled" );
-	if( !iNewPlayer )
-		{
-		if( !iSourceBufferQ.IsEmpty() )
-			{
-			//! Initially all unfilled buffers are in source buffer Queue
-			//! Once the buffer in the source buffer queue is filled it is moved to queue of buffer
-			//! to the sink
-			iTempBufferHolder = iSourceBufferQ.First();
-			iSourceBufferQ.Remove(*iTempBufferHolder);
-			iSinkBufferQ.AddLast(*iTempBufferHolder);
-			}
-		}
-	
-	if( iFirstTime )
-		{
-		if( !iNewPlayer )
-			{
-			// During rebuffering only
-			if( !iSourceBufferQ.IsEmpty() ) 
-				{
-				//if source buffer is empty
-				//first buffer of source buffer is taken and refilled
-				iTempBufferHolder = iSourceBufferQ.First();							
-				iTempbuffer = iTempBufferHolder->Des();
-				iInputBuffer.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-				if( iStopState )
-					{
-                    IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (1)." );
-					return;
-					}
-				if( !iStopPlayerBuffering )
-					{								
-					//Calls the fill the buffer for next subsequent times 
-					//until the source buffer queue is empty
-					iChannel->FilltheBuffer(iInputBuffer); 
-					}
-				else
-					{
-                    IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (2)." );
-					//if stopPlayerBuffering is set it has return without buffering
-					return;	
-					}
-				}
-			else
-				{
-				//once it is rebuffered it has trigger play
-				//it has to indicate that rebuffering has completed for client
-				
-				TInt err( KErrNone ); 
-				if( !iReBuffering )
-					{
-					GetMP3AudioProperties();
-					//Sets the audio properties of the player like sampling rate and channel
-					TRAP(err, iAudioPlayer->SetAudioPropertiesL(iSettings.iSampleRate,
-																iSettings.iChannels));
-					if ( err )
-						{
-					IRRDEBUG2("CIRMP3Player::BufferFilled - EError", KNullDesC);
-						iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );	
-                        IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (3)." );
-						return;
-						}
-					}
-				iReBuffering = EFalse;
-				//buffer reached 100% headers are decoded ready to play			
-				iBufferPercentage = K100Percentage;
-				iChannel->SentRequest( EBufferFillStop, iBufferPercentage ); 
-				
-				if( !iSinkBufferQ.IsEmpty() )
-					{
-					iTempBufferHolder = iSinkBufferQ.First();	
-					}					
-				iTempbuffer = iTempBufferHolder->Des();
-				
-				//Take first source buffer queue to be filled
-				iInput.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-				iFirstTime = EFalse;
-				iState = EPlaying;
-				if( !iStopState )
-					{
-
-#ifdef __WINS__
-					iTestingAudioPlayer->Write();
-#else
-					//writing to mmp based buffer to trigger play
-					TRAP(err,iAudioPlayer->WriteL(iInput));	
-
-					if( err )
-						{
-						//error condition
-			IRRDEBUG2("CIRMP3Player::BufferFilled - EError1", KNullDesC);
-						iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );	
-                        IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (4)." );
-						return;
-						}
-#endif //__WINS__	
-					}
-				//! Calls the play for the first time after rebuffering
-			
-				}
-			}
-		else
-			{
-			//First time when the player is created
-			TInt err( KErrNone );
-			GetMP3AudioProperties();			
-				
-			//! Sets the audio properties of the player like sampling rate and channel
-			//Sets the audio properties of the player like sampling rate and channel
-			TRAP(err, iAudioPlayer->SetAudioPropertiesL(iSettings.iSampleRate,
-														iSettings.iChannels));
-			if ( err )
-				{
-		IRRDEBUG2("CIRMP3Player::BufferFilled - EError2", KNullDesC);
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );	
-	            IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (5)." );
-				return;
-				}
-			//buffer percentage is 100%							
-			iBufferPercentage = K100Percentage;
-			//indicating it has rebuffered
-			iChannel->SentRequest( EBufferFadeInReady, iBufferPercentage ); 			
-			
-			if( !iSinkBufferQ.IsEmpty() )
-				{
-				iTempBufferHolder = iSinkBufferQ.First();
-				}
-			iTempbuffer = iTempBufferHolder->Des();
-			
-			//first buffer of sink is taken and played
-			iInput.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);
-			iNewPlayer = EFalse;
-			iFirstTime = EFalse;
-			iState = EPlaying;
-			
-			//Calls the play for the first time
-			if( !iStopState )
-				{
-#ifdef __WINS__
-				iTestingAudioPlayer->Write();
-#else
-				//writing to MMF buffers
-				TRAP(err,iAudioPlayer->WriteL(iInput));	
-				if( err )
-					{
-			IRRDEBUG2("CIRMP3Player::BufferFilled - EError3", KNullDesC);
-					iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );	
-					IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (6)." );	
-					return;
-					}	
-#endif //__WINS__
-				}
-			}	
-		}		
-	IRLOG_DEBUG( "CIRMP3Player::BufferFilled - Exiting (7)." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CIRMP3Player
-// This function is the default constructor
-// ---------------------------------------------------------------------------
-//
-CIRMP3Player::CIRMP3Player() : iInputBuffer(NULL,0,0), iInput(NULL,0,0)
-	{
-	IRLOG_DEBUG( "CIRMP3Player::CIRMP3Player" );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor is used to intialize data members
-// Function can leave if CMdaAudioOutputStream::NewL leaves
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::ConstructL" );
-
-	iAudioPlayer = CMdaAudioOutputStream::NewL(*this,KAudioPriorityRealOnePlayer,
-		(TMdaPriorityPreference)KAudioPrefRealOneStreaming );
-
-										//creates an instance of the player
-										
-#ifdef __WINS__			
-	iTestingAudioPlayer = CIRTestingAudioPlayer::NewL(*this);
-	CActiveScheduler::Add(iTestingAudioPlayer);
-#endif //__WINS__
-
-	TInt f_off = _FOFF(CIRBufferContainer,iLink); //for the buffer queue which is maintained
-
-    iSinkBufferQ.SetOffset(f_off);	 //It is Queue of buffer used by media Sink
-    iSourceBufferQ.SetOffset(f_off); // Source of buffer which is ready to fill
-    
-	iNewPlayer = ETrue;	//indicates that this a newly created player
-	iStopPlayerBuffering = EFalse;	//indicates whether to stop buffering
-	iState = ENotReady;	//current state not ready	
-	iNeedReBuffering = EFalse;//if rebuffering is required this is to set true
-	iStopState = EFalse; //
-	IRLOG_DEBUG( "CIRMP3Player::ConstructL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CreateBufferL 
-// Created buffers in sink buffer queue and allocates memory to sink buffer queues
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::CreateBufferL()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::CreatebufferL" );	
-	TUint8* bufferaddress = iInputBufferPtr;
-	//! source buffers not created since initially all buffers are filled with data and is ready to play	
-	//! Created buffers in sink buffer queue and allocates memory to sink buffer queues
-	for(TInt buffercount = 0; buffercount < KIRInputBufferCount; buffercount++)
-		{		
-		iTempBufferHolder = CIRBufferContainer::NewL(bufferaddress,
-			iPlayBufferSize);
-		iSinkBufferQ.AddLast(*iTempBufferHolder);
-		bufferaddress += iBufferOffset;
-		}
-	IRLOG_DEBUG( "CIRMP3Player::CreatebufferL - Exiting." );	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: ReCreateBufferL 
-// Recreates buffers of source queue
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::ReCreateBufferL()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::ReCreateBufferL " );
-	while(!iSinkBufferQ.IsEmpty())
-		{
-		//Deleting all the entries in sink buffers queue
-		iTempBufferHolder = iSinkBufferQ.First();
-		iSinkBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		iTempBufferHolder = NULL;	
-		}
-	while(!iSourceBufferQ.IsEmpty())
-		{
-		//deleting all the entries in source buffers queue
-		iTempBufferHolder = iSourceBufferQ.First();
-		iSourceBufferQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		iTempBufferHolder = NULL;	
-		}
-	TUint8* bufferaddress = iInputBufferPtr; 
-	//reallocates the buffer to source buffer queue
-	for(TInt buffercount = 0; buffercount < KIRInputBufferCount; buffercount++)
-		{		
-		iTempBufferHolder = CIRBufferContainer::NewL(bufferaddress,
-			iPlayBufferSize);
-		iSourceBufferQ.AddLast(*iTempBufferHolder);
-		bufferaddress += iBufferOffset;
-		}	
-	IRLOG_DEBUG( "CIRMP3Player::ReCreateBufferL - Exiting." );
-	}
-
-	
-// ---------------------------------------------------------------------------
-// Function: GetMP3AudioProperties
-// extract all the information required to start the play from the stream
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::GetMP3AudioProperties()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::GetMP3AudioProperties" );
-	//Decoding MP3 header		
-	DoFindnDecodeMP3Header();	
-	
-	//! Sets the sampling rate and channel information to data members
-	switch(iAudioInfo.iSamplingRate)
-		{
-		case EMp3SamplingFreq8000: //sampling frequency 8000
-			{	
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
-			}
-			break;
-		case EMp3SamplingFreq11025: //sampling frequency 11025
-			{			
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate11025Hz;
-			}
-			break;
-		case EMp3SamplingFreq12000:	//sampling frequency 12000
-			{	
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate12000Hz;
-			}
-			break;
-		case EMp3SamplingFreq16000:	//sampling frequency 16000
-			{			
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate16000Hz;
-			}
-			break;
-		case EMp3SamplingFreq22050:	//sampling frequency 22050
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz;
-			}
-			break;
-		case EMp3SamplingFreq24000:	//sampling frequency 24000
-			{			
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate24000Hz;
-			}
-			break;
-		case EMp3SamplingFreq32000:	//sampling frequency 32000
-			{
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate32000Hz;
-			}
-			break;
-		case EMp3SamplingFreq44100:	//sampling frequency 44100
-			{			
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate44100Hz;
-			}
-			break;
-		case EMp3SamplingFreq48000:	//sampling frequency 48000
-			{	
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate48000Hz;
-			}
-			break;
-		default:	//default sampling frequency 22050
-			{	
-			iSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz;
-			}
-			break;	
-		}
-	//sets the channel information	
-	if( KMp3ChannelMono == iAudioInfo.iChannel ) //0 indicates mono
-		{
-		iSettings.iChannels = TMdaAudioDataSettings::EChannelsMono;	
-		}		
-	else	//else 1 it indicates it is stereo
-		{
-		iSettings.iChannels = TMdaAudioDataSettings::EChannelsStereo;	
-		}				
-	IRLOG_DEBUG( "CIRMP3Player::GetMP3AudioProperties - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: DoFindnDecodeMP3Header
-// Function is used to find the mp3 header and decode the mp3 header
-// This function do have hard coded values and these value remains as such
-// as long as the standard remains, so used as such
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::DoFindnDecodeMP3Header()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::DoFindnDecodeMP3Header" );
-	//first buffer is discarded
-	TUint8* input = iInputBufferPtr;
-	//end ptr is calculated
-	TUint8* endptr = iInputBufferPtr + iInputBufferSize;
-	
-	//holds the 4 bytes of data
-	TUint value = 0; //value zero is intialized
-	TBool headerfound = EFalse;
-	
-	//value are to hardcoded as this is the standard way of implement
-	// the MP3 header decoding
-	while( input < endptr && !headerfound )
-		{
-		//stepsuccess indicates the success in each step or stage of header decoding,
-		//incase of failure we will not go for next step
-		TBool stepsuccess = EFalse;
-		//initially no header is found
-		//assign the value to zero initially for clearing the value
-		//then assign next 32 bits of data to value	
-		value = 0; //value is cleared
-		value |= input[0]<<KTwentyFour; //first 8 bit is shift 24bits copied (or) to "value"
-		value |= input[1]<<KSixteen; //second 8 bit is shift 24bits copied (or) to "value"
-		value |= input[2]<<KEight;//third 8 bit is shift 24bits copied (or) to "value"
-		value |= input[KThree];//last 8 bit is shift 24bits copied (or) to "value"
-		
-		// sync bytes found
-		// for performance reasons check already that it is not data within an empty frame (all bits set)
-		// therefore check wether the bits for bitrate are all set -> means that this is no header
-		if ( (input[0] == 0xFF) && ( ( input[1] & 0xE0 ) == 0xE0 ) && ( ( input[2] & 0xF0 ) != 0xF0 ) )
-			{
-			//header is found
-			//first level of header decoding is success, so stepsuccess = ETrue
-			stepsuccess = ETrue;
-			//version information is stored in 2 bits starting from 19th bit of header
-			//two get only 2bits we are doing an AND operation with 0b011 (0x03)				
-			TInt index = (value >> 19) & 0x03;
-			//! Gets the version information of MPEG
-			
-			TInt version = index; 	 //MPEG 2.5 	00
-									 //reservered   01
-									 //MPEG 2       10
-									 //MPEG 1       11
-			//if header information is 0x01						 
-			iAudioInfo.iVersion = version;
-			if( 0x01 == iAudioInfo.iVersion ) 
-				{
-				//bit pattern 0x01 indicates that version is reserved 							  
-				// and is considered as incorrect header information
-				stepsuccess = EFalse;	
-				}
-				
-			else
-				{
-				//bit pattern 0x00 indictes MPEG version is 2.5
-				//bit pattern 0x10 indictes MPEG version is 2
-				//MPEG 2.5 (0x00) and MPEG 2 (0x10) version
-				if( (0x00 == iAudioInfo.iVersion) || 
-					(0x02 == iAudioInfo.iVersion) )
-					{
-					//576 samples per frame
-					//there is 576 samples per frame
-					iAudioInfo.iSamplesPerFrame = KSamplesPerFrame1;
-					}
-				else 
-					{
-					//MPEG 1 version (0x11) 
-					//for MPEG 1 there is 1152 samples per frame
-					iAudioInfo.iSamplesPerFrame = KSamplesPerFrame2;
-					}
-				}				
-				
-			if( stepsuccess )
-				{
-				//layer information from the header is obtained from 2 bits starting 17th Bit
-				//information is extracted to index. 				
-				index = ( value >> 17 ) & 0x03;     
-				if( 0x01 != index ) 	//Layer 3 check if its layer 2 to layer 1 								
-					{				    //we will consider the header is not proper
-					stepsuccess = EFalse;
-					}
-				else
-					{
-					iAudioInfo.iLayer = 2; //Layer 3
-					//for selection bitrate we have need a combination of MPEG version, layer information
-					//and selection bits. the selection bits starts from 12th bits of mp3 header
-					//the selection byte is extracted into the index		
-					index = (value >> 12) & 0x000F;
-					TInt versionindex = 0;
-					if( 0x11 == version )
-						{
-						//index of the array is 0
-						versionindex = 0;	
-						}
-					else
-						{
-						//index of array is 1
-						versionindex = 1;	
-						}
-					//getting the bit rate
-					iAudioInfo.iBitRate = 
-						KBitRate[versionindex][iAudioInfo.iLayer][index];  
-					if( iAudioInfo.iBitRate == 0 ) //since bit rate is zero we consider as header is not proper
-						{
-						stepsuccess = EFalse;
-						}						
-					}			
-				}
-				
-			if( stepsuccess )
-				{
-				//sampling rate is obtained by a combination of MPEG version and
-				//selection bits. There are 2 selection bits starting from 10th bit
-				//and is extracted (AND with 0x03) from header and stored in index 
-				index = ( value >> 10 ) & 0x03;
-				
-				//! Gets the sampling frequency				
-				iAudioInfo.iSamplingRate = 
-					KMP3SamplingRate[iAudioInfo.iVersion][index];
-				if( 0 == iAudioInfo.iSamplingRate ) //if sampling rate is 0 it is invalidated
-					{
-					stepsuccess = EFalse;	
-					}
-				//padding information is obtained from 9th bit of mp3 header
-				iAudioInfo.iPadding = (value >> 9) & 0x01; //padding
-				
-				//the information for selection of channel is stored in 2bits starting from 6th bit of
-				//mp3 header and is decoded and kept in index for selection of channel
-				index = ( value >> 6 ) & 0x0003;				
-				iAudioInfo.iChannel = KChannelInfo[index]; //0 for mono and 1 for stereo			
-				
-				//framesize = (144 * bitrate)/(padding + sampling rate)
-				if( stepsuccess )
-					{//multiplication of 1000 is to convert kbs to bs
-					iAudioInfo.iFrameSize = (KOneFourFour * iAudioInfo.iBitRate * KThousand)
-						/(iAudioInfo.iPadding + iAudioInfo.iSamplingRate);	
-					}
-				//cross checking the header with next header
-				//both sampling frequency matches the function will return ETrue else EFalse	
-				if( !CrossCheckHeader(input) ) 
-					{
-					stepsuccess = EFalse;
-					}
-				}
-			if( stepsuccess )
-				{
-				//header is found
-				headerfound = ETrue;	
-				}
-			else
-				{
-				//header is not found
-				input++;	
-				}
-			} // sync bytes found
-			else
-			{
-			//header sync bits doesn't match
-			input++;	
-			}
-		}
-	IRLOG_DEBUG( "CIRMP3Player::DoFindnDecodeMP3Header - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: CrossCheckHeader
-// Function is cross checks sampling rate  
-// This function do have hard coded values and these value remains as such
-// as long as the standard remains, so used as such
-// ---------------------------------------------------------------------------
-//
-TBool CIRMP3Player::CrossCheckHeader(TUint8* aInput)
-	{
-	IRLOG_DEBUG( "CIRMP3Player::CrossCheckHeader" );
-	if( !aInput )
-		{
-		return EFalse;
-		}
-	//next header is to taken
-	TUint8* input = aInput + iAudioInfo.iSamplesPerFrame;
-	TUint8* endptr = iInputBufferPtr + iInputBufferSize 
-		- KMp3FrameHeaderSize;
-	TUint32 samplingrate = 0;
-	TBool headerfound = EFalse;
-	
-	TUint value = 0;
-	TInt version = 0;
-	TUint channel = 0;
-	TUint layer = 0;
-	while( input < endptr && !headerfound )
-		{
-		//header is not found
-		TInt successheader = EFalse;
-		//assign the value to zero initially for clearing the value
-		//then assign next 32 bits of data to value			
-		value = 0;
-		value |= input[KZero]<<KTwentyFour;
-		value |= input[KOne]<<KSixteen;
-		value |= input[KTwo]<<KEight;
-		value |= input[KThree];
-			
-		// sync bytes found
-		// for performance reasons check already that it is not data within an empty frame (all bits set)
-		// therefore check wether the bits for bitrate are all set -> means that this is no header
-		if ( (input[0] == 0xFF) && ( ( input[1] & 0xE0 ) == 0xE0 ) && ( ( input[2] & 0xF0 ) != 0xF0 ) )
-			{
-			//header is obtained
-			successheader = ETrue;
-			//version information is stored in 2 bits starting from 19th bit of header
-			//two get only 2bits we are doing an AND operation with 0b011 (0x03)
-			TInt index = (value >> 19) & 0x03;
-			//! Gets the version information of MPEG
-			
-			version = index; 	 //MPEG 2.5 	00
-										 //reservered   01
-										 //MPEG 2       10
-										 //MPEG 1       11
-			//if header information is 0x01							 
-			if( 0x01 == version ) //indicates that version is reserved and is considered 
-				{				  //as incorrect header information
-				//header is not valid							  
-				successheader = EFalse;
-				input++;
-				headerfound = EFalse;	
-				}
-				
-			index = ( value >> 6 ) & 0x0003;
-			channel = KChannelInfo[index]; //0 for mono and 1 for stereo	
-			
-			index = ( value >> 17 ) & 0x03;
-			if ( index == 0x01 )
-				layer = 2;
-				
-			if( successheader )	
-				{
-				//sampling rate is obtained by a combination of MPEG version and
-				//selection bits. There are 2 selection bits starting from 10th bit
-				//and is extracted (AND with 0x03) from header and stored in index 
-				index = (value >> 10) & 0x03;				
-				//! Gets the sampling frequency				
-				samplingrate = KMP3SamplingRate[version][index];
-				if( 0 == samplingrate ) //if sampling rate is 0 it is invalidated
-					{
-					//header is not valid
-					input++;	
-					}
-				else
-					{
-					//header is obtained
-					headerfound = ETrue;	
-					}	
-				}					
-			} // sync bytes found
-			else
-			{
-			//header is not valid
-			input++;	
-			}
-		}
-	//if sampling rate match with one we initially decoded we return ETrue else EFalse
-	// version change never possible
-	// layer change never possible
-	// sampling rate change never possible
-	// from mono to stereo never possible
-	if ( iAudioInfo.iSamplingRate == samplingrate && iAudioInfo.iVersion == version
-			&& iAudioInfo.iChannel == channel
-		 	&& iAudioInfo.iLayer == layer )
-		{
-		IRLOG_DEBUG( "CIRMP3Player::CrossCheckHeader - Exiting (1)." );
-		return ETrue;	
-		}		
-	else
-		{
-		IRLOG_DEBUG( "CIRMP3Player::CrossCheckHeader - Exiting (2).");
-		return EFalse;	
-		}		
-	}
-
-	
-									//Call back functions
-
-// ---------------------------------------------------------------------------
-// Function: MaoscBufferCopied
-// call back to be implemented for using CMdaAudioOutputStream
-// Call as callback from the CMdaAudioOutputStream::WriteL
-// after frame work has copied stream to a buffer
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
-	{
-	IRLOG_DEBUG( "CIRMP3Player::MaoscBufferCopied" );	
-	if( aError )
-		{
-		IRLOG_ERROR2( "CIRMP3Player::MaoscBufferCopied - Error in buffering (%d)", aError );
-		//error in playing then return
-		IRRDEBUG2("CIRMP3Player::MaoscBufferCopied - EError", KNullDesC);
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		return;
-		}
-	else
-		{
-       if ( iCurrentVolume < iConfig.iVolume )
-            {
-            iCurrentVolume = iConfig.iVolume;
-            IRLOG_INFO2( "CIRMP3Player::MaoscBufferCopied - Setting volume to %d", iCurrentVolume );
-            iAudioPlayer->SetVolume( iCurrentVolume );
-            }
-		if( iSinkBufferQ.IsEmpty() )
-			{
-			//previously played buffer is empty
-			//should never happen
-		IRRDEBUG2("CIRMP3Player::MaoscBufferCopied - EError1", KNullDesC);
-			iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-			return;	
-			}
-		else
-			{
-			//previously played buffer is removed	
-			iTempBufferHolder = iSinkBufferQ.First();
-			//played buffer is removed from sink queue		
-			iSinkBufferQ.Remove(*iTempBufferHolder);
-			//removed buffer is appended to end of source queue
-			iSourceBufferQ.AddLast(*iTempBufferHolder);
-			
-			//the first buffer of the source buffer is given to refill					
-			if( !iSourceBufferQ.IsEmpty() )
-				{
-				iTempBufferHolder = iSourceBufferQ.First();	
-				}			
-			//if stop is called during rebuffering
-			if( !iStopPlayerBuffering )
-				{
-				// if player is stopped it has to stop buffering
-				iTempbuffer = iTempBufferHolder->Des();
-				iInputBuffer.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize); 
-				iChannel->FilltheBuffer(iInputBuffer);	
-				}
-			//if stop state we have to return
-			if( iStopState )
-				{
-				IRLOG_DEBUG( "CIRMP3Player::MaoscBufferCopied - Exiting (1)." );	
-				//should continue this loop unless play is triggered
-				return;	
-				}
-						
-			//plays buffer if there buffer to play
-			if( !iSinkBufferQ.IsEmpty() )
-				{
-				//sink Buffer queue has buffer to play
-				iTempBufferHolder = iSinkBufferQ.First();
-				iTempbuffer = iTempBufferHolder->Des();
-							
-				iInput.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);				
-
-#ifdef __WINS__
-				iTestingAudioPlayer->Write();
-#else				
-				//writing to MMF buffer
-				TRAPD(err,iAudioPlayer->WriteL(iInput));
-
-				if( err )
-					{
-			IRRDEBUG2("CIRMP3Player::MaoscBufferCopied - EError2", KNullDesC);
-					//if playing failed
-					iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-					return;	
-					}
-#endif //__WINS__
-				}
-			else
-				{
-				//rebuffering
-				if( !iStopPlayerBuffering )
-					{
-					//if sink buffer is empty
-					//we have to rebuffer
-					iReBuffering = ETrue;
-					Play();
-					}								
-				}
-			}
-		}
-	IRLOG_DEBUG( "CIRMP3Player::MaoscBufferCopied - Exiting (2)." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: MaoscPlayComplete
-// call back to implement for using CMdaAudioOutputStream
-// Call as callback from the CMdaAudioOutputStream::WriteL
-// after play is completed
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::MaoscPlayComplete(TInt aError)
-	{
-	IRLOG_DEBUG( "CIRMP3Player::MaoscPlayComplete" );
-	if( !iSkipPlayCompleted )
-		{
-	IRRDEBUG2("CIRMP3Player::MaoscPlayComplete EStoppedPlaying", KNullDesC); 
-
-		//sending the stop status
-		iChannel->SentRequest( EStoppedPlaying, aError );	
-		}
-	IRLOG_DEBUG( "CIRMP3Player::MaoscPlayComplete - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: MaoscOpenComplete
-// call back implemented for using CMdaAudioOutputStream
-// Call as callback from the CMdaAudioOutputStream::Open
-// ---------------------------------------------------------------------------
-//
-void CIRMP3Player::MaoscOpenComplete( TInt aError )
-	{	
-	IRLOG_DEBUG( "CIRMP3Player::MaoscOpenComplete" );
-	if( aError )
-		{		
-		IRLOG_ERROR( "CIRMP3Player::MaoscOpenComplete - error end" );
-		IRRDEBUG2("CIRMP3Player::MaoscOpenComplete - EError", KNullDesC);
-		//open failed
-		iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-		return;	
-		}
-	else
-		{
-		TInt err( KErrNone );
-		
-#ifdef __WINS__
-	      err=0;
-#else
-		//Setting the data type of player as MP3
-		TRAP(err, iAudioPlayer->SetDataTypeL(iDataType.FourCC()));  //set type the data as MP3 type
-	      
-		if ( err )
-			{
-			if ( KErrNotSupported == err )
-				{
-			IRRDEBUG2("CIRMP3Player::MaoscOpenComplete - EError1", KNullDesC);
-				iChannel->SentRequest( EError, KErrNotSupported );
-				}
-			else
-				{
-			IRRDEBUG2("CIRMP3Player::MaoscOpenComplete - EError2", KNullDesC);
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );
-				}
-			return;
-			}
-#endif //__WINS__
-		
-		
-		//during rebuffering current volume is to be taken	
-		if( iNeedReBuffering )
-			{
-			iConfig.iVolume = iChannel->FetchVolume();	
-			}			
-		
-		//Computes the current volume and sets the volume
-		TInt index = iAudioPlayer->MaxVolume()/KNoVolumeLevels;	
-		iConfig.iVolume = iConfig.iVolume * index;
-		//if the given volume is greater than max volume it made to maximum volume
-		//this may happen if the first time volume exceeds the limits
-		if( iConfig.iVolume > iAudioPlayer->MaxVolume() )
-			{
-			iConfig.iVolume = iAudioPlayer->MaxVolume();	
-			}			
-		//else if the given volume is less than zero it made to zero 
-		//this may happen if the first time volume goes below the limits
-		if( iConfig.iVolume < KZeroVolume )
-			{
-			iConfig.iVolume = KZeroVolume;	
-			}			
-		
-		// The actual setting of the volume is delayed to MaoscBufferCopied method.
-		// This was due to some error in N91 sound subsystem, which caused the
-		// volume not to adjust in some cases. 
-	    iCurrentVolume = 0;
-        iAudioPlayer->SetVolume( iCurrentVolume );
-		
-		iFirstTime = ETrue;
-		iNeedReBuffering = ETrue;
-		
-		if( !iNewPlayer )
-			{
-			//player is rebuffering or stop and played
-			TRAP(err,ReCreateBufferL());
-			if ( err )
-				{
-				IRRDEBUG2("CIRMP3Player::MaoscOpenComplete - EError3", KNullDesC);
-				iChannel->SentRequest( EError, KIRCtrlCmdGeneralPlayerError );	
-				return;
-				}
-			
-			//initiates the refilling of buffers
-			iTempBufferHolder = iSourceBufferQ.First();
-			iTempbuffer = iTempBufferHolder->Des();
-			iInputBuffer.Set(iTempbuffer,iPlayBufferSize,iPlayBufferSize);			
-			iChannel->SentRequest( EBufferFillStart, iBufferPercentage );
-			//Call FilltheBuffer for first time 
-			iChannel->FilltheBuffer(iInputBuffer);	//start fill the data	
-			}
-		else
-			{
-			//First time playing
-			BufferFilled();
-			}
-		}
-	IRLOG_DEBUG( "CIRMP3Player::MaoscOpenComplete - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// CIRMP3Player::GetMediaClientInstance()
-// Returns the Audio Player Instance
-// ---------------------------------------------------------------------------
-//
-CMdaAudioOutputStream* CIRMP3Player::GetAudioPlayer()
-	{
-	IRLOG_DEBUG( "CIRMP3Player::GetMediaClientInstance " );
-	return iAudioPlayer;	
-	}
--- a/internetradio2.0/mediaenginesrc/irtestingaudioplayer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "irtestingaudioplayer.h"
-#include "irmp3player.h"
-
-// Constants
-
-const TInt KTWOMILLION = 2000000 ;
-
-CIRTestingAudioPlayer::CIRTestingAudioPlayer(CIRMP3Player& aMP3Player):
-			 CActive(CActive::EPriorityStandard),iMP3Player(aMP3Player)
-{
-		iCounter=0;
-}
-
-CIRTestingAudioPlayer::~CIRTestingAudioPlayer()
-{
-	// Make sure we're cancelled
-	Cancel();
-	iTimer.Close();
-
-}
-
-CIRTestingAudioPlayer* CIRTestingAudioPlayer::NewL(CIRMP3Player& aMP3Player)
-{
-	CIRTestingAudioPlayer* self = new (ELeave) CIRTestingAudioPlayer(aMP3Player);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	return self;
-}
-void CIRTestingAudioPlayer::ConstructL()
-{
-	iTimer.CreateLocal();
-}
-
-void CIRTestingAudioPlayer::IssueRequest()
-{
-
-	// Request another wait
-  	iStatus = KRequestPending;
-    iTimer.After( iStatus, KTWOMILLION );
-    //console->Printf(_L("\n Set Active called after iTimer()"))
-    SetActive();
-    //console->Printf(_L("\n Leaving Issue Request"))
-}
-
-void CIRTestingAudioPlayer::DoCancel()
-{
-	iTimer.Cancel(); // Close the ASP
-}
-
-void CIRTestingAudioPlayer::RunL()
-	{
-
-	switch(iAudioFuncType)
-		{
-		case EOpen:
-			{
-			iMP3Player.MaoscOpenComplete(0);
-			}
-		break;
-		case EWriteLBufferCopied:
-			{
-			TBuf8<2> dummy;
-			iMP3Player.MaoscBufferCopied(0,dummy);
-			}
-		break;
-		case EWriteLPlayComplete:
-			{
-			iMP3Player.MaoscOpenComplete(0);
-			}
-			break;
-		default:
-			{
-
-			}
-		}
-	}
-
-void CIRTestingAudioPlayer::Open()
-	{
-	iAudioFuncType = EOpen;
-	IssueRequest();
-	}
-void CIRTestingAudioPlayer::Write()
-	{
-	iAudioFuncType = EWriteLBufferCopied;
-	IssueRequest();
-	}
-void CIRTestingAudioPlayer::Stop()
-	{
-	iTimer.Cancel();
-	}
-void CIRTestingAudioPlayer::Close()
-	{
-	// do nothing
-	}
--- a/internetradio2.0/networkcontrollerinc/iractivenetworkobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +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 IRACTIVENETWORKOBSERVER_H_
-#define IRACTIVENETWORKOBSERVER_H_
-
-
-#include "irnetworkcontrollerobserver.h"
-
-class MIRActiveNetworkObserver
-	{
-public:
-	/**
-	 * Notifies all observers whose network request is active
-	 * to reissue the request  
-	 * NotifyActiveNetworkObserversL()
-	 */	
-	 virtual void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)= 0;
-	 
-	 
-	 /**
-	 * Notifies all observers whose network request is active
-	 * to reset the pending request status  
-	 * ResetPendingRequests()
-	 */	
-	 virtual void ResetPendingRequests(TBool aValue)= 0;
-
-	};
-
-#endif /*IRACTIVENETWORKOBSERVER_H_*/
-
--- a/internetradio2.0/networkcontrollerinc/irdatatransferobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*
-* Copyright (c) 2005-2008 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:  Data transfer interfaces.
-*
-*/
-
-
-#ifndef M_MIRDATATRANSFEROBSERVER_H
-#define M_MIRDATATRANSFEROBSERVER_H
-
-#include <e32def.h>
-
-class RHTTPSession;
-class MIRDataTransferObserver;
-
-/**
- * Data transfer tracker interface.
- *
- * Provides means to attach itself to an existing network session to track the data amounts
- * transferred through it, and also an API through which raw data amounts can be manually
- * inputted (this is mainy the case when raw sockets are used directly).
- *
- * For getting notifications from the application's data transfer amounts on the core side,
- * this class supports an observer interface through which data transfer events are notified.
- */
-NONSHARABLE_CLASS( MIRDataTransferTracker )
-    {
-
-public:
-
-    /**
-     * Supported data transfer categories.
-     */
-    enum TIRTransferCategory
-        {
-
-        /**
-         * The category for the data is unknown.
-         */
-        EIRTransferCategoryUnknown,
-
-        /**
-         * The category for the data is SDS.
-         */
-        EIRTransferCategoryIsds,
-
-        /**
-         * The category for the data is content show.
-         */
-        EIRTransferCategoryAudio
-
-        };
-
-    /**
-     * Simple struct to keep hold of all the different data amounts transferred.
-     *
-     * The actual total amount of bytes of transferred data through the connection
-     * is the amount of total bytes sent added to the amount of total bytes received.
-     */
-    NONSHARABLE_STRUCT( TIRDataTransferPckg )
-        {
-
-        /**
-         * The total amount of bytes sent originating from all traffic.
-         * This is simply the sum of all the categorized data sent amounts.
-         */
-        TInt iBytesSentTotal;
-
-        /**
-         * The total amount of bytes received originating from all traffic.
-         * This is simply the sum of all the categorized data received amounts.
-         */
-        TInt iBytesReceivedTotal;
-
-        /**
-         * The total amount of bytes sent originating from unknown traffic.
-         */
-        TInt iBytesSentUnknown;
-
-        /**
-         * The total amount of bytes received originating from unknown traffic.
-         */
-        TInt iBytesReceivedUnknown;
-
-        /**
-         * The total amount of bytes sent originating from station directory traffic.
-         */
-        TInt iBytesSentIsds;
-
-        /**
-         * The total amount of bytes received originating from station directory traffic.
-         */
-        TInt iBytesReceivedIsds;
-
-        /**
-         * The total amount of bytes sent originating from content show traffic.
-         */
-        TInt iBytesSentAudio;
-
-        /**
-         * The total amount of bytes received originating from content show traffic.
-         */
-        TInt iBytesReceivedAudio;
-
-        };
-
-public:
-
-    /**
-     * Sets the observer that is notified of data transfer events.
-     *
-     * @param   aObserver           The observer to set, or NULL if none.
-     */
-    virtual void SetObserver( MIRDataTransferObserver* aObserver ) = 0;
-
-    /**
-     * Returns the current data transfer amounts.
-     *
-     * This always reflects the current situation, and thereby does not
-     * take the threshold mechanism into account.
-     *
-     * @return  The current data transfer amounts.
-     */
-    virtual const TIRDataTransferPckg& TransferredData() const = 0;
-
-    /**
-     * Binds the tracker to an existing and opened HTTP session.
-     *
-     * @param   aSession            Session to bind the tracker to.
-     * @param   aCategory           Transfer category to record the data under.
-     */
-    virtual void BindL( RHTTPSession aSession, TIRTransferCategory aCategory ) = 0;
-
-    /**
-     * Notifies of raw bytes transferred through the connection.
-     *
-     * Raw sockets cannot be observer automatically, so if they are used, then manual
-     * notification is required on the user's part.
-     *
-     * @param   aBytesSent          Bytes sent through the raw socket.
-     * @param   aBytesReceived      Bytes received through the raw socket.
-     * @param   aCategory           Transfer category to record the data under.
-     */
-    virtual void RawDataTransferredL( TInt aBytesSent,
-    		 TInt aBytesReceived, TIRTransferCategory aCategory ) = 0;
-
-    };
-
-/**
- * Interface which all data transfer events are passed through.
- */
-class MIRDataTransferObserver
-    {
-
-public:
-
-    /**
-     * Invoked when a data transfer event occurs.
-     *
-     * The amount of data supplied as the parameter is the absolute amount of data transferred during
-     * the life time of the connection. The threshold after which the call back is invoked is internal,
-     * resulting in that it may not always be instantly called unless a predefined amount of data has
-     * already been transferred since the last call back was made.
-     *
-     * @param   aData           Data amounts that have been transferred through the connection.
-     */
-    virtual void HandleDataTransferEventL( 
-    			const MIRDataTransferTracker::TIRDataTransferPckg& aData ) = 0;
-
-    };
-
-#endif // M_MIRDATATRANSFEROBSERVER_H
--- a/internetradio2.0/networkcontrollerinc/irdatatransfertracker.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Tracks data transmitted through a network connection.
-*
-*/
-
-
-#ifndef C_CIRDATATRANSFERTRACKER_H
-#define C_CIRDATATRANSFERTRACKER_H
-
-#include <mhttpfilter.h>
-
-#include "irdatatransferobserver.h"
-
-/**
- * Tracks data transmitted through a network connection.
- *
- * Data sent or received over HTTP sessions are logged with the implemented HTTP filter.
- * For raw sockets, the implementation requires that the user of the socket notifies
- * him of data transfer explicitly.
- */
-NONSHARABLE_CLASS( CIRDataTransferTracker )
-    : public CBase, public MIRDataTransferTracker, public MHTTPFilter
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     *
-     * @return  The created object. Transfers ownership.
-     */
-    static CIRDataTransferTracker*  NewL( );
-
-    /**
-     * Destructor.
-     */
-    ~CIRDataTransferTracker();
-
-// from base class MIRDataTransferTracker
-
-   void SetObserver( MIRDataTransferObserver* );
-    const TIRDataTransferPckg& TransferredData() const;
-    void BindL( RHTTPSession , TIRTransferCategory );
-    void RawDataTransferredL( TInt , TInt , TIRTransferCategory );
-
-// from base class MHTTPFilter
-
-    void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
-
-private:
-
-    /**
-     * Constructor.
-     */
-    CIRDataTransferTracker();
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL() const;
-
-    /**
-     * Calculates the header field sizes in bytes from the specified headers.
-     *
-     * @param   aTransaction        HTTP transaction for the headers.
-     * @param   aHeaders            Headers to calculate the size from.
-
-     * @return  Size of the headers in bytes.
-     */
-    TInt HeaderSize(const RHTTPTransaction aTransaction, RHTTPHeaders aHeaders );
-
-    /**
-     * Parses the header sizes (both request and response) of the supplied HTTP transaction,
-     * logging it under the specified category.
-     *
-     * @param   aTransaction        Transaction to parse the headers from.
-     * @param   aCategory           Transfer category to record the data under.
-     */
-    void ParseHeaderSizeL(const RHTTPTransaction aTransaction, TIRTransferCategory aCategory );
-
-    /**
-     * Parses the body size of the supplied HTTP transaction, logging it under the specified category.
-     *
-     * @param   aTransaction        Transaction to parse the headers from.
-     * @param   aCategory           Transfer category to record the data under.
-     */
-    void ParseBodySizeL(const RHTTPTransaction aTransaction, TIRTransferCategory aCategory );
-
-    /**
-     * Processes raw data sent and/or received via the connection.
-     *
-     * @param   aBytesSent          The number of bytes that were sent.
-     * @param   aBytesReceived      The number of bytes that were received.
-     * @param   aCategory           Transfer category to record the data under.
-     */
-    void ProcessDataL( TInt aBytesSent, TInt aBytesReceived, TIRTransferCategory aCategory );
-
-    /**
-     * Dispatches the notification of the data transfer conditionally.
-     *
-     * If the threshold between the last notification's data transfer amount and the current
-     * data transfer amount is not exceeded, then no notification is dispatched.
-     */
-    void DispatchNotificationL();
-
-private:
-
-    /**
-     * Data transfer observer.
-     * Not owned.
-     */
-    MIRDataTransferObserver* iObserver;
-
-    /**
-     * Persistent storage for the data amounts transferred.
-     */
-    MIRDataTransferTracker::TIRDataTransferPckg iPckg;
-
-    /**
-     * The amount of bytes transferred since last notification was dispatched.
-     */
-    TInt iBytesSinceLastNotification;
-
-    /**
-     * The flag to determine Byte Counter crossed first threshold
-     */
-	TBool bThresholdCrossed;
-
-    };
-
-#endif // C_CIRDATATRANSFERTRACKER_H
--- a/internetradio2.0/networkcontrollerinc/irfilteredapreader.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Used to read in only access points with the desired characteristics. 
-*
-*/
-
-
-#ifndef CIRFILTEREDAPREADER_H
-#define CIRFILTEREDAPREADER_H
-
-#include <commsdattypesv1_1.h>
-
-using namespace CommsDat;
-
-/**
- *  Reads the access points for Network Controller component.
- * 
- *  Returns only those entries from IAP table that are referenced from 
- *  WAP_ACCESS_POINT table.
- * 
- *  In addition to that an instance of class performs filtering based on
- *  configured criteria.   
-  *
- */
-NONSHARABLE_CLASS( CIRFilteredApReader ): public CBase
-    {
-public:
-    // The filtering flags
-    static const TInt KIRFilterNone         = 0x0;
-    static const TInt KIRFilterWAPOnly      = 0x1;
-    static const TInt KIRFilterWAPMandatory = 0x2;
-    static const TInt KIRFilterEasyWLAN     = 0x4;
-    
-public:
-    /**
-     * Two-phased constructor.
-     * @param aFilterFlags Defines the filtering criteria applied to entries
-     * @return Instance of CIRFilteredApReader
-     */
-    static CIRFilteredApReader* NewL( TInt aFilterFlags );
-
-    /**
-     * Two-phased constructor.
-     * @param aFilterFlags Defines the filtering criteria applied to entries
-     * @return Instance of CIRFilteredApReader
-     */
-    static CIRFilteredApReader* NewLC( TInt aFilterFlags );
-
-    /**
-     * Gets the first appropriate IAP record.
-     * Initialises the required objects for iteration.
-     * 
-     * Only those records that have the desired characteristics are returned.
-     *
-     * @return The suitable record, if found. NULL, if no record was found
-     */
-    CCDIAPRecord* FirstRecordL();    
-
-    /**
-     * Gets the next appropriate IAP record.
-     * Only those records that have the desired characteristics are returned.
-     *
-     * @return The suitable record, if found. NULL, if no record was found
-     */
-    CCDIAPRecord* NextRecordL();
-
-private:
-    /**
-     * C++ Default constructor.
-     * 
-     * @param aFilterFlags Defines the filtering criteria applied to entries 
-     */
-    CIRFilteredApReader( TInt aFilterFlags );
-
-    /**
-     * Second phase constructor
-     */
-    void ConstructL();
-
-    /**
-     * Destructor.
-     */
-    ~CIRFilteredApReader();
-    
-    /**
-     * Returns the current record.
-     * 
-     * @return The current record.
-     */
-    CCDWAPAccessPointRecord* CurrentRecordL() const;
-
-    /**
-     * Moves the iterator to next record in WAPAccessPoint table.
-     * 
-     * @return ETrue if there was more records, EFalse if not.
-     */
-    TBool MoveToNextRecord();
-
-    /**
-     * Loads items from WAPIPBearer and IAP tables that are
-     * referenced by the current record.
-     */
-    TBool LoadCurrentApDetailsL();
-    
-    /**
-     * Performs the filtering.
-     * 
-     * Applies the different filtering criteria according to configured
-     * policy (flags).
-     *
-     * @return ETrue if the record was let through, EFalse if the record was filtered out.
-     */
-    TBool FilterL() const;
-
-    /**
-     * Filters the access point entries that have the mandatory WAP parameters.
-     *
-     * Currently only GatewayAddress of WAPIPBearer is checked.
-     * 
-     * Examining the StartPage field of WAPAccessPoint table proved to be 
-     * too strict filter.  
-     * 
-     * @return ETrue if the record was let through, EFalse if the record was filtered out.
-     */
-    TBool FilterWAPMandatoryL() const;
-    
-    /**
-     * Filters the access point entries that use IAPService, whose type is WAPOnly.
-     * 
-     * @return ETrue if the record was let through, EFalse if the record was filtered out.
-     */
-    TBool FilterWAPOnlyL() const;
-
-    /**
-     * Filters the access point entries whose name is "EasyWlan".
-     * 
-     * This filtering should be done in more clever way.
-     * 
-     * @return ETrue if the record was let through, EFalse if the record was filtered out.
-     */
-    TBool FilterEasyWlanL() const;
-
-private: // data
-
-    /**
-     * The database accessor.
-     * Owned.
-     */
-    CMDBSession* iDbSession;
-    
-    /**
-     * All the records in WAPAccessPoint table. 
-     * Owned.
-     */
-    CMDBRecordSet<CCDWAPAccessPointRecord>* iWapTable;
-    
-    /**
-     * Index of the current record.
-     */
-    TInt iWapTableIndex;
-    
-    /**
-     * WAPIPBearer entry associated with current record.
-     * Owned.
-     */
-    CCDWAPIPBearerRecord* iWapIpBearerRecord;
-
-    /**
-     * IAP record associated with current record.
-     * Owned.
-     */
-    CCDIAPRecord* iIapRecord;
-    
-    /**
-     * Flags that define the applied filtering criteria.
-     */
-    TInt iFilterFlags;
-    };
-#endif // CIRFILTEREDAPREADER_H
--- a/internetradio2.0/networkcontrollerinc/irnetworkcontroller.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Controls the network interface(s) for Internet Radio.
-*
-*/
-
-
-#ifndef CIRNETWORKCONTROLLER_H
-#define CIRNETWORKCONTROLLER_H
-
-#include <badesca.h>
-#include <es_sock.h>
-#include <rhttpsession.h>
-
-#include <comms-infras/cs_mobility_apiext.h>
-#include "iractivenetworkobserver.h"
-
-
-#include "irnetworkcontrollerobserver.h"
-#include "irdatatransfertracker.h"
-
-class CIRNetworkObserver;
-class CIRSettings;
-class MIRActiveNetworkObserver;
-
-/**
- * This class provides the interface to IRNetworkController component
- *
- * @code
- * // CIRNetworkController follows a singleton pattern
- * // hence the destructor is private and to destroy it we need to use an API
- * // For creating a network controller which has provision for network monitoring
- * // we need to pass the reference of the observer which should derive from
- * // MIRNetworkControllerObserver class the network even observed will be
- * // indicated to the observer with the call back IRNetworkEvent() function
- * CIRNetworkController* iNetworkController = CIRNetworkController::NewL(iObserver)
- *
- * // For creating a network controller which does not have provision for network monitoring
- * // we use the overloaded NewL() of CIRNetworkController
- * CIRNetworkController* iNetworkController = CIRNetworkController::NewL()
- *
- * // This API is used to destroy the network controller handle
- * iNetworkController->DestroyNetworkController();
- *
- * // This API returns the instance of RConnection
- * // The same RConnection object is used across the entire iRAPP components to
- * // provide central arbiter and monitoring of Network Connection
- * iNetworkController->GetIRConnection();
- *
- * // This API returns the instance of RSocketServ
- * // The same RSocketServ object is used across the entire iRAPP components to
- * // provide central arbiter and monitoring of Network Connection
- * iNetworkController->GetIRSocketServer();
- *
- * // This API returns a pointer to the x-wap-profile string.
- * // The ownership of the object is passed onto the caller
- * iNetworkController->GetWapProfString();
- *
- * // This API returns a pointer to the UAProf string.
- * // The ownership of the object is passed onto the caller
- * iNetworkController->GetUAProfString();
- *
- * // This API returns ETrue of network connection is up and running EFalse
- * // otherwise
- * iNetworkController->GetNetworkStatus();
- *
- * // This API returns the IAP id of the connected connection
- * // this is used by download manager for choosing the access point
- * iNetworkController->GetIAPId();
- *
- * // This API is called to initiate access point selection
- * iNetworkController->ChooseAccessPointL();
- *
- * // This API returns ETrue if the phone is in offline mode, EFalse
- * // otherwise
- * iNetworkController->IsOfflineMode();
- *
- * // This API returns ETrue if WLan is supported on the device, EFalse
- * // otherwise
- * iNetworkController->IsWlanSupported();
- *
- * // This API allows the caller to reset the network connection status
- * iNetworkController->ResetConnectionStatus();
- *
- * // This API returns the type of connection open
- * iNetworkController->IdentifyConnectionType();
- *
- * @endcode
- *
- */
-
-NONSHARABLE_CLASS(CIRNetworkController): public CActive, 
-										 public MIRDataTransferObserver,
-									     public MMobilityProtocolResp
-	{
-
-public:
-
-	/**
-	 *  Creates an Instance of CIRNetworkController
-	 *  @return CIRNetworkController*
-	 */
-	IMPORT_C static CIRNetworkController* OpenL(MIRNetworkController* aObserver = NULL);
-
-	/**
-	 *  Conditionally destroys the IRNetworkController object
-	 */
-	IMPORT_C void Close();
-
-	/**
-	 *  Default C++ Destructor
-	 */
-	~CIRNetworkController();
-
-	/**
-	 *  Returns the instance of RConnection
-	 *  The same RConnection object is used across the entire iRAPP components to
-	 *  provide central arbiter and monitoring of Network Connection
-	 *  @return RConnection&
-	 */
-	IMPORT_C RConnection& GetIRConnection();
-
-	/**
-	 *  Returns the instance of RSocketServ
-	 *  The same RSocketServ object is used across the entire iRAPP components to
-	 *  provide central arbiter and monitoring of Network Connection
-	 *  @return RSocketServ&
-	 */
-	IMPORT_C RSocketServ& GetIRSocketServer();
-
-	/**
-	 *  Returns a HBufC pointer to the x-wap-profile string
-	 *  Transfers the ownership of the returned HBufC8 object
-	 *  The caller must takecare of deleting the returned object
-	 *  @return HBufC8*
-	 */
-	IMPORT_C HBufC8* GetWapProfString();
-
-	/**
-	 *  Returns a HBufC pointer to the UAProf string
-	 *  Transfers the ownership of the returned HBufC8 object
-	 *  The caller must takecare of deleting the returned object
-	 *  @return HBufC8*
-	 */
-	IMPORT_C HBufC8* GetUAProfString();
-
-	/**
-	 *  Returns the variable which indicates if connection is active or not
-	 *  @return TBool iIsConnectedToNetwork
-	 */
-	IMPORT_C TBool GetNetworkStatus() const;
-
-	/**
-	 *  Gets the IAP Id of the chosen IAP
-	 *  @return TInt Error code.
-	 */
-	IMPORT_C TInt GetIAPId(TUint32& aIapId) const;
-
-	/**
-	 *  Configures the Access Point which is used by all the components for network connectivity
-	 */
-	IMPORT_C void ChooseAccessPointL(TBool aDefaultConnection = ETrue);
-
-	/*
-	 * cancel configuring access point
-	 */
-	IMPORT_C void CancelConnecting();
-	
-	/**
-	 *  This api is used to determine if the phone is in offline mode
-	 *  @return ETrue if the phone is in offline mode else EFalse
-	 */
-	IMPORT_C TBool IsOfflineMode();
-
-	/**
-	 *  This api is used to determine if the phone supports WLan usage
-	 *  @return ETrue if the phone supports else EFalse
-	 */
-	IMPORT_C TBool IsWlanSupported() const;
-
-	/**
-	 *  Reset the connection status to Disconnected state
-	 */
-	IMPORT_C  void ResetConnectionStatus();
-
-	/**
-	 *  Used to determine the type of connection
-	 *  @return enum describing the type of connection ( GPRS/3G/WiFi )
-	 */
-	IMPORT_C TIRConnectionType IdentifyConnectionType() const;
-
-	/**
-	 *  Binds DataTranseferTracker instance to HTTPSession (Byte Counter Impl)
-	 */
-	IMPORT_C  void InitializeHttpSessionL(const RHTTPSession& aHTTPSession, 
-						MIRDataTransferTracker::TIRTransferCategory aCategory );
-
-	/**
-	 *  Binds LogoDataTranseferTracker instance to Logo HTTPSession (Byte Counter Impl)
-	 */
-	IMPORT_C  void RegisterLogoDataTransferTrackerL( RHTTPSession& aHTTPSession );
-
-	/**
-	 *  DataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
-	 */
-	IMPORT_C  MIRDataTransferTracker& DataTransferTracker();
-
-	/**
-	 *  LogoDataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
-	 */
-	IMPORT_C  MIRDataTransferTracker& LogoDataTransferTracker();
-
-	/**
-	 *  Method to receive notification when logo is downloaded
-	 */
-	void HandleDataTransferEventL( const MIRDataTransferTracker::TIRDataTransferPckg& aData );
-
-	/*
-	 * Registers the observer that will be notified for 
-	 * a network connection.
-	 * Observer requires notification to reissue pending request
-	 */ 
-	IMPORT_C  void RegisterActiveNetworkObserverL(MIRActiveNetworkObserver& aActiveNetworkObserver);
-
-	/**
-	 * DeleteRoamingObserver()
-	 * Used to remove an observer for roaming events from the observer array
-	 */
-	IMPORT_C void DeleteActiveNetworkObserver(MIRActiveNetworkObserver& aActiveNetworkObserver);
-		
-	/**
-	 * Notifies all observers whose network request is active
-	 * to reissue the request  
-	 * NotifyActiveNetworkObserversL()
-	 */	
-	IMPORT_C  void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
-	 
-	 
-	 /**
-	 * Notifies all observers whose network request is active
-	 * to reset the pending request status  
-	 * ResetPendingRequests()
-	 */	
-	 void ResetPendingRequests(TBool aValue);
-
-protected:
-
-	/**
-	 *  Derived from CActive
-	 */
-
-	/**
-	 * The function is called by the active scheduler when a request completion event occurs,
-	 */
-	virtual void RunL();
-
-	/**
-	 *  Cancels the pending requests on the CIRNetworkController Active object
-	 */
-	virtual void DoCancel();
-	
-	
-public: // From MMobilityProtocolResp		//to be changed to private after demo
-
-			//Added for ALR/SNAP
-		void PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
-			TAccessPointInfo aNewAPInfo,
-			TBool aIsUpgrade,
-			TBool aIsSeamless );
-		void NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless );
-		void Error( TInt aError );	
-		
-public:
-		/**
-		 * IsHandingOverConnection()
-		 * Indicates if the Hand over of Network connection has happened
-		 */
-		IMPORT_C TBool IsHandingOverConnection();
-		
-		void ResetHandingOverConnection();
-		
-private:
-
-	/**
-	 *  Used to determine the current profile
-	 *  @return TInt describing the profile value
-	 */
-	TInt DetermineCurrentProfile() const;
-
-	/**
-	 *  Pops up the access point list.
-	 *  @return TBool ETrue feature is supported EFalse otherwise
-	 */
-	TBool CheckFeatureL(TInt aFeatureId) const;
-
-	/**
-	 *  Default C++ Constructor
-	 */
-	CIRNetworkController();
-
-	/**
-	 *  Second Phase construction.
-	 */
-	void ConstructL();
-
-	/**
-	 *  Second Phase construction.
-	 *	@param aObserver pointer to the observer class if an observer is needed
-	 */
-	void ConstructL( MIRNetworkController* aObserver );
-
-	/**
-	 *  Determines the available access points using CommsDat Api
-	 */
-	void QueryCommsForIAPL();
-
-	/**
-	 *  Queries the system and extracts the UAProf information
-	 *  Used by IRDataProvider and IRStreamSource
-	 */
-	void BuildUAProfStringL();
-
-	/**
-	 *  Retrievs the string from Central Repository for the specified key and cen rep uid
-	 *  Transfers the ownership of the returned HBufC object
-	 *  The caller must takecare of deleting the returned object*
-	 *	@param aRepositoryUid specifies the Uid of the repository to be used
-	 *	@param aKey specifies the key to be used
-	 *	@return HufC* pointer to the retrieved string
-	 */
-	HBufC* CentralRepositoryStringValueL(const TUid& aRepositoryUid,
-		TUint32 aKey ) const;
-
-	/**
-	 *  Pops up the access point list.
-	 *  @return TBool ETrue is we need to proceed with access point selection EFalse otherwise
-	 */
-	TBool DisplayAccessPointListL();
-
-	/**
-	 *  Validates the access point availablity etc.
-	 */
-	TBool ValidateAccessPointsL();
-
-	/**
-	 *  Handles the success case of Network connection in RunL
-	 */
-	void HandleRunLSuccessL();
-	
-	/**
-	 *  Handles the error case of Network connection in RunL
-	 */
-	void HandleRunLErrorL(TInt aStatusCode);
-	
-public:
-	/**
-	 * Indicates if ChooseAccessPointL is called
-	 */
-	TBool iIsConnectRequestIssued;
-
-private:
-    /**
-     * This is the physical connection we are putting up
-     */
-	RConnection* iIRNetworkConnection;
-
-	/**
-     * Actual RSocketServ instance
-     */
-   	RSocketServ iIRSocketServer;
-
-	/**
-     * Number of objects currently referring to the singleton object CIRNetworkController
-     */
-	TInt iSingletonInstances;
-
-	/**
-     * Used to access Settings object
-     */
-	CIRSettings* iIRSettings;
-
-	/**
-     * IR Network component observer
-     */
-	MIRNetworkController* iObserver;
-
-	/**
-	 * Enum declaration which indicate the network status
-	 */
-	enum TIRNetworkConnectionStatus
-		{
-		EIRNetworkConnectionActive = 1,
-		EIRNetworkConnectionInActive
-		};
-
-	/**
-	 * Variable to keep track of the RConnection connection status
-	 */
-	TIRNetworkConnectionStatus iNetworkConnectionState;
-
-	/**
-	 * Enum declaration which indicate the connection to RSocketServ status
-	 */
-	enum TIRSocketServerConnectionStatus
-		{
-		EIRSocketServerActive = 1,
-		EIRSocketServerInActive
-		};
-
-	/**
-	 * Variable to keep track of the RSocketServ connection status
-	 */
-	TIRSocketServerConnectionStatus iSocketServerConnectionState;
-
-	/**
-	 * Enum declaration to indicate the NetworkController state
-	 */
-	enum TIRNetworkControllerState
-		{
-		EInActive = 1,
-		EConnectingToNetwork
-		};
-
-	/**
-	 * Specifies the Network controller state
-	 */
-	TIRNetworkControllerState iNetworkControllerState;
-
-	/**
-	 * Indicates the current network connection status
-	 */
-	TBool iIsConnectedToNetwork;
-
-	/**
-	 * Network observer
-	 */
-	CIRNetworkObserver* iIRNetworkObserver;
-
-	/**
-	 * Pointer to UAProf string
-	 */
-	HBufC8* iIRUAProf;
-
-	/**
-	 * Pointer to x-wap-profile string
-	 */
-	HBufC8* iIRWapProf;
-
-	/**
-	 * Access point list for settings view
-	 */
-	CDesCArrayFlat* iIapList;
-
-	/**
-	 * Indicates if WiFi is supported or not
-	 */
-	TBool iIsWlanSupported;
-
-	/**
-	 * Used to determine if connection is open or not
-	 */
-
-	TBool iConnectionPresent;
-
-	/**
-	 * Tracks data transferred over the network for the connection.
-	 * Owned.
-	 */
-
-	CIRDataTransferTracker* iDataTransferTracker;
-
-	/**
-	 * Tracks data transferred over the network for the Logo session.
-	 * Owned.
-	 */
-
-	CIRDataTransferTracker* iLogoDataTransferTracker;
-	
-	
-	//Added for ALR/SNAP
-	
-	/**
-    * Observes the preferred network within defined destination
-    */
-	CActiveCommsMobilityApiExt* iMobility;
-	
-
-	/**
-     * ETrue if the ALR handover is ongoing
-     */
-    TBool iHandingOver;
-    
-    
-    /**
-	 * Array of observers for change in roaming events
-	 */
-	RPointerArray<MIRActiveNetworkObserver> iActiveNetworkObserverArray;
-	
-	TBool iDefaultConnection;
-	};
-
-#endif //CIRNETWORKCONTROLLER_H
--- a/internetradio2.0/networkcontrollerinc/irnetworkcontrollerobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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 MIRNETWORKCONTROLLEROBSERVER_H
-#define MIRNETWORKCONTROLLEROBSERVER_H
-
-#include <e32def.h>
-
-/** 
-* Identifies the type of connection 
-*/    
-enum TIRConnectionType
-	{
-	EGprs,
-	EWcdma,
-	ECdma2000,
-	EWiFi,
-	EEdge
-	};   
-
-/** 
-* Indicates the various Network events
-*/    
-enum TIRNetworkEvent
-	{
-	ENetworkConnectionConnecting,
-	ENetworkConnectionEstablished,
-	ENetworkConnectionDisconnected,
-	EDisplayNetworkMessageNoConnectivity,
-	EDisplayOfflineMode,
-    EDisplayNoAccessPointsDefined,
-    EAccessPointSelectionCancelled,
-    EConnectingCancelled
-	};   
-
-/** 
-* Observers should derive from this class and pass a pointer of this
-* type when creating an instance of CIRNetworkController if they require
-* an observer
-*/  
-class MIRNetworkController
-	{
-public:
-
-	/** 
-    * IRNetworkEventL(TIRNetworkEvent aEvent)		*  @param aEvent Indicates the type of network event that occurred
-	*/
-	virtual void IRNetworkEventL(TIRNetworkEvent aEvent) = 0;
-
-	};
-
-#endif // MIRNETWORKCONTROLLEROBSERVER_H
-
-
--- a/internetradio2.0/networkcontrollerinc/irnetworkobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +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 CIRNETWORKOBSERVER_H
-#define CIRNETWORKOBSERVER_H
-
-#include <rconnmon.h>
-
-#include "irnetworkcontrollerobserver.h"
-
-class MIRNetworkController;
-class CIRNetworkController;
-
-NONSHARABLE_CLASS(CIRNetworkObserver): public CActive , 
-	public MConnectionMonitorObserver
-	{
-public: 
-
-	/**
-	 *Creates an Instance of CIRNetworkObserver
-	 *@return CIRNetworkObserver*
-	 */    
-	IMPORT_C static CIRNetworkObserver* NewL(CIRNetworkController *aNetworkController);
-
-	/** 
-	 *  Default Destructor
-	 */
-	~CIRNetworkObserver();
-
-	/** 
-	 *  Initializes the Connection monitor
-	 */    
-	void InitializeNetworkObserver();
-
-	/** 
-	 *  Set the observer used to communicate with the IRNetworkController
-	 */    
-	void SetObserver(MIRNetworkController* aObserver);
-	
-	/**
-	 * Sets network monitoring observer to decide whether network monitoring is 
-	 * required.
-	 */
-	void SetNetworkMonitoring(TBool aValue);
-
-private: 
-
-	/** 
-	 *  Default Constructor
-	 */
-	CIRNetworkObserver(CIRNetworkController *aNetworkController);
-
-	/** 
-	 *  Creates an Instance of CIRNetworkObserver
-	 *  @return CIRNetworkObserver*
-	 */    
-	static CIRNetworkObserver* NewLC(CIRNetworkController *aNetworkController);
-
-	/** 
-	 *  Second Phase construction.
-	 */
-	void ConstructL();
-
-//  Derived from CActive
-
-	/** 
-	 * Derived from CActive
-	 * The function is called by the active scheduler when a request 
-	 * completion event occurs,
-	 */
-	virtual void RunL();
-
-	/** 
-	 *  Cancels the pending requests on the CIRNetworkObserver Active object
-	 */
-	virtual void DoCancel();
-
-	/** 
-	 *  Handles a leave occurring in the request completion event handler RunL()
-	 */
-	virtual TInt RunError(int aError);
-
-	/**
-	 *	Derived from MConnectionMonitorObserver
-	 */
-
-	/** 
-	 *  Derived from MConnectionMonitorObserver
-	 *  Implements the EventL method which is called when there is a network event
-	 *  @param aConnMonEvent Indicates the type of event occurred
-	 */     
-	void  EventL(const CConnMonEventBase &aConnMonEvent);
-
-	/** 
-	 *  Identifies the type of connection we have used to get connected to network
-	 */
-	void IdentifyConnection();
-
-	/**
-	 * Utility function used just to keep RunL() small
-	 */
-	void IRNetworkObserverRunL();
-
-    /**
-     * Extracts the IAP Id of the access point
-     */
-	void GetAPId();
-
-
-public: // Public Data Members
-
-	/**
-	 * Stores the type of connection that is currently open
-	 */
-	TIRConnectionType iIRConnectionType;
-
-	/**
-	 * Stores the IAP ID of the connection
-	 */
-	TUint iIAPId;
-
-    TBool iIsIAPIdAvailable;
-
-private:
-
-	/** 
-	 *IR Connection monitor states ( indicates the different 
-	 *possible states the state machine can be in )
-	 */
-	enum TIRObserverState
-	{
-	EInitializing,
-	EGettingConnectionInfo,
-	EGettingIAPId
-	};
-
-	/**
-	 * Used to monitor the network
-	 */
-	RConnectionMonitor iIRConnectionMonitor;
-
-	/**
-	 * Stores the currently open connection Id
-	 */
-	TUint iConnectionId;
-
-	/**
-	 * Stores the currently open Sub connection Id
-	 */
-	TUint iSubConnectionCount;
-
-	/**
-	 * Stores the count of currently open sub connections
-	 */
-	TUint iConnectionCount;
-
-	/**
-	 * Stores the state of the observer
-	 */
-	TIRObserverState iObserverState;
-
-	/**
-	 * Stores the type of connection open
-	 */
-	TInt iConnectionType;
-
-	/**
-	 * Pointer to the network controller object
-	 */
-	MIRNetworkController* iMonitorObserver;
-
-	/**
-	 * Boolean indicates if monitoring option is requested by the creator
-	 * of the CIRNetworkController instance
-	 */
-	TBool iMonitoringRequired;
-
-	CIRNetworkController *iNetworkController;
-	};
-
-#endif //CIRNETWORKOBSERVER_H
-
--- a/internetradio2.0/networkcontrollersrc/irdatatransfertracker.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Tracks data transmitted through a network connection.
-*
-*/
-
-#include <httpstringconstants.h>
-#include <mhttpdatasupplier.h>
-#include <rhttpheaders.h>
-#include "irdebug.h"
-
-#include "irdatatransfertracker.h"
-
-// The threshold in bytes after which notifications are sent to observers.
-const TInt KIRDataTransferTrackerThreshold = 104858;	// 0.1  MB = 104857.6 bytes (rounded)
-const TInt KIRDataTransferTrackerMiniThreshold = 1049;	// 0.01 MB = 1048.57 bytes (rounded)
-
-// The overhead in bytes per one HTTP header.
-const TInt KVRBytesPerHeaderOverhead = 2; // "\r\n"
-// The overhead in bytes per one header field in a request.
-const TInt KVRBytesPerHeaderFieldOverhead = 4; // ": \r\n"
-// The overhead in bytes per one header sent.
-const TInt KVRBytesPerHeaderSentOverhead = 4; // "  \r\n"
-// The overhead in bytes per one header received.
-const TInt KVRBytesPerHeaderReceivedOverhead = 3; // " \r\n"
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRDataTransferTracker* CIRDataTransferTracker::NewL()
-    {
-	IRLOG_DEBUG( "CIRDataTransferTracker::NewL - Entering");
-    CIRDataTransferTracker* self = new ( ELeave ) CIRDataTransferTracker;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRDataTransferTracker::NewL - Exiting");
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRDataTransferTracker::CIRDataTransferTracker()
-    {
-	IRLOG_DEBUG( "CIRDataTransferTracker::CIRDataTransferTracker - Entering");
-	bThresholdCrossed = EFalse;
-	IRLOG_DEBUG( "CIRDataTransferTracker::CIRDataTransferTracker - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::ConstructL() const
-    {
-    IRLOG_DEBUG( "CIRDataTransferTracker::ConstructL");
-	return;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CIRDataTransferTracker::~CIRDataTransferTracker()
-    {
-    	IRLOG_DEBUG( "CIRDataTransferTracker::~CIRDataTransferTracker - Entering");
-    	iObserver = NULL;
-        IRLOG_DEBUG( "CIRDataTransferTracker::~CIRDataTransferTracker - Exiting");
-
-    }
-
-// ---------------------------------------------------------------------------
-// From class MIRDataTransferTracker.
-// Sets the observer.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::SetObserver( MIRDataTransferObserver* aObserver )
-    {
-    IRLOG_DEBUG( "CIRDataTransferTracker::SetObserver - Entering");
-    iObserver = aObserver;
-    IRLOG_DEBUG( "CIRDataTransferTracker::SetObserver - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// From class MIRDataTransferTracker.
-// Returns the current transferred data amounts.
-// ---------------------------------------------------------------------------
-//
-const MIRDataTransferTracker::TIRDataTransferPckg& CIRDataTransferTracker::TransferredData() const
-    {
-    IRLOG_DEBUG( "CIRDataTransferTracker::TIRDataTransferPckg");
-    return iPckg;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MIRDataTransferTracker.
-// Binds this to track the supplied HTTP session.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::BindL( RHTTPSession aSession, TIRTransferCategory aCategory )
-    {
-    IRLOG_DEBUG2( "CIRDataTransferTracker::BindL() - aCategory = %d", static_cast<TInt>( aCategory ) );
-
-    aSession.ConnectionInfo().SetPropertyL(
-        aSession.StringPool().StringF( HTTP::ESessionId, aSession.GetTable() ), 
-        	THTTPHdrVal( aCategory ) );
-    aSession.FilterCollection().AddFilterL(
-        *this, THTTPEvent::EAnyTransactionEvent, MHTTPFilter::EClientFilters, RStringF() );
-    IRLOG_DEBUG( "CIRDataTransferTracker::BindL - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// From class MIRDataTransferTracker.
-// Handles raw data transfers.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::RawDataTransferredL( TInt aBytesSent, TInt aBytesReceived, 
-												  TIRTransferCategory aCategory )
-    {
-    IRLOG_DEBUG( "CIRDataTransferTracker::RawDataTransferredL - Entering");
-    ProcessDataL( aBytesSent, aBytesReceived, aCategory );
-    IRLOG_DEBUG( "CIRDataTransferTracker::RawDataTransferredL - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// From class MHTTPFilter.
-// Invoked when HTTP transactions are sent or received.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::MHFRunL(const RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
-    {
-    IRLOG_DEBUG2( "CIRDataTransferTracker::MHFRunL() - aEvent.iStatus = %d", aEvent.iStatus );
-
-    RHTTPSession session = aTransaction.Session();
-
-    THTTPHdrVal categoryVal;
-
-    if( session.ConnectionInfo().Property(
-        session.StringPool().StringF( HTTP::ESessionId, session.GetTable() ), categoryVal ) )
-        {
-        TIRTransferCategory category = static_cast<TIRTransferCategory>( categoryVal.Int() );
-
-        switch ( aEvent.iStatus )
-            {
-            case THTTPEvent::EGotResponseHeaders:
-                ParseHeaderSizeL( aTransaction, category );
-                break;
-            case THTTPEvent::EGotResponseBodyData:
-                ParseBodySizeL( aTransaction, category );
-                break;
-            default:
-                break;
-            }
-        }
-    IRLOG_DEBUG( "CIRDataTransferTracker::MHFRunL - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Calculates the header field sizes in bytes from the specified headers.
-// ---------------------------------------------------------------------------
-//
-TInt CIRDataTransferTracker::HeaderSize( const RHTTPTransaction aTransaction, 
-										 RHTTPHeaders aHeaders )
-    {
-    IRLOG_DEBUG( "CIRDataTransferTracker::HeaderSize - Entering");
-    TInt size = KVRBytesPerHeaderOverhead;
-
-    RStringPool stringPool = aTransaction.Session().StringPool();
-
-    THTTPHdrFieldIter it = aHeaders.Fields();
-    it.First();
-
-    while ( !it.AtEnd() )
-        {
-        RStringF key = stringPool.StringF( it() );
-
-        TPtrC8 ptr;
-        aHeaders.GetRawField( key, ptr );
-
-        size += key.DesC().Size();
-        size += ptr.Size();
-        size += KVRBytesPerHeaderFieldOverhead;
-
-        ++it;
-        }
-    IRLOG_DEBUG( "CIRDataTransferTracker::HeaderSize - Exiting");
-    return size;
-
-    }
-
-// ---------------------------------------------------------------------------
-// Parses the header sizes (both request and response) of the supplied HTTP
-// transaction, logging it under the specified category.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::ParseHeaderSizeL( const RHTTPTransaction aTransaction, 
-								   			   TIRTransferCategory aCategory )
-    {
-    IRLOG_DEBUG2( "CIRDataTransferTracker::ParseHeaderSizeL() - aCategory = %d", static_cast<TInt>( aCategory ) );
-
-    RHTTPSession session = aTransaction.Session();
-
-    // Parse the request size first.
-
-    RHTTPRequest request = aTransaction.Request();
-    TInt sent = HeaderSize( aTransaction, request.GetHeaderCollection() );
-
-    // Now that the actual header fields are parsed we have to manually extract the original request.
-    // The format of the request is "%S %S %S\r\n", where the first string is the method (GET or POST),
-    // the second is the full URI of the request, and the third the HTTP protocol version in use.
-
-    RStringF http = session.StringPool().StringF( HTTP::EHttp11, session.GetTable() );
-
-    sent += request.Method().DesC().Size();
-    sent += request.URI().UriDes().Size();
-    sent += http.DesC().Size();
-    sent += KVRBytesPerHeaderSentOverhead;
-
-    // Proceed to parse the response size.
-
-    RHTTPResponse response = aTransaction.Response();
-    TInt received = HeaderSize( aTransaction, response.GetHeaderCollection() );
-
-    // Now that the actual header fields of the response are parsed, we have to manually extract the
-    // original response. The format of the response is "%S %d %S\r\n", where the first string is the HTTP
-    // protocol version, the first integer is the HTTP status code, and the second string is the
-    // status text.
-
-    TBuf8<KDefaultRealWidth> responseCode;
-    responseCode.AppendNum( static_cast<TInt64>( response.StatusCode() ) );
-
-    received += session.StringPool().StringF( HTTP::EHttp11, session.GetTable() ).DesC().Size();
-    received += responseCode.Size(); // Contains the byte for the trailing space as is, so need not add it as overhead below.
-    received += response.StatusText().DesC().Size();
-    received += KVRBytesPerHeaderReceivedOverhead;
-
-    ProcessDataL( sent, received, aCategory );
-    IRLOG_DEBUG( "CIRDataTransferTracker::ParseHeaderSizeL - Exiting");
-
-    }
-
-// ---------------------------------------------------------------------------
-// Parses the body size of the supplied HTTP transaction, logging it under the specified category.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::ParseBodySizeL(const RHTTPTransaction aTransaction, 
-											TIRTransferCategory aCategory )
-    {
-    IRLOG_DEBUG2( "CIRDataTransferTracker::ParseBodySizeL() - aCategory = %d", static_cast<TInt>(aCategory) );
-
-    ASSERT( aTransaction.Response().HasBody() );
-
-    TPtrC8 ptr;
-    aTransaction.Response().Body()->GetNextDataPart( ptr );
-
-    ProcessDataL( 0, ptr.Size(), aCategory );
-    IRLOG_DEBUG( "CIRDataTransferTracker::ParseBodySizeL - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Processes raw data sent and/or received via the connection.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::ProcessDataL( TInt aBytesSent, TInt aBytesReceived, 
-										   TIRTransferCategory aCategory )
-    {
-    IRLOG_DEBUG4( "CIRDataTransferTracker::ProcessDataL() - aBytesSent = %d, aBytesReceived = %d, aCategory = %d",
-        aBytesSent, aBytesReceived, static_cast<TInt>(aCategory) );
-
-    switch ( aCategory )
-        {
-        case MIRDataTransferTracker::EIRTransferCategoryIsds:
-            iPckg.iBytesSentIsds += aBytesSent;
-            iPckg.iBytesReceivedIsds += aBytesReceived;
-            break;
-        case MIRDataTransferTracker::EIRTransferCategoryAudio:
-            iPckg.iBytesSentAudio += aBytesSent;
-            iPckg.iBytesReceivedAudio += aBytesReceived;
-            break;
-        default:
-            iPckg.iBytesSentUnknown += aBytesSent;
-            iPckg.iBytesReceivedUnknown += aBytesReceived;
-            break;
-        }
-
-    iPckg.iBytesSentTotal += aBytesSent;
-    iPckg.iBytesReceivedTotal += aBytesReceived;
-
-    iBytesSinceLastNotification += aBytesSent + aBytesReceived;
-
-    DispatchNotificationL();
-    IRLOG_DEBUG( "CIRDataTransferTracker::ProcessDataL() - Exiting");
-    }
-
-// ---------------------------------------------------------------------------
-// Dispatches the notification of the data transfer conditionally.
-// ---------------------------------------------------------------------------
-//
-void CIRDataTransferTracker::DispatchNotificationL()
-    {
-    IRLOG_DEBUG2( "CIRDataTransferTracker::DispatchNotificationL() - iBytesSinceLastNotif = %d",
-        iBytesSinceLastNotification );
-
-	// Set flag when Byte Counter crosses first threshold 0.1 MB
-	if( bThresholdCrossed == EFalse && 
-		(iPckg.iBytesSentTotal+iPckg.iBytesReceivedTotal) >= KIRDataTransferTrackerThreshold )
-		bThresholdCrossed = ETrue;
-
-	// Smooth updates to each 0.01 MB
-	if( /*bThresholdCrossed == EFalse &&*/ iBytesSinceLastNotification >= KIRDataTransferTrackerMiniThreshold)
-        {
-        if ( iObserver )
-            {
-            iObserver->HandleDataTransferEventL( iPckg );
-            }
-        iBytesSinceLastNotification = 0;
-        }
-
-
-	// Streaming updates to each 0.1 MB afterwards
-    else if ( iBytesSinceLastNotification >= KIRDataTransferTrackerThreshold )
-        {
-        if ( iObserver )
-            {
-            iObserver->HandleDataTransferEventL( iPckg );
-            }
-        iBytesSinceLastNotification = 0;
-        }
-    IRLOG_DEBUG( "CIRDataTransferTracker::DispatchNotificationL() - Exiting");
-
-    }
--- a/internetradio2.0/networkcontrollersrc/irfilteredapreader.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,361 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Used to read in only access points with the desired characteristics.
-*
-*/
-
-
-#include <commdb.h>
-#include <e32cmn.h>
-
-#include "irdebug.h"
-#include "irfilteredapreader.h"
-
-_LIT( KDynIpAddress, "0.0.0.0" );
-_LIT( KEasyWLAN, "Easy WLAN" );
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::NewL
-// ---------------------------------------------------------------------------
-//
-CIRFilteredApReader* CIRFilteredApReader::NewL( TInt aFilterFlags )
-    {
-    IRLOG_DEBUG2( "CIRFilteredApReader::NewL - Filter flags = %d", aFilterFlags );
-    CIRFilteredApReader* self = CIRFilteredApReader::NewLC( aFilterFlags );
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." );    
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::NewLC
-// ---------------------------------------------------------------------------
-//
-CIRFilteredApReader* CIRFilteredApReader::NewLC( TInt aFilterFlags )
-    {
-    IRLOG_DEBUG2( "CIRFilteredApReader::NewLC - Filter flags = %d", aFilterFlags );
-    CIRFilteredApReader* self = new( ELeave ) CIRFilteredApReader( aFilterFlags );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." );    
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::FirstRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPRecord* CIRFilteredApReader::FirstRecordL()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Entering" );    
-    CCDIAPRecord* record( NULL );
-    iWapTableIndex = 0;
-    if ( iWapTable->iRecords.Count() > 0 )
-        {
-        TBool loaded( EFalse );
-        TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc.
-        if ( err == KErrNone && loaded && FilterL())
-            {
-            record = static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
-            record->SetRecordId( iIapRecord->RecordId() );
-            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() );
-            }
-        else if ( err != KErrNone || !loaded )
-            {
-            IRLOG_ERROR3( "CIRFilteredApReader::FirstRecordL - Loading AP details failed (err=%d, loaded=%d).",
-                          err, loaded );            
-            record = NextRecordL();
-            }
-        else
-            {
-            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() );
-            record = NextRecordL();            
-            }
-        }        
-    IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Exiting." );    
-    return record;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::NextRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPRecord* CIRFilteredApReader::NextRecordL()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Entering");    
-    CCDIAPRecord* record( NULL );
-    
-    while ( !record && MoveToNextRecord() )
-        {
-        TBool loaded( EFalse );
-        TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc.
-        if ( err == KErrNone && loaded && FilterL())
-            {
-            record = static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
-            record->SetRecordId( iIapRecord->RecordId() );            
-            IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() );            
-            }
-        else if ( err != KErrNone || !loaded )
-            {
-            IRLOG_ERROR3( "CIRFilteredApReader::NextRecordL - Loading AP details failed (err=%d, loaded=%d).",
-                          err, loaded );            
-            }
-        else
-            {
-            IRLOG_INFO2( "CIRFilteredApReader::NextRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() );
-            }
-        }
-    IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Exiting." );    
-    return record;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::CIRFilteredApReader
-// ---------------------------------------------------------------------------
-//
-CIRFilteredApReader::CIRFilteredApReader( TInt aFilterFlags ) 
-    : iFilterFlags( aFilterFlags )  
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::CIRFilteredApReader" );                
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRFilteredApReader::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Entering" );                
-    iDbSession = CMDBSession::NewL(CMDBSession::LatestVersion());
-    
-    iWapTable = new (ELeave) CMDBRecordSet<CCDWAPAccessPointRecord>( KCDTIdWAPAccessPointRecord );
-    iWapTable->LoadL( *iDbSession );
-    IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Exiting." );    
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::~CIRFilteredApReader
-// ---------------------------------------------------------------------------
-//
-CIRFilteredApReader::~CIRFilteredApReader()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Entering" );    
-    delete iDbSession;
-    delete iWapTable;
-    delete iWapIpBearerRecord;
-    delete iIapRecord;
-    IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Exiting." );    
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::CurrentRecordL
-// ---------------------------------------------------------------------------
-//
-CCDWAPAccessPointRecord* CIRFilteredApReader::CurrentRecordL() const
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Entering" );    
-    if ( iWapTableIndex >= iWapTable->iRecords.Count() )
-        {
-        IRLOG_FATAL( "CIRFilteredApReader::CurrentRecordL - WAP table overflow!" );
-        User::Leave( KErrCorrupt );
-        }
-    IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Exiting" );    
-    return static_cast<CCDWAPAccessPointRecord*>( iWapTable->iRecords[iWapTableIndex] );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::MoveToNextRecord
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::MoveToNextRecord()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Entering" );    
-    TBool retMe(EFalse);
-    if ( ++iWapTableIndex < iWapTable->iRecords.Count() )
-        {
-        IRLOG_INFO2( "CIRFilteredApReader::MoveToNextRecord - Current record %d", iWapTableIndex );        
-        retMe = ETrue;
-        }
-    else
-        {
-        IRLOG_INFO( "CIRFilteredApReader::MoveToNextRecord - No more records" );        
-        }
-    IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Exiting" );    
-    return retMe;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::LoadCurrentApDetailsL
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::LoadCurrentApDetailsL()
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::LoadCurrentApDetailsL - Entering" );    
-    delete iWapIpBearerRecord;
-    iWapIpBearerRecord = NULL;
-    
-    delete iIapRecord;
-    iIapRecord = NULL;
-    
-    // Load record from WAPIPBearer
-    iWapIpBearerRecord = static_cast<CCDWAPIPBearerRecord*>( 
-    		CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
-
-    iWapIpBearerRecord->iWAPAccessPointId.SetL( CurrentRecordL()->RecordId() );
-    TBool res = iWapIpBearerRecord->FindL( *iDbSession );
-    
-    if ( res )
-        {
-        iIapRecord = static_cast<CCDIAPRecord*>(
-        		 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
-        iIapRecord->SetRecordId( iWapIpBearerRecord->iWAPIAP );
-        iIapRecord->LoadL( *iDbSession );
-        }
-    IRLOG_DEBUG2( "CIRFilteredApReader::LoadCurrentApDetailsL - returning %d", res );    
-    return res;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::FilterL
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::FilterL() const
-    {
-    IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Service type %S", &iIapRecord->iServiceType.GetL() );    
-    TBool retMe( ETrue );
-    
-    // The WAP check needs to be done only for CSD, GPRS, CDMA and LAN (because of Easy WLAN)
-    // APs. 
-    if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 ||
-         iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 ||
-//         iIapRecord->iServiceType.GetL().Compare( 
-//         					TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 ||
-         iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameLANService) ) == 0 )
-        {
-        if ( iFilterFlags & KIRFilterWAPMandatory )
-            {
-            retMe = FilterWAPMandatoryL();
-            }
-        if ( retMe && iFilterFlags & KIRFilterWAPOnly )
-            {
-            retMe = FilterWAPOnlyL();
-            }
-        if ( retMe && iFilterFlags & KIRFilterEasyWLAN )
-            {
-            retMe = FilterEasyWlanL();            
-            }
-        }
-    IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Returning %d", retMe );    
-    return retMe;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::FilterWAPMandatoryL
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::FilterWAPMandatoryL() const
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPMandatoryL - Entering" );    
-    TBool retMe( EFalse );
-    
-    // First check the WAP_GATEWAY_ADDRESS of WAP_IP_BEARER table.
-    if ( iWapIpBearerRecord->iWAPGatewayAddress.IsNull() || 
-         iWapIpBearerRecord->iWAPGatewayAddress.GetL().Length() == 0 ||
-         iWapIpBearerRecord->iWAPGatewayAddress.GetL().Compare( KDynIpAddress ) == 0 )
-        {
-        retMe = ETrue;
-        }
-    IRLOG_INFO3( "CIRFilteredApReader::FilterWAPMandatoryL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );
-    return retMe;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::FilterWAPOnlyL
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::FilterWAPOnlyL() const
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPOnlyL - Entering" );    
-    TBool retMe( EFalse );
-
-    IRLOG_DEBUG2( "CIRFilteredApReader::FilterWAPOnlyL - Service type %S", &iIapRecord->iServiceType.GetL() );
-    if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 )
-        {
-        CCDDialOutISPRecord* dialOutRecord = static_cast<CCDDialOutISPRecord*>( 
-        			CCDRecordBase::RecordFactoryL( KCDTIdDialOutISPRecord ) );
-        CleanupStack::PushL( dialOutRecord );
-        dialOutRecord->SetRecordId( iIapRecord->iService );
-        dialOutRecord->LoadL( *iDbSession );
-        if ( dialOutRecord->iType != EIspTypeWAPOnly )
-            {
-            retMe = ETrue;
-            }
-        CleanupStack::PopAndDestroy( dialOutRecord );
-        }
-    else if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 )
-        {
-        CCDWCDMAPacketServiceRecord* gprsRecord = static_cast<CCDWCDMAPacketServiceRecord*>( 
-        		CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
-        CleanupStack::PushL( gprsRecord );
-        gprsRecord->SetRecordId( iIapRecord->iService );
-        gprsRecord->LoadL( *iDbSession );
-        if ( gprsRecord->iGPRSAPType != EIspTypeWAPOnly )
-            {
-            retMe = ETrue;
-            }
-        CleanupStack::PopAndDestroy( gprsRecord );
-        }
-//    else if ( iIapRecord->iServiceType.GetL().Compare( 
-//    					TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 )
-//        {
-//        CCDCDMA2000PacketServiceRecord* cdmaRecord = static_cast<CCDCDMA2000PacketServiceRecord*>(
-//        	 CCDRecordBase::RecordFactoryL( KCDTIdCDMA2000PacketServiceRecord ) );
-//        CleanupStack::PushL( cdmaRecord );
-//        cdmaRecord->SetRecordId( iIapRecord->iService );
-//        cdmaRecord->LoadL( *iDbSession );
-//        if ( cdmaRecord->iApType != EIspTypeWAPOnly )
-//            {
-//            retMe = ETrue;
-//            }
-//        CleanupStack::PopAndDestroy( cdmaRecord );
-//        }
-    else
-        {
-        retMe = ETrue;
-        }
-    
-    IRLOG_INFO3( "CIRFilteredApReader::FilterWAPOnlyL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );    
-    return retMe; 
-    }
-
-// ---------------------------------------------------------------------------
-// CIRFilteredApReader::FilterEasyWlanL
-// ---------------------------------------------------------------------------
-//
-TBool CIRFilteredApReader::FilterEasyWlanL() const
-    {
-    IRLOG_DEBUG( "CIRFilteredApReader::FilterEasyWlanL - Entering" );    
-    TBool retMe( EFalse );
-    if ( iIapRecord->iRecordName.GetL().Compare( KEasyWLAN ) != 0 )
-        {
-        retMe = ETrue;
-        }
-    IRLOG_INFO3( "CIRFilteredApReader::FilterEasyWlanL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() );    
-    return retMe;
-    }
-
--- a/internetradio2.0/networkcontrollersrc/irnetworkcontroller.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1185 +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 <centralrepository.h>
-#include <commsdattypesv1_1.h>
-#include <commdb.h>
-#include <commdbconnpref.h>
-#include <featdiscovery.h>
-#include <features.hrh>
-#include <ProfileEngineSDKCRKeys.h>
-#include <httpstringconstants.h>
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <extendedconnpref.h>
-
-#include "irdebug.h"
-#include "irfilteredapreader.h"
-#include "irnetworkcontroller.h"
-#include "irnetworkobserver.h"
-#include "irsettings.h"
-
-#include "iractivenetworkobserver.h"
-
-
-const TInt KMaxIRUAProfLength = 250; // Max length of the UAProf string
-const TInt KIRDefaultUAProfBufferSize = 0x80;
-const TUint KIRESockMessageSlots = 16;
-const TInt KArraySize = 5;
-const TInt KWlanStringMaxLength = 9;
-const TInt KTwo = 2;
-
-// ---------------------------------------------------------------------------
-//  define in WebUtilsSDKCRKeys.h
-// ---------------------------------------------------------------------------
-//
-const TUid KCRUidWebUtils = {0x101F8731};//Web APIs removal and Internet Radio build break
-
-// ---------------------------------------------------------------------------
-// define in WebUtilsInternalCRKeys.h
-// ---------------------------------------------------------------------------
-//
-// Compatability fragment of useragent string
-const TUint32 KWebUtilsUsrAg2 =	0x00000001;
-
-// PlatformVersion fragment of useragent string
-const TUint32 KWebUtilsUsrAg3 =	0x00000002;
-
-// MidPVersion fragment of useragent string
-const TUint32 KWebUtilsUsrAg4 =	0x00000003;
-
-// CLDConfiguration fragment of useragent string
-const TUint32 KWebUtilsUsrAg5 =	0x00000004;
-
-// Url to useragent profile
-const TUint32 KWebUtilsUaProf =	0x00000008;
-
-
-// To Format the UAProf string
-_LIT(KIRUAProfSpace," ");
-
-// WLan (generic) name string
-_LIT(KIRWLanName,"Easy WLAN");
-
-// ---------------------------------------------------------------------------
-//  Creates an Instance of CIRNetworkController
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRNetworkController* CIRNetworkController::OpenL(MIRNetworkController* aObserver)
-{
-    IRLOG_DEBUG( "CIRNetworkController::OpenL - Entering" );
-    CIRNetworkController* networkController = reinterpret_cast<CIRNetworkController*>(Dll::Tls());
-
-    if (!networkController)
-    {
-        networkController = new (ELeave) CIRNetworkController;
-        CleanupClosePushL(*networkController);
-        networkController->iSingletonInstances = 1;
-        networkController->ConstructL(aObserver);
-        User::LeaveIfError(Dll::SetTls(networkController));
-        networkController->iSingletonInstances = 0;
-        CleanupStack::Pop(networkController);
-	}
-    networkController->iSingletonInstances++;
-    
-    if (NULL != aObserver)
-    {
-        networkController->iObserver = aObserver;
-        networkController->iIRNetworkObserver->SetObserver(aObserver);
-    }
-    
-    IRLOG_DEBUG( "CIRNetworkController::OpenL - Exiting." );
-    return networkController;
-}
-
-// ---------------------------------------------------------------------------
-// Conditionally destroys the IRNetworkController object
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRNetworkController::Close()
-{
-    IRLOG_DEBUG2( "CIRNetworkController::Close - singleton instances=%d", iSingletonInstances );
-    iSingletonInstances--;
-    
-    if( iSingletonInstances == 0 )
-    {
-        delete this;
-    }
-    IRLOG_DEBUG( "CIRNetworkController::Close - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::GetIRConnection
-//  Returns the instance of RConnection
-//  The same RConnection object is used across the entire iRAPP components to
-//  provide central arbiter and monitoring of Network Connection
-// ---------------------------------------------------------------------------
-//
-EXPORT_C RConnection& CIRNetworkController::GetIRConnection()
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetIRConnection - Entering" );
-    // If the RConnection is open return the reference
-    switch(iNetworkConnectionState)
-    {
-    case EIRNetworkConnectionActive:
-    {
-        // Connection is active and ready to use return the reference
-        return (*iIRNetworkConnection);
-    }
-	
-    case EIRNetworkConnectionInActive:
-    {
-        // Connection is not active and application cannot continue hence panic
-        _LIT(KComponentName,"NetworkController");
-        User::Panic(KComponentName,KErrCouldNotConnect);
-    }
-    break;
-	
-    default:
-    {
-        // no implementation
-    }
-    break;
-    }
-	
-    // Inserted to remove the compiler warning
-    IRLOG_DEBUG( "CIRNetworkController::GetIRConnection - Exiting." );
-    return (*iIRNetworkConnection);
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::GetIRSocketServer
-//  Returns the instance of RSocketServ
-//  The same RSocketServ object is used across the entire iRAPP components to
-//  provide central arbiter and monitoring of Network Connection
-// ---------------------------------------------------------------------------
-//
-EXPORT_C RSocketServ& CIRNetworkController::GetIRSocketServer()
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetIRSocketServer - Entering" );
-    switch(iSocketServerConnectionState)
-    {
-    case EIRSocketServerActive:
-    {
-        // Connection to Socket Server is active hence return the reference
-        return iIRSocketServer;
-    }
-	
-    case EIRSocketServerInActive:
-    {
-        // Connection to Socket Server not open hence open and return the reference
-        // Connection is not active and application cannot continue hence panic
-        _LIT(KComponentName,"NetworkController");
-        User::Panic(KComponentName,KErrCouldNotConnect);
-    }
-    break;
-	
-    default:
-    {
-        // no implemenatation
-    }
-    break;
-	}
-    
-    // Inserted to remove the compiler warning
-    IRLOG_DEBUG( "CIRNetworkController::GetIRSocketServer - Exiting." );
-    return iIRSocketServer;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::GetWapProfString
-//  Returns a HBufC pointer to the x-wap-profile string
-//  Transfers the ownership of the returned HBufC8 object
-//  The caller must takecare of deleting the returned object
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* CIRNetworkController::GetWapProfString()
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetWapProfString" );
-    return iIRWapProf;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::GetUAProfString
-//  Returns a HBufC pointer to the UAProf string
-//  Transfers the ownership of the returned HBufC8 object
-//  The caller must takecare of deleting the returned object
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* CIRNetworkController::GetUAProfString()
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetUAProfString" );
-    return iIRUAProf;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::GetNetworkStatus
-//  Returns the variable which indicates if connection is active or not
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRNetworkController::GetNetworkStatus() const
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetNetworkStatus" );
-    return iIsConnectedToNetwork;
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::GetIAPId
-// Gets the IAP Id of the chosen IAP
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRNetworkController::GetIAPId(TUint32& aIapId) const
-{
-    IRLOG_DEBUG( "CIRNetworkController::GetIAPId - Entering" );
-    TInt retVal(KErrNone);
-    if(iIsConnectedToNetwork)
-    {
-        if ( iIRNetworkObserver->iIsIAPIdAvailable )
-        {
-            aIapId = iIRNetworkObserver->iIAPId;
-        }
-    }
-    else
-    {
-        retVal = KErrNotFound;
-    }
-    IRLOG_DEBUG( "CIRNetworkController::GetIAPId - Exiting." );
-    return retVal;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::ChooseAccessPointL
-//  Configures the Access Point which is used by all the components for network
-//  connectivity
-// ---------------------------------------------------------------------------
-//
-
-
-EXPORT_C void CIRNetworkController::ChooseAccessPointL(TBool aDefaultConnection)
-{
-    IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Entering" );
-    if (iHandingOver)
-    {
-        if (iObserver)
-        {
-            iObserver->IRNetworkEventL(ENetworkConnectionConnecting);
-        }
-        IRLOG_DEBUG("CIRNetworkController::ChooseAccessPointL, ALR is handing over, Exiting");
-        return;
-    }
-    
-    iIRNetworkObserver->SetNetworkMonitoring(ETrue);
-    iDefaultConnection = aDefaultConnection;
-	
-    // Always validate the Access Points status
-    if ( ValidateAccessPointsL() )
-    { 
-        if(NULL != iMobility)
-        {
-         iMobility->Cancel();
-         delete iMobility;
-         iMobility = NULL;
-        }
-
-        // Connect to the Symbian Socket Server
-        iIRNetworkConnection->Close();
-        iIRSocketServer.Close();
-        TInt ReturnErrorCode = iIRSocketServer.Connect( KIRESockMessageSlots );
-        
-        if(ReturnErrorCode != KErrNone )
-        {
-            // Error in opening the connection to SocketServer
-            iSocketServerConnectionState = EIRSocketServerInActive;
-            IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting (1)." );
-            return ;
-        }
-		
-        // Connection to RSocketServ is sucessful
-        iSocketServerConnectionState = EIRSocketServerActive;
-        
-        // Open the RConnection over the iIRSocketServer
-        ReturnErrorCode = iIRNetworkConnection->Open(iIRSocketServer);
-
-        if( ReturnErrorCode != KErrNone )
-        {
-            // Error in opening the connection
-            iNetworkConnectionState = EIRNetworkConnectionInActive;
-            IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting (2)." );
-            return ;
-        }
-        
-        //Added for ALR/SNAP
-        if(!IsActive())
-        {
-            if (iDefaultConnection)
-            {
-                TConnPrefList prefList;
-                TExtendedConnPref extPrefs;
-
-                extPrefs.SetSnapPurpose(CMManager::ESnapPurposeInternet);
-                extPrefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnDisableNotes);
-                prefList.AppendL(&extPrefs);
-                iIRNetworkConnection->Start(prefList, iStatus);
-            }
-            else
-            {
-                TCommDbConnPref connPref;
-                connPref.SetDialogPreference(ECommDbDialogPrefPrompt);
-                iIRNetworkConnection->Start(connPref, iStatus) ;
-            }
-            
-            // Set the NetworkController state
-            iNetworkControllerState = EConnectingToNetwork;
-
-            SetActive();
-            iIsConnectRequestIssued = ETrue;
-            if (iObserver)
-            {
-                IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - notify ENetworkConnectionConnecting" );
-                iObserver->IRNetworkEventL(ENetworkConnectionConnecting);
-            }
-        }
-            
-        IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting (3)." );
-        return;
-    }
-    else
-    {
-        iObserver->IRNetworkEventL(EAccessPointSelectionCancelled);
-    }
-    IRLOG_DEBUG( "CIRNetworkController::ChooseAccessPointL - Exiting (4)." );
-}
-
-EXPORT_C void CIRNetworkController::CancelConnecting()
-{
-    IRLOG_DEBUG("CIRNetworkController::CancelConnecting(), Entering");
-    iIRNetworkObserver->Cancel();
-    Cancel();
-    ResetConnectionStatus();
-    IRLOG_DEBUG("CIRNetworkController::CancelConnecting(), Exiting");
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::IsOfflineMode
-//  This api is used to determine if the phone is in offline mode
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRNetworkController::IsOfflineMode()
-{
-    IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode" );
-    // System defined value for offline mode is 5
-    const TInt KOfflineMode = 5;
-	TInt returnValue = 0;
-    returnValue = DetermineCurrentProfile();
-    if (returnValue == KOfflineMode)
-    {
-        IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode - Exiting (1)." );
-        return ETrue;
-    }
-    IRLOG_DEBUG( "CIRNetworkController::IsOfflineMode - Exiting (2)." );
-    return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::IsWlanSupported
-//  This api is used to determine if the phone supports WLan usage
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRNetworkController::IsWlanSupported() const
-{
-    IRLOG_DEBUG( "CIRNetworkController::IsWlanSupported" );
-    return iIsWlanSupported;
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::ResetConnectionStatus
-//  Reset the connection status to Disconnected statet
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRNetworkController::ResetConnectionStatus()
-{
-    IRLOG_DEBUG( "CIRNetworkController::ResetConnectionStatus - Entering" );
-    iIsConnectRequestIssued = EFalse;
-    iNetworkConnectionState = EIRNetworkConnectionInActive;
-    iIsConnectedToNetwork = EFalse;
-    iConnectionPresent = EFalse;
-    IRLOG_DEBUG( "CIRNetworkController::ResetConnectionStatus - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::IdentifyConnectionType
-// Used to determine the type of connection
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TIRConnectionType CIRNetworkController::IdentifyConnectionType() const
-{
-    IRLOG_DEBUG( "CIRNetworkController::IdentifyConnectionType" );
-    IRRDEBUG2("CIRNetworkController::IdentifyConnectionType - Entering iConnectionType = %d", iIRNetworkObserver->iIRConnectionType);
-
-    return iIRNetworkObserver->iIRConnectionType;
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::DetermineCurrentProfile
-// Used to determine the current profile
-// ---------------------------------------------------------------------------
-//
-TInt CIRNetworkController::DetermineCurrentProfile() const
-{
-    IRLOG_DEBUG( "CIRNetworkController::DetermineCurrentProfile" );
-    TInt value = KErrNone;
-    TRAPD(err,
-            CRepository* cRepositoryHandle = CRepository::NewLC(KCRUidProfileEngine );
-            cRepositoryHandle->Get(KProEngActiveProfile,value);
-            CleanupStack::PopAndDestroy(cRepositoryHandle); )
-    if (err != KErrNone)
-    {
-        value = err;
-    }
-
-    IRLOG_DEBUG( "CIRNetworkController::DetermineCurrentProfile - Exiting." );
-    return value;
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::CheckFeatureL
-// Pops up the access point list.
-// ---------------------------------------------------------------------------
-//
-TBool CIRNetworkController::CheckFeatureL(TInt aFeatureId) const
-{
-    IRLOG_DEBUG( "CIRNetworkController::CheckFeatureL" );
-    return CFeatureDiscovery::IsFeatureSupportedL(aFeatureId);
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::CIRNetworkController
-// Default C++ Constructor
-// ---------------------------------------------------------------------------
-//
-CIRNetworkController::CIRNetworkController(): CActive(
-	CActive::EPriorityHigh )
-{
-    // Add the AO to the ActiveScheduler
-    IRLOG_DEBUG( "CIRNetworkController::CIRNetworkController- Entering" );
-    CActiveScheduler::Add(this);
-    // Initialize the states
-    iNetworkConnectionState = EIRNetworkConnectionInActive;
-    iSocketServerConnectionState = EIRSocketServerInActive;
-    iNetworkControllerState = EInActive;
-
-    IRLOG_DEBUG( "CIRNetworkController::CIRNetworkController - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::~CIRNetworkController
-//  Default C++ Destructor
-// ---------------------------------------------------------------------------
-//
-CIRNetworkController::~CIRNetworkController()
-{
-    IRLOG_DEBUG( "CIRNetworkController::~CIRNetworkController- Entering" );
-    _LIT(KErrorMsg,"Method Close not called");
-    __ASSERT_ALWAYS(iSingletonInstances == 0, User::Panic(KErrorMsg, KErrCorrupt));
-
-    if(NULL != iMobility)
-    {
-     iMobility->Cancel();
-     delete iMobility;
-     iMobility = NULL;
-    }
-
-    if (IsActive())
-    {
-        Cancel();
-    }
-    if (iIRNetworkConnection)
-    {
-        iIRNetworkConnection->Close();
-        delete iIRNetworkConnection;
-    }
-
-    // Set all the state variables to indicate network connection is closed
-    delete iIRUAProf;
-    delete iIRWapProf;
-    if (iIRSettings)
-    {
-        iIRSettings->Close();
-        iIRSettings = NULL;
-    }
-    delete iIRNetworkObserver;
-    iIRSocketServer.Close();
-
-    if (iIapList)
-    {
-        iIapList->Reset();
-        delete iIapList;
-        iIapList = NULL;
-    }
-
-    if (iDataTransferTracker)
-    {
-        delete iDataTransferTracker;
-        iDataTransferTracker = NULL;
-    }
-    if (iLogoDataTransferTracker)
-    {
-        delete iLogoDataTransferTracker;
-        iLogoDataTransferTracker = NULL;
-    }
-    iObserver = NULL;
-
-    iActiveNetworkObserverArray.Close();
-
-    Dll::FreeTls();
-    IRLOG_DEBUG( "CIRNetworkController::~CIRNetworkController - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::ConstructL
-//  Second Phase construction.
-//	aObserver pointer to the observer class if an observer is needed
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkController::ConstructL( MIRNetworkController* aObserver )
-{
-    IRLOG_DEBUG( "CIRNetworkController::ConstructL- Entering" );
-    iObserver = aObserver;
-    iIRNetworkObserver = CIRNetworkObserver::NewL(this);
-    iIRNetworkObserver->SetObserver(iObserver);
-
-    // Create instance of DataTransferTracker (Byte Counter Impl)
-    iDataTransferTracker = CIRDataTransferTracker::NewL();
-    iLogoDataTransferTracker = CIRDataTransferTracker::NewL();
-
-    iIRNetworkConnection = new (ELeave) RConnection;
-
-    iIRSettings = CIRSettings::OpenL();
-
-    BuildUAProfStringL();
-    iIapList = new (ELeave) CDesCArrayFlat(KArraySize);
-
-    QueryCommsForIAPL();
-
-    IRLOG_DEBUG( "CIRNetworkController::ConstructL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::QueryCommsForIAPL
-//  Determines the available access points using CommsDat Api
-//  voilates PCLint Error 40 --Undeclared identifier 'KFeatureIdProtocolWlan'
-//  as defined in featureinfo.h
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkController::QueryCommsForIAPL()
-{
-    IRLOG_DEBUG( "CIRNetworkController::QueryCommsForIAPL- Entering" );
-
-    // Reset all the comms info
-    iIapList->Reset();
-    
-#ifndef __WINS__
-    CIRFilteredApReader* filteredReader = CIRFilteredApReader::
-    NewLC( CIRFilteredApReader::KIRFilterWAPOnly |
-            CIRFilteredApReader::KIRFilterWAPMandatory |
-            CIRFilteredApReader::KIRFilterEasyWLAN );
-
-    CCDIAPRecord* iapRecord = filteredReader->FirstRecordL();
-
-    while ( iapRecord )
-    {
-        CleanupStack::PushL( iapRecord );
-
-        iIapList->AppendL( iapRecord->iRecordName.GetL() );
-
-        CleanupStack::PopAndDestroy( iapRecord );
-        iapRecord = filteredReader->NextRecordL();
-    }
-    CleanupStack::PopAndDestroy( filteredReader );
-#else
-    CMDBSession* dbSession = CMDBSession::NewL(CMDBSession::LatestVersion());
-    CleanupStack::PushL(dbSession);
-
-    CMDBRecordSet<CCDIAPRecord>* iapSet = new (ELeave) CMDBRecordSet<
-            CCDIAPRecord> (KCDTIdIAPRecord);
-    CleanupStack::PushL(iapSet);
-
-    TRAP_IGNORE(iapSet->LoadL(*dbSession));
-    
-    for (TInt i = 0; i < iapSet->iRecords.Count(); i++)
-    {
-        CCDIAPRecord* iapRecord =
-                static_cast<CCDIAPRecord*> (iapSet->iRecords[i]);
-        iIapList->AppendL(iapRecord->iRecordName.GetL());
-    }
-    CleanupStack::PopAndDestroy(2, dbSession);
-
-#endif
-    
-    // If WLan is supported on the device then add the WLan option
-    // to the IAP List
-#ifndef __WINS__
-    iIsWlanSupported = CheckFeatureL(KFeatureIdProtocolWlan);
-    if( iIsWlanSupported )
-    {
-        TBuf<KWlanStringMaxLength> wlanString;
-        wlanString.Copy(KIRWLanName);
-        iIapList->AppendL(wlanString);
-    }
-#endif
-
-    iIapList->Compress();
-
-    IRLOG_DEBUG( "CIRNetworkController::QueryCommsForIAPL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::BuildUAProfStringL
-// Queries the system and extracts the UAProf information
-//  Used by IRDataProvider and IRStreamSource
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkController::BuildUAProfStringL()
-{
-    IRLOG_DEBUG( "CIRNetworkController::BuildUAProfStringL- Entering" );
-    // Create space on heap for the UAProf String
-    iIRUAProf = HBufC8::NewL(KMaxIRUAProfLength);
-    iIRWapProf = HBufC8::NewL(KMaxIRUAProfLength);
-    HBufC* cenRepPtr;
-    TPtr8 irUAProf = iIRUAProf->Des();
-    TPtr8 irWapProf = iIRWapProf->Des();
-    irUAProf.Append(iIRSettings->GetIrappVersionL());
-
-    cenRepPtr = NULL;
-    irUAProf.Append(KIRUAProfSpace);
-    // extract UAProf sub-string from cenrep
-    cenRepPtr = CentralRepositoryStringValueL(KCRUidWebUtils, KWebUtilsUsrAg3);
-    // append it to form the UAProf
-    irUAProf.Append(cenRepPtr->Des());
-    delete cenRepPtr;
-    cenRepPtr = NULL;
-
-    irUAProf.Append(KIRUAProfSpace);
-    // extract UAProf sub-string from cenrep
-    cenRepPtr = CentralRepositoryStringValueL(KCRUidWebUtils, KWebUtilsUsrAg2);
-    // append it to form the UAProf
-    irUAProf.Append(cenRepPtr->Des());
-    delete cenRepPtr;
-    cenRepPtr = NULL;
-
-    irUAProf.Append(KIRUAProfSpace);
-    // extract UAProf sub-string from cenrep
-    cenRepPtr = CentralRepositoryStringValueL(KCRUidWebUtils, KWebUtilsUsrAg4);
-    // append it to form the UAProf
-    irUAProf.Append(cenRepPtr->Des());
-    delete cenRepPtr;
-    cenRepPtr = NULL;
-
-    irUAProf.Append(KIRUAProfSpace);
-    // extract UAProf sub-string from cenrep
-    cenRepPtr = CentralRepositoryStringValueL(KCRUidWebUtils, KWebUtilsUsrAg5);
-    // append it to form the UAProf
-    irUAProf.Append(cenRepPtr->Des());
-    delete cenRepPtr;
-    cenRepPtr = NULL;
-    // trim out the quotes
-    irUAProf.Delete(irUAProf.Length() - 1, 1);
-    // extract x-wap-profile string from cenrep
-    cenRepPtr = CentralRepositoryStringValueL(KCRUidWebUtils, KWebUtilsUaProf);
-    // append it to form the UAProf
-    irWapProf.Copy(cenRepPtr->Des());
-    delete cenRepPtr;
-    cenRepPtr = NULL;
-
-    IRLOG_DEBUG( "CIRNetworkController::BuildUAProfStringL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::CentralRepositoryStringValueL
-// Retrievs the string from Central Repository for the specified key and cen rep uid
-// Transfers the ownership of the returned HBufC object
-// The caller must takecare of deleting the returned object*
-// ---------------------------------------------------------------------------
-//
-HBufC* CIRNetworkController::CentralRepositoryStringValueL(
-	const TUid& aRepositoryUid, TUint32 aKey ) const
-{
-    IRLOG_DEBUG( "CIRNetworkController::CentralRepositoryStringValueL- Entering" );
-    CRepository* pRepository = CRepository::NewL(aRepositoryUid);
-    CleanupStack::PushL(pRepository);
-
-    TInt length = KIRDefaultUAProfBufferSize;
-    HBufC* valueString = HBufC::NewLC(length);
-    TInt error(KErrTooBig);
-    do
-    {
-        TPtr ptr = valueString->Des();
-        error = pRepository->Get(aKey, ptr);
-        if (error == KErrTooBig)
-        {
-            CleanupStack::PopAndDestroy(valueString);
-            length = KTwo * length;
-            valueString = HBufC::NewLC(length);
-        }
-    } while (error == KErrTooBig);
-
-    if (error)
-    {
-        TPtr ptr = valueString->Des();
-        ptr.Copy(KNullDesC());
-    }
-
-    CleanupStack::Pop(valueString);
-    CleanupStack::PopAndDestroy(pRepository);
-    IRLOG_DEBUG( "CIRNetworkController::CentralRepositoryStringValueL - Exiting." );
-    return valueString;
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::ValidateAccessPointsL(
-//  Validates the access point availablity etc.
-//  voilates PCLint Error 40 --Undeclared identifier 'KFeatureIdProtocolWlan'
-//  as defined in featureinfo.h
-// ---------------------------------------------------------------------------
-//
-TBool CIRNetworkController::ValidateAccessPointsL()
-{
-    IRLOG_DEBUG( "CIRNetworkController::ValidateAccessPointsL- Entering" );
-    TBool status = ETrue;
-#ifndef __WINS__
-    // Check if the phone is in offline mode
-    // If yes, do not allow GPRS access
-    // If phone is in offline mode and device does not support
-    // WIFI then exit the application
-    // Do not make this check in Wins
-    //violates PC Lint error : Error 40: Undeclared identifier KFeatureIdProtocolWlan
-    if( IsOfflineMode() && !(CheckFeatureL(KFeatureIdProtocolWlan)) )
-    {
-        // The phone is in offline mode and WLan is not available
-        iObserver->IRNetworkEventL(EDisplayOfflineMode);
-        status = EFalse;
-    }
-    // If phone is not in offline mode and no access points are defined
-    // check if device has WIFI support then try to launch WIFI
-    // selection if there is no support then display a message
-    if( !IsOfflineMode() && iIapList->MdcaCount() == 0 )
-    {
-        // Check if there is WIFI support
-        //violates PC Lint error : Error 40: Undeclared identifier KFeatureIdProtocolWlan
-        if(!CheckFeatureL(KFeatureIdProtocolWlan))
-        {
-            iObserver->IRNetworkEventL(EDisplayNoAccessPointsDefined);
-            status = EFalse;
-        }
-    }
-#endif
-    IRLOG_DEBUG( "CIRNetworkController::ValidateAccessPointsL - Exiting." );
-    return status;
-}
-
-
-// Derived from CActive
-
-// ---------------------------------------------------------------------------
-// CIRNetworkController::RunL
-// The function is called by the active scheduler when a request completion event occurs,
-// ---------------------------------------------------------------------------
-//
-
-void CIRNetworkController::RunL()
-{
-    IRLOG_INFO2( "CIRNetworkController::RunL - iStatus=%d", iStatus.Int() );
-    iHandingOver = EFalse;
-
-    TInt statusCode = iStatus.Int();
-
-    if (iStatus == KErrNone)
-    {
-        HandleRunLSuccessL();
-    }
-    else
-    {
-        HandleRunLErrorL(statusCode);
-    }
-    IRLOG_DEBUG( "CIRNetworkController::RunL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-//  CIRNetworkController::DoCancel()
-//  Cancels the pending requests on the CIRNetworkController Active object
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkController::DoCancel()
-{
-    IRLOG_DEBUG( "CIRNetworkController::DoCancel - Entering" );
-
-    if(NULL != iMobility)
-    {
-     iMobility->Cancel();
-     delete iMobility;
-     iMobility = NULL;
-    }
-
-    iIRNetworkConnection->Stop();
-    iIRNetworkConnection->Close();
-    iIRSocketServer.Close();
-    IRLOG_DEBUG( "CIRNetworkController::DoCancel - Exiting." );
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::InitializeHttpSession
-// ---------------------------------------------------------
-EXPORT_C void CIRNetworkController::InitializeHttpSessionL(const RHTTPSession& aHTTPSession, 
-											MIRDataTransferTracker::TIRTransferCategory aCategory)
-{
-    IRLOG_DEBUG("CVRConnection::InitializeHttpSessionL - enter");
-
-    iDataTransferTracker->BindL(aHTTPSession, aCategory);
-
-    RStringF sockserv = aHTTPSession.StringPool().StringF(
-            HTTP::EHttpSocketServ, RHTTPSession::GetTable());
-    CleanupClosePushL(sockserv);
-
-    RStringF connection = aHTTPSession.StringPool().StringF(
-            HTTP::EHttpSocketConnection, RHTTPSession::GetTable());
-    CleanupClosePushL(connection);
-
-    RHTTPConnectionInfo cInfo = aHTTPSession.ConnectionInfo();
-    cInfo.SetPropertyL(sockserv, THTTPHdrVal(iIRSocketServer.Handle()));
-    cInfo.SetPropertyL(connection, THTTPHdrVal(
-            reinterpret_cast<TInt> (iIRNetworkConnection)));
-    CleanupStack::PopAndDestroy(&connection); // sockserv.close, connection.close
-    CleanupStack::PopAndDestroy(&sockserv); // sockserv.close, connection.close
-
-    IRLOG_DEBUG("CIRNetworkController::InitializeHttpSessionL - exit");
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::RegisterLogoDataTransferTrackerL
-// ---------------------------------------------------------
-EXPORT_C void CIRNetworkController::RegisterLogoDataTransferTrackerL(RHTTPSession& aHTTPSession)
-{
-    IRLOG_DEBUG("CVRConnection::InitializeHttpSessionL - enter");
-
-    iLogoDataTransferTracker->BindL(aHTTPSession,
-            MIRDataTransferTracker::EIRTransferCategoryIsds);
-
-    RStringF sockserv = aHTTPSession.StringPool().StringF(
-            HTTP::EHttpSocketServ, RHTTPSession::GetTable());
-    CleanupClosePushL(sockserv);
-
-    RStringF connection = aHTTPSession.StringPool().StringF(
-            HTTP::EHttpSocketConnection, RHTTPSession::GetTable());
-    CleanupClosePushL(connection);
-
-    RHTTPConnectionInfo cInfo = aHTTPSession.ConnectionInfo();
-    cInfo.SetPropertyL(sockserv, THTTPHdrVal(iIRSocketServer.Handle()));
-    cInfo.SetPropertyL(connection, THTTPHdrVal(
-            reinterpret_cast<TInt> (iIRNetworkConnection)));
-    CleanupStack::PopAndDestroy(&connection); // sockserv.close, connection.close
-    CleanupStack::PopAndDestroy(&sockserv); // sockserv.close, connection.close	
-
-    // Subscribe to logo byte counter info
-    iLogoDataTransferTracker->SetObserver(this);
-
-    IRLOG_DEBUG("CIRNetworkController::RegisterLogoDataTransferTrackerL - exit");
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::DataTransferTracker()
-// ---------------------------------------------------------
-
-EXPORT_C MIRDataTransferTracker& CIRNetworkController::DataTransferTracker()
-{
-    IRLOG_DEBUG("CIRNetworkController::DataTransferTracker");
-    return *iDataTransferTracker;
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::LogoDataTransferTracker()
-// ---------------------------------------------------------
-
-EXPORT_C MIRDataTransferTracker& CIRNetworkController::LogoDataTransferTracker()
-{
-    IRLOG_DEBUG("CIRNetworkController::LogoDataTransferTracker");
-    return *iLogoDataTransferTracker;
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::LogoDataTransferTracker()
-// ---------------------------------------------------------
-
-void CIRNetworkController::HandleDataTransferEventL( 
-		const MIRDataTransferTracker::TIRDataTransferPckg& aData )
-{
-    IRLOG_DEBUG("CIRNetworkController::HandleDataTransferEventL - Entering");
-    iDataTransferTracker->RawDataTransferredL(aData.iBytesSentTotal,
-            aData.iBytesReceivedTotal,
-            MIRDataTransferTracker::EIRTransferCategoryIsds);
-    IRLOG_DEBUG("CIRNetworkController::HandleDataTransferEventL - Exiting");
-}
-
-// ---------------------------------------------------------
-// CIRNetworkController::PreferredCarrierAvailable()
-// ---------------------------------------------------------
-
-void CIRNetworkController::PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
-                                            TAccessPointInfo aNewAPInfo,
-                                            TBool aIsUpgrade,
-                                            TBool aIsSeamless )
-{
-    IRLOG_DEBUG("CIRNetworkController::PreferredCarrierAvailable - Entering");
-
-    (void)aOldAPInfo;
-    (void)aNewAPInfo;
-    (void)aIsUpgrade;
-    IRLOG_DEBUG5("CIRNetworkController::PreferredCarrierAvailable, old ap : %d, new ap : %d, aIsUpgrade : %d, aIsSeamless : %d", 
-                 aOldAPInfo.AccessPoint(), aNewAPInfo.AccessPoint(), aIsUpgrade, aIsSeamless);
-    
-    if (aIsSeamless)
-    {
-        // It is Seamless. E.g. Mobile IP enabled.
-    }
-    else
-    {
-        // sockets used by the connection should be closed here.
-
-        // We ask to migrate to the Preferred Carrier.
-        if (!IsOfflineMode())
-        {
-            //handling over connection may take some time, during handling over connection,
-            //application should be in disconnected state
-            TRAP_IGNORE(iObserver->IRNetworkEventL(ENetworkConnectionDisconnected);)
-            
-            iIRNetworkObserver->SetNetworkMonitoring(EFalse);
-            
-            iMobility->MigrateToPreferredCarrier();
-            iHandingOver = ETrue;
-        }
-    }
-
-    IRLOG_DEBUG("CIRNetworkController::PreferredCarrierAvailable - Exiting");
-}
-
-
-// ---------------------------------------------------------
-// CIRNetworkController::NewCarrierActive()
-// ---------------------------------------------------------
-void CIRNetworkController::NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless )
-{
-    IRLOG_DEBUG("CIRNetworkController::NewCarrierActive - Entering");
-    (void)aNewAPInfo;
-    IRLOG_DEBUG3("CIRNetworkController::NewCarrierActive, new ap : %d, aIsSeamless : %d",
-                 aNewAPInfo.AccessPoint(), aIsSeamless);
-    
-    if (aIsSeamless)
-    {
-        // It is Seamless. E.g. Mobile IP enabled.
-    }
-    else
-    {
-        // sockets used by the connection should be re-opened here.
-        // We accept the new IAP.
-
-        iMobility->NewCarrierAccepted();
-
-        iIsConnectRequestIssued = EFalse;
-        iNetworkConnectionState = EIRNetworkConnectionActive;
-        iIsConnectedToNetwork = ETrue;
-        iConnectionPresent = ETrue;
-        
-        iIRNetworkObserver->SetNetworkMonitoring(ETrue);
-        iIRNetworkObserver->InitializeNetworkObserver();    
-    }
-
-    IRLOG_DEBUG("CIRNetworkController::NewCarrierActive - Exiting");
-}
-
-
-// ---------------------------------------------------------
-// CIRNetworkController::Error()
-// ---------------------------------------------------------
-void CIRNetworkController::Error( TInt /*aError*/ )
-{
-    IRLOG_DEBUG("CIRNetworkController::Error");
-    // Does nothing for the moment
-}
-	
-// ---------------------------------------------------------
-// HandleRunLSuccessL()
-// Handles the success case of Network connection in RunL
-// ---------------------------------------------------------
-void CIRNetworkController::HandleRunLSuccessL()
-{
-    IRLOG_DEBUG("CIRNetworkController::HandleRunLSuccessL - Entering");
-
-    switch (iNetworkControllerState)
-    {
-    case EConnectingToNetwork:
-    {
-        iIsConnectedToNetwork = ETrue;
-        // Connection to network sucessful
-        iNetworkConnectionState = EIRNetworkConnectionActive;
-        iConnectionPresent = ETrue;
-        iIsConnectRequestIssued = EFalse;
-        iIRNetworkObserver->InitializeNetworkObserver();
-    }
-        break;
-    default:
-    {
-        // no implementation
-    }
-        break;
-    }
-
-    if (!iMobility)
-    {
-        iMobility = CActiveCommsMobilityApiExt::NewL(*iIRNetworkConnection,
-                *this);
-    }
-    IRLOG_DEBUG("CIRNetworkController::HandleRunLSuccessL - Exiting");
-}
-
-
-// ---------------------------------------------------------
-// HandleRunLErrorL()
-// Handles the error case of Network connection in RunL
-// ---------------------------------------------------------
-void CIRNetworkController::HandleRunLErrorL(TInt aStatusCode )
-{
-    IRLOG_DEBUG("CIRNetworkController::HandleRunLErrorL - Entering");
-	
-    switch(iNetworkControllerState)
-	{
-		case EConnectingToNetwork:
-		{
-		    // Connection to network failure
-			iNetworkConnectionState = EIRNetworkConnectionInActive;
-            iIsConnectedToNetwork = EFalse;
-            iConnectionPresent = EFalse;
-            iIsConnectRequestIssued = EFalse;
-            if (aStatusCode != KErrCancel)
-            {
-                if (iDefaultConnection)
-                {
-                    //give user the second chance to select access point manually
-                    ChooseAccessPointL(EFalse);
-                }
-                else
-                {
-                    iObserver->IRNetworkEventL(EDisplayNetworkMessageNoConnectivity);
-                }
-            }
-            else
-            {
-                iObserver->IRNetworkEventL(EAccessPointSelectionCancelled);
-                ResetPendingRequests(EFalse);
-            }
-        }
-        break;
-        
-        default:
-        {
-            // no implementation
-        }
-        break;
-    }
-
-    IRLOG_DEBUG("CIRNetworkController::HandleRunLErrorL - Exiting");
-}
-
-// ---------------------------------------------------------
-// Registers the observer that will be notified for 
-// a network connection.
-// Observer requires notification to reissue pending request
-// ---------------------------------------------------------
-	
-EXPORT_C  void CIRNetworkController::RegisterActiveNetworkObserverL(MIRActiveNetworkObserver&
-																	 aActiveNetworkObserver)
-{
-    IRLOG_DEBUG("CIRNetworkController::RegisterActiveNetworkObserverL - Entering");
-    iActiveNetworkObserverArray.AppendL(&aActiveNetworkObserver);
-    IRLOG_DEBUG("CIRNetworkController::RegisterActiveNetworkObserverL - Exiting");
-}
-// ---------------------------------------------------------------------------
-// DeleteActiveNetworkObserver()
-// Used to remove an observer for roaming events from the observer array
-// ---------------------------------------------------------------------------
-EXPORT_C void CIRNetworkController::DeleteActiveNetworkObserver(MIRActiveNetworkObserver&
-																 aActiveNetworkObserver)
-{
-    IRLOG_DEBUG("CIRNetworkController::DeleteActiveNetworkObserver - Entering");
-    TInt index = iActiveNetworkObserverArray.Find(&aActiveNetworkObserver);
-
-    if (index != KErrNotFound)
-    {
-        iActiveNetworkObserverArray.Remove(index);
-    }
-
-    IRLOG_DEBUG("CIRNetworkController::DeleteActiveNetworkObserver - Exiting");
-}
-	
-// ---------------------------------------------------------------------------
-// NotifyActiveNetworkObserversL()
-// Used to notify all observers for network events about a change in network event
-// ---------------------------------------------------------------------------
-EXPORT_C void CIRNetworkController::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)
-{
-    IRLOG_DEBUG("CIRNetworkController::NotifyActiveNetworkObserversL - Entering");
-
-    for (TInt i = iActiveNetworkObserverArray.Count() - 1; i >= 0; i--)
-    {
-        iActiveNetworkObserverArray[i]->NotifyActiveNetworkObserversL(aEvent);
-    }
-
-    IRLOG_DEBUG("CIRNetworkController::NotifyActiveNetworkObserversL - Exiting");
-}
-// ---------------------------------------------------------
-// IsHandingOverConnection()
-// Indicates if the Hand over of Network connection has happened
-// ---------------------------------------------------------    
-EXPORT_C  TBool CIRNetworkController::IsHandingOverConnection()
-{
-	IRLOG_DEBUG("CIRNetworkController::IsHandingOverConnection - Entering");
-    IRLOG_DEBUG("CIRNetworkController::IsHandingOverConnection - Exiting");
-	return iHandingOver;
-}
-
-// -----------------------------------------------------------
-// Reset member iHandingOver to EFalse.
-// -----------------------------------------------------------
-void CIRNetworkController::ResetHandingOverConnection()
-{
-    IRLOG_DEBUG("CIRNetworkController::ResetHandingOverConnection(), Entering");
-    iHandingOver = EFalse;
-    IRLOG_DEBUG("CIRNetworkController::ResetHandingOverConnection(), Exiting");
-}
-
-// -----------------------------------------------------------------------------
-// Notifies observers when user cancels network connection, to reset 
-// the pending requests  
-// ResetPendingRequests()
-// -----------------------------------------------------------------------------
-void CIRNetworkController::ResetPendingRequests(TBool aValue)
-{
-    for (TInt i = 0; i < iActiveNetworkObserverArray.Count(); i++)
-    {
-        iActiveNetworkObserverArray[i]->ResetPendingRequests(aValue);
-    }
-}
--- a/internetradio2.0/networkcontrollersrc/irnetworkobserver.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +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 "irdebug.h"
-#include "irnetworkobserver.h"
-#include "irnetworkcontroller.h"
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::NewL
-// Creates an Instance of CIRNetworkObserver
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRNetworkObserver *CIRNetworkObserver::NewL(CIRNetworkController *aNetworkController)
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::NewL - Entering" );
-	CIRNetworkObserver *self = NewLC(aNetworkController);
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRNetworkObserver::NewL - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::~CIRNetworkObserver()
-// Default Destructor
-// ---------------------------------------------------------------------------
-//
-CIRNetworkObserver::~CIRNetworkObserver()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Entering" );
-        Cancel();
-	iIRConnectionMonitor.CancelNotifications();
-	iIRConnectionMonitor.Close();
-	IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::InitializeNetworkObserver()
-//  Initializes the Connection monitor
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::InitializeNetworkObserver()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Entering" );
-	iConnectionId = 0;
-	if(!IsActive())
-		{
-		iObserverState = EInitializing;
-		iIRConnectionMonitor.GetConnectionCount(iConnectionCount,iStatus);
-		SetActive();
-		}
-	IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::SetObserver(MIRNetworkController* aObserver)
-// Set the observer used to communicate with the IRNetworkController
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::SetObserver(MIRNetworkController* aObserver)
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Entering" );
-	iMonitorObserver = aObserver;
-	iMonitoringRequired = ETrue;  
-	IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::CIRNetworkObserver()
-// Default Constructor
-// ---------------------------------------------------------------------------
-//
-CIRNetworkObserver::CIRNetworkObserver(CIRNetworkController *aNetworkController):
-    CActive( CActive::EPriorityStandard ), iNetworkController(aNetworkController)
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Entering" );
-	// Add the AO to the ActiveScheduler
-	CActiveScheduler::Add( this );
-	IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Creates an Instance of CIRNetworkObserver
-// ---------------------------------------------------------------------------
-//
-CIRNetworkObserver *CIRNetworkObserver::NewLC(CIRNetworkController *aNetworkController )
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Entering " );
-	CIRNetworkObserver *self = new( ELeave )CIRNetworkObserver(aNetworkController);
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::ConstructL() 
-// Second Phase construction.
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Entering" );
-	iIRConnectionMonitor.ConnectL();
-	iIRConnectionMonitor.NotifyEventL(*this);
-	iMonitoringRequired = EFalse;  
-	IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::RunL()
-// The function is called by the active scheduler when a request completion event occurs,
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::RunL()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::RunL - Entering" );
-	IRNetworkObserverRunL();
-	IRLOG_DEBUG( "CIRNetworkObserver::RunL - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::DoCancel()
-// Cancels the pending requests on the CIRNetworkObserver Active object
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::DoCancel()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::DoCancel" );
-	}
-
-// ---------------------------------------------------------------------------    
-// CIRNetworkObserver::RunError()
-// Handles a leave occurring in the request completion event handler RunL()
-// ---------------------------------------------------------------------------
-//    
-TInt CIRNetworkObserver::RunError(TInt /*aError*/)
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::RunError" );
-	iNetworkController->ResetHandingOverConnection();
-	return KErrNone;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::EventL(const CConnMonEventBase &aConnMonEvent)
-// Derived from MConnectionMonitorObserver
-// Implements the EventL method which is called when there is a network event
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::EventL(const CConnMonEventBase &aConnMonEvent)
-	{
-	IRLOG_INFO4( "CIRNetworkObserver::EventL - Event type %d for connection %d, iConnectionId=%d", 
-	             aConnMonEvent.EventType(), aConnMonEvent.ConnectionId(), iConnectionId );
-	switch(aConnMonEvent.EventType())
-		{
-		case EConnMonCreateConnection:
-			{
-			//Triggered when a new connection has been been created
-			// for future implementation
-			}
-		break;
-
-		case EConnMonDeleteConnection:
-			{
-			//Triggered when a connection has been been deleted.
-			if( aConnMonEvent.ConnectionId() == iConnectionId )
-				{
-				if(iMonitoringRequired)
-					{
-				    if (iMonitorObserver)
-					{
-				        iMonitorObserver->IRNetworkEventL(ENetworkConnectionDisconnected);
-					}
-				    else
-				    {
-				        iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionDisconnected);
-				    }
-					}
-				}			
-			}
-		break;
-
-		case EConnMonCreateSubConnection:       
-			{
-			//Triggered when a new subconnection has been been created
-			// for future implementation
-			}
-		break;
-
-		case EConnMonDeleteSubConnection:       
-			{
-			//Triggered when a subconnection has been been deleted
-			// for future implementation
-			}
-		break;
-
-		case EConnMonDownlinkDataThreshold:     
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonUplinkDataThreshold:       
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonNetworkStatusChange:       
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonConnectionStatusChange:    
-			{
-			//Triggered when the status of some connection changes.
-			// for future implementation
-			}
-		break;
-
-		case EConnMonConnectionActivityChange:  
-			{
-			//Triggered when some connection changes from active to idle or vice versa
-			// for future implementation
-			}
-		break;
-
-		case EConnMonNetworkRegistrationChange: 
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonBearerChange:              
-			{
-			//Triggered when bearer type (GPRS / Edge GPRS / WCDMA) changes
-			// for future implementation
-			}
-		break;
-
-		case EConnMonSignalStrengthChange:      
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonBearerAvailabilityChange:  
-			{
-			//Triggered when the availability of some bearer changes
-			// for future implementation
-			}
-		break;
-
-		case EConnMonIapAvailabilityChange:     
-			{
-			// for future implementation
-			}
-		break;
-
-		case EConnMonTransmitPowerChange:    
-			{
-			// for future implementation
-			}
-		break;
-		default:
-			{
-			// no implementation
-			}
-		break;    
-		}
-	IRLOG_DEBUG( "CIRNetworkObserver::EventL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::IdentifyConnection()
-// Identifies the type of connection we have used to get connected to network
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::IdentifyConnection()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Entering" );
-	if(!IsActive())
-		{
-		iObserverState = EGettingConnectionInfo;
-		iIRConnectionMonitor.GetConnectionInfo(
-		    iConnectionCount,iConnectionId,iSubConnectionCount);
-		// O Indicates method applies to connection
-		iIRConnectionMonitor.GetIntAttribute(
-		    iConnectionId,0,KBearer,iConnectionType,iStatus);
-		SetActive();
-		}
-	IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::GetIAPId()
-// Retrieves the IAP Id of the connection
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkObserver::GetAPId()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Entering" );
-	if(!IsActive())
-		{
-		iObserverState = EGettingIAPId;
-		iIRConnectionMonitor.GetConnectionInfo(
-		    iConnectionCount,iConnectionId,iSubConnectionCount);
-		// O in RConnectionMonitor::GetIntAttribute indicates method applies to connection
-		iIRConnectionMonitor.GetUintAttribute(
-		    iConnectionId,0,KIAPId,iIAPId,iStatus);
-		SetActive();
-		}
-	IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::IRNetworkObserverRunL()
-// Utility function used just to keep RunL() small
-// ---------------------------------------------------------------------------
-// 
-void CIRNetworkObserver::IRNetworkObserverRunL()
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL - Entering" );
-	switch(iObserverState)
-		{
-		case EInitializing:
-			{
-			if( iStatus.Int() == KErrNone )
-				{
-				// Initializing the Connection Monitor sucessful    
-				IdentifyConnection();
-				}
-			else
-				{
-				// Error initializing the connection monitor
-				iNetworkController->ResetHandingOverConnection();
-				}    
-			}
-		break;
-
-		case EGettingConnectionInfo:
-			{
-			if( iStatus.Int() == KErrNone )
-				{
-                iIsIAPIdAvailable = EFalse;
-				GetAPId();	
-				}
-			else
-				{
-				// Error initializing the connection monitor
-				iNetworkController->ResetHandingOverConnection();
-				}    
-			}
-		break;   
-		
-		case EGettingIAPId:
-			{
-			    iIsIAPIdAvailable = ETrue;   
-			    switch(iConnectionType)
-			    {
-			        case EBearerGPRS:
-			            {
-			            iIRConnectionType = EGprs;
-			            }
-			        break;
-                    
-			        case EBearerEdgeGPRS:
-			            {
-			            iIRConnectionType = EEdge;
-			            }
-			        break;
-                    
-			        case EBearerWLAN:
-			            {
-			            iIRConnectionType = EWiFi;    
-			            }
-			        break;
-                    
-			        case EBearerWCDMA:
-			            {
-			            iIRConnectionType = EWcdma;
-			            }
-                    break;
-			            
-			        case EBearerCDMA2000:
-			            {
-			            iIRConnectionType = ECdma2000;
-			            }
-			        break;
-			        
-			        default:
-			            {
-			            #ifdef __WINS__
-			            iIRConnectionType = EGprs;
-			            #endif
-			            }
-			        break;
-			    }
-			    
-                
-                if (iMonitoringRequired)
-                {
-                    if (iMonitorObserver)    
-                    {
-                        // Intimate the connection established event
-                        iMonitorObserver->IRNetworkEventL(ENetworkConnectionEstablished);
-                    }
-                    else
-                    {
-                        iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionEstablished);
-                    }
-                }
-                
-			    iNetworkController->ResetHandingOverConnection();
-			}
-			break;
-			
-		default:
-			{
-			// no implementation
-			}
-		break;
-		}
-	IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL	- Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNetworkObserver::SetNetworkMonitoring()
-// Sets network monitoring observer to decide whether network monitoring is required.
-// ---------------------------------------------------------------------------
-// 
-void CIRNetworkObserver::SetNetworkMonitoring(TBool aValue)
-	{
-	IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Entering" );
-
-	iMonitoringRequired = aValue;	
-	
-	IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Exiting" );
-
-	}
--- a/internetradio2.0/presetplugininc/irpreset.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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 IRPRESET_H
-#define IRPRESET_H
-
-#include <badesca.h>
-
-#include "pspresetinterface.h"
-
-class CIRIsdsPreset;
-class CIRChannelServerUrl;
-
-const TUid KIRPreset = { 0x10009DC1 };
-
-/**
- *preset abstract class to expose general apis to the app
- *it is the base class for IRPresetImpl,which is a plugin
- *the plugin implements all the pure virtual functions
-*/
-class CIRPreset:public CPSPresetInterface
-	{
-
-public:
-
-	/**
-	*CIRPreset::SetId()
-	*sets id
-	*@param TDesC,supplied by xml parser
-	*/
-	virtual void SetId(const TDesC &aId)=0;
-
-	/**
-	*CIRPreset::SetId()
-	*sets id
-	*@param TInt,provided to manipulate the id number
-	*/
-	virtual void SetId(TInt aId)=0;
-
-
-	/**
-	*CIRPreset::SetLangInfo()
-	*sets the preset language name and the code
-	*@param TdesC,TdesC language id and name to be set
-	*/
-	virtual void SetLangInfo(const TDesC &aLangId,const TDesC& aLangName)=0;
-
-	/**
-	*CIRPreset::SetCountryInfo()
-	*sets the preset country name and the code
-	*@param TdesC,TdesC country id and country name to be set
-	*/
-	virtual void SetCountryInfo(const TDesC &aCountryId,
-		const TDesC& aCountryName)=0;
-
-	/**
-	*CIRPreset::SetLangCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	virtual void SetLangCode(const TDesC &aLangId)=0;
-
-	/**
-	*CIRPreset::SetLang()
-	*sets the language
-	*@param TdesC language
-	*/
-	virtual void SetLang(const TDesC& aLangName)=0;
-
-	/**
-	*CIRPreset::SetCountryCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	virtual void SetCountryCode(const TDesC &aCountryId)=0;
-
-	/**
-	*CIRPreset::SetCountryName()
-	*sets the language name
-	*@param TdesC language name
-	*/
-	virtual void SetCountryName(const TDesC& aCountryName)=0;
-
-	/**
-	*CIRPreset::SetLastModifiedTime()
-	*gets the channel  url at a particular index
-	*@param TDesC,time stamp
-	*/
-	virtual void SetLastModifiedTime(const TDesC &aLastModified)=0;
-
-	/**
-	*CIRPreset::SetGenreInfo()
-	*sets the genreid and name
-	*@param aGenreId
-	*@param aGenreName
-	*/
-	virtual void SetGenreInfo(const TDesC& aGenreId,
-		const TDesC& aGenreName)=0;
-
-	/**
-	*CIRPreset::SetImgUrl()
-	*sets the image url
-	*@param aImgUrl
-	*/
-	virtual void SetImgUrl(const TDesC& aImgUrl)=0;
-
-	/**
-	*CIRPreset::SetAdvertisementInUse()
-	*sets the advertisementinuse url
-	*@param aAdvertisementInUse
-	*/
-	virtual void SetAdvertisementInUse(const TDesC& aAdvertisementInUse)=0;
-
-	/**
-	*CIRPreset::SetDescription()
-	*sets the description for the channel
-	*@param aDescription
-	*/
-	virtual void SetDescription(const TDesC& aDescription)=0;
-
-	/**
-	*CIRPreset::SetAdvertisementUrl()
-	*sets the advertisement url
-	*@param aAdvertisementUrl
-	*/
-	virtual void SetAdvertisementUrl(const TDesC& aAdvertisementUrl)=0;
-
-	/**
-	*CIRPreset::SetUrlCount()
-	*sets the count of the number of urls
-	*/
-	virtual void SetUrlCount()=0;
-
-	/**
-	*CIRPreset::SetShortDesc()
-	*sets the short description
-	*@param aShortDesc
-	*/
-	virtual void SetShortDesc(const TDesC& aShortDesc)=0;
-
-
-	/**
-	*CIRPreset::SetMusicStoreStatus()
-	*sets the musicStoreEnabled flag
-	*@param aMusicStoreStatus
-	*/
-	virtual void SetMusicStoreStatus(const TDesC& aMusicStoreStatus)=0;
-
-
-	/**
-	*CIRPreset::SetUrlCount()
-	*sets the count of the number of urls
-	*@param aCnt ,count
-	*/
-	virtual void SetUrlCount(TInt aCnt)=0;
-
-	/**
-	*CIRPreset::SetIndex()
-	*sets the index for the preset.used only for presets in the fav list
-	*@param aInt
-	*/
-	//not required
-	//virtual void SetIndex(TInt aInt)=0
-
-	/**
-	*CIRPreset::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate .server bitrate
-	*/
-	virtual void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
-		const TDesC &aBitrate)=0;
-
-	/**
-	*CIRPreset::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate ,server bitrate
-	*/
-	virtual void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
-		TInt aBitrate)=0;
-
-	/**
-	*CIRPreset::SetChannelType()
-	*sets the channel type
-	*@param aChannelType userdefined,isds,adhoc
-	*/
-	virtual void SetChannelType(TInt aChannelType)=0;
-
-	/**
-	*CIRPreset::GetId()
-	*gets the channel id
-	*@return TInt
-	*/
-	virtual TInt GetId()const=0;
-
-	/**
-	*CIRPreset::GetLangId()
-	*gets the channel channelangid
-	*@return TDesC
-	*/
-	virtual const TDesC& GetLangId() const=0;
-
-	/**
-	*CIRPreset::GetLangName()
-	*gets the channel language name
-	*@return TDesC
-	*/
-	virtual const TDesC& GetLangName() const=0;
-
-	/**
-	*CIRPreset::GetCountryId()
-	*gets the channel countryid
-	*@return TDesC
-	*/
-	virtual const TDesC& GetCountryId() const=0;
-
-	/**
-	*CIRPreset::GetCountryName()
-	*gets the channel country name
-	*@return TDesC
-	*/
-	virtual const TDesC& GetCountryName() const=0;
-
-	/**
-	*CIRPreset::GetLastModifiedTime()
-	*gets the channel last modified time stamp
-	*@return TDesC
-	*/
-	virtual const TDesC& GetLastModifiedTime() const=0;
-
-	/**
-	*CIRPreset::GetDescription()
-	*gets the channel description
-	*@return TDesC
-	*/
-	virtual const TDesC& GetDescription() const=0;
-
-	/**
-	*CIRPreset::GetShortDescription()
-	*gets the channel  short description
-	*@return TDesC
-	*/
-	virtual const TDesC& GetShortDescription() const=0;
-
-
-	/**
-	*CIRPreset::GetMusicStoreStatus()
-	*gets the channel  musicStoreEnabled flag
-	*@return TDesC
-	*/
-	virtual const TDesC& GetMusicStoreStatus() const=0;
-
-
-    /**
-    *CIRPreset::GetChannelType()
-	*gets the channel  Type
-	*@return TInt
-	*/
-	virtual TInt GetChannelType()const=0;
-
-	/**
-	*CIRPreset::GetGenreId()
-	*gets the channel  genreid
-	*@return TDesC
-	*/
-	virtual const TDesC& GetGenreId() const=0;
-
-	/**
-	*CIRPreset::GetGenreName()
-	*gets the channel  genre name
-	*@return TDesC
-	*/
-	virtual const TDesC& GetGenreName() const=0;
-
-	/**
-	*CIRPreset::GetAdvertisementUrl()
-	*gets the channel  advertisement url
-	*@return TDesC
-	*/
-	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
-	*@return TDesC
-	*/
-	virtual const TDesC& GetImgUrl()const=0;
-
-    /**
-    *CIRPreset::GetUrlCount()
-	*gets the channel  url count
-	*@return TDesC
-	*/
-	virtual TInt GetUrlCount()const=0;
-
-	virtual CIRChannelServerUrl& GetUrl(TInt aIndex) const = 0;
-	
-	/*
-	 * get the channel url at specified position
-	 *
-	 */
-	virtual const TDesC& GetChannelUrlAt(TInt aIndex) const = 0;
-	
-	/**
-	*CIRPreset::GetAvailableBitrates()
-	*gets the bitrate array
-	*@return RArray<TInt>
-	*/
-    virtual RArray<TInt>& GetAvailableBitrates()=0;
-
-	/**
- 	*void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
- 	*used to convert the isdspresets to plugnized presets.
- 	*Does a deep copy for all the member variables
- 	*@param CIRIsdsPreset&,the preset to be copied from
-	*/
-    virtual void CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)=0;
-
-	/**
-	*CIRPreset::CopyPresetData()
-	*copy data to CIRIsdsPreset
-	*@param CIRIsdsPreset&,the preset to be copied into
-	*/
-	virtual void CopyPresetData(CIRIsdsPreset& aIsdsPreset) const =0;
-
-	 /**
-     * Sets the logo data for this preset for a specific size.
-     *
-     * @param   aData           Raw image data to set.
-     * @param   aSize           Size of the logo in pixels.
-     */
-    virtual void SetLogoData( const TDesC8& aData ) = 0;
-
-    /**
-     * Returns the logo data for this preset.
-     *
-     * If the returned descriptor's length is zero, then it means
-     * that the preset does not have a logo.
-     */
-    virtual  const TDesC8& GetLogoData() const = 0;
-
-    /*
-     * Returns the played times of the channel
-     */
-    virtual TInt GetPlayedTimes() const = 0;
-    
-    /*
-     * 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 Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,541 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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 IRPRESETIMPL_H
-#define IRPRESETIMPL_H
-
-#include "irpreset.h"
-
-class CIRChannelServerUrlImpl;
-
-/**
- * This class provides the basic structure to hold the preset
- *information that is saved in the favourites database
- *It also provides the basic getter and setter functions to
- *manage the preset information.
- *for url selection for a particular bitrate some functionality
- *has been provided
- *copy constructor and assignment operator has been provided to
- *override the default ones
- *
- * @code
- *CIRPresetImpl* preset = CIRPresetImpl::NewL()
- *preset->SetXXX();
- *preset->GetXXX()
- * *preset1 = *preset2
- * @endcode
- *
- */
-
-class CIRPresetImpl:public CIRPreset
-	{
-
-public:
-
-	/**CIRPresetImpl::NewL()
-	*Static function
-	*standard two phased constructor
-	*@param void
-	*@return *CIRPresetImpl
-	**/
-    static CIRPresetImpl* NewL(TAny* aParams);
-
-
-	/**CIRPresetImpl::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@param void
-	*@return *CIRPresetImpl
-	**/
- 	static CIRPresetImpl* NewLC(TAny* aParams);
-
-
-	/**CIRPresetImpl::~CIRIsdsPreset()
-	*standard C++ destructor
-	*@param NA
-	*@return NA
-	**/
-	~CIRPresetImpl();
-
-	/**
-	*CIRPresetImpl::SetId()
-	*sets id
-	*@param TDesC,supplied by xml parser
-	*/
-	void SetId(const TDesC &aId);
-
-	/**
-	*CIRPresetImpl::SetId()
-	*sets id
-	*@param TInt,provided to manipulate the id number
-	*/
-	void SetId(TInt aId);
-
-
-	/**
-	*CIRPresetImpl::SetLangInfo()
-	*sets the preset language name and the code
-	*@param TdesC,TdesC language id and name to be set
-	*/
-	void SetLangInfo(const TDesC &aLangId,const TDesC& aLangName);
-
-	/**
-	*CIRPresetImpl::SetCountryInfo()
-	*sets the preset country name and the code
-	*@param TdesC,TdesC country id and country name to be set
-	*/
-	void SetCountryInfo(const TDesC &aCountryId,const TDesC& aCountryName);
-
-	/**
-	*CIRPresetImpl::SetLangCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	void SetLangCode(const TDesC &aLangId);
-
-	/**
-	*CIRPresetImpl::SetLang()
-	*sets the language
-	*@param TdesC language
-	*/
-	void SetLang(const TDesC& aLangName);
-
-	/**
-	*CIRPresetImpl::SetCountryCode()
-	*sets the language code
-	*@param TdesC language code
-	*/
-	void SetCountryCode(const TDesC &aCountryId);
-
-	/**
-	*CIRPresetImpl::SetCountryName()
-	*sets the language name
-	*@param TdesC language name
-	*/
-	void SetCountryName(const TDesC& aCountryName);
-
-	/**
-	*CIRPresetImpl::SetLastModifiedTime()
-	*gets the channel  url at a particular index
-	*@param TDesC,time stamp
-	*/
-	void SetLastModifiedTime(const TDesC &aLastModified);
-
-	/**
-	*CIRPresetImpl::SetGenreInfo()
-	*sets the genreid and name
-	*@param aGenreId
-	*@param aGenreName
-	*/
-	void SetGenreInfo(const TDesC& aGenreId,const TDesC& aGenreName);
-
-	/**
-	*CIRPresetImpl::SetImgUrl()
-	*sets the image url
-	*@param aImgUrl
-	*/
-	void SetImgUrl(const TDesC& aImgUrl);
-
-	/**
-	*CIRPresetImpl::SetLogoData()
-	*sets the Logo Data
-	*@param aData
-	*@param aSize
-	*/
-	void SetLogoData( const TDesC8& aData );
-
-	/**
-	*CIRPresetImpl::SetAdvertisementInUse()
-	*sets the advertisementinuse url
-	*@param aAdvertisementInUse
-	*/
-	void SetAdvertisementInUse(const TDesC& aAdvertisementInUse);
-
-	/**
-	*CIRPresetImpl::SetDescription()
-	*sets the description for the channel
-	*@param aDescription
-	*/
-	void SetDescription(const TDesC& aDescription);
-
-	/**
-	*CIRPresetImpl::SetAdvertisementUrl()
-	*sets the advertisement url
-	*@param aAdvertisementUrl
-	*/
-	void SetAdvertisementUrl(const TDesC& aAdvertisementUrl);
-
-	/**
-	*CIRPresetImpl::SetUrlCount()
-	*sets the count of the number of urls
-	*/
-	void SetUrlCount();
-
-	/**
-	*CIRPresetImpl::SetShortDesc()
-	*sets the short description
-	*@param aShortDesc
-	*/
-	void SetShortDesc(const TDesC& aShortDesc);
-
-	/**
-	*CIRPresetImpl::SetUrlCount()
-	*sets the count of the number of urls
-	*@param aCnt ,count
-	*/
-	void SetUrlCount(TInt aCnt);
-
-	/**
-	*CIRPresetImpl::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate .server bitrate
-	*/
-	void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
-		const TDesC &aBitrate);
-
-	/**
-	*CIRPresetImpl::SetUrlL()
-	*sets the channel server url
-	*@param aServerName ,server name
-	*@param aUrl ,server url
-	*@param aBitrate ,server bitrate
-	*/
-	void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate);
-
-	/**
-	*CIRPresetImpl::SetChannelType()
-	*sets the channel type
-	*@param aChannelType userdefined,isds,adhoc
-	*/
-	void SetChannelType(TInt aChannelType);
-	
-	/**
-	*CIRPresetImpl::SetMusicStoreStatus()
-	*sets the musicStoreEnabled 
-	*@param aMusicStoreStatus
-	*/
-	void SetMusicStoreStatus(const TDesC& aMusicStoreStatus);
-
-	//getter functions
-
-	/**
-	*CIRPresetImpl::GetId()
-	*gets the channel id
-	*@return TInt
-	*/
-	TInt GetId()const;
-	/**
-	*CIRPresetImpl::GetLangId()
-	*gets the channel channelangid
-	*@return TDesC
-	*/
-	const TDesC& GetLangId() const;
-
-	/**
-	*CIRPresetImpl::GetLangName()
-	*gets the channel language name
-	*@return TDesC
-	*/
-	const TDesC& GetLangName() const;
-
-	/**
-	*CIRPresetImpl::GetCountryId()
-	*gets the channel countryid
-	*@return TDesC
-	*/
-	const TDesC& GetCountryId() const;
-
-	/**
-	*CIRPresetImpl::GetCountryName()
-	*gets the channel country name
-	*@return TDesC
-	*/
-	const TDesC& GetCountryName() const;
-
-	/**
-	*CIRPresetImpl::GetLastModifiedTime()
-	*gets the channel last modified time stamp
-	*@return TDesC
-	*/
-	const TDesC& GetLastModifiedTime() const;
-
-	/**
-	*CIRPresetImpl::GetDescription()
-	*gets the channel description
-	*@return TDesC
-	*/
-	const TDesC& GetDescription() const;
-
-	/**
-	*CIRPresetImpl::GetShortDescription()
-	*gets the channel  short description
-	*@return TDesC
-	*/
-	const TDesC& GetShortDescription() const;
-
-    /**
-    *CIRPresetImpl::GetChannelType()
-	*gets the channel  Type
-	*@return TInt
-	*/
-	TInt GetChannelType()const;
-
-	/**
-	*CIRPresetImpl::GetGenreId()
-	*gets the channel  genreid
-	*@return TDesC
-	*/
-	const TDesC& GetGenreId() const;
-
-	/**
-	*CIRPresetImpl::GetGenreName()
-	*gets the channel  genre name
-	*@return TDesC
-	*/
-	const TDesC& GetGenreName() const;
-
-	/**
-	*CIRPresetImpl::GetAdvertisementUrl()
-	*gets the channel  advertisement url
-	*@return TDesC
-	*/
-	const TDesC& GetAdvertisementUrl() const;
-
-	const TDesC& GetAdvertisementInUse() const;
-	
-	/**
-	*CIRPresetImpl::GetImgUrl()
-	*gets the channel  image url
-	*@return TDesC
-	*/
-	const TDesC& GetImgUrl() const;
-
-    /**
-    *CIRPresetImpl::GetUrlCount()
-	*gets the channel  url count
-	*@return TDesC
-	*/
-	TInt GetUrlCount()const;
-
-	CIRChannelServerUrl& GetUrl(TInt aIndex) const;
-	
-	/*
-	*CIRPresetImpl::GetLogoData()
-	*gets the Logo Data
-	*@return TDesC8&
-	*/
-    const TDesC8& GetLogoData() const;
-	
-	/*
-	 * get the channel url at specified position
-     *
-     */
-	const TDesC& GetChannelUrlAt(TInt aIndex) const;
-	    
-	/**
-	*CIRPresetImpl::GetMusicStoreStatus()
-	*gets the musicStoreEnabled 
-	*@return TDesC&
-	*/
-	const TDesC& GetMusicStoreStatus()const;
-
-
-    /**
-    *CIRPresetImpl::operator=()
-	*assignment operator
-	*@param CIRIsdsPreset& aPreset
-	*@return CIRIsdsPreset
-	*/
-	CIRPresetImpl& operator=(const CIRPresetImpl& aPreset);
-
-	/**
- 	*void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
- 	*used to convert the isdspresets to plugnized presets.
- 	*Does a deep copy for all the member variables
- 	*@param CIRIsdsPreset&,the preset to be copied from
-	*/
-	void CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset);
-
-	/**
-	*CIRPresetImpl::CopyPresetData()
-	*copy data to CIRIsdsPreset
-	*@param CIRIsdsPreset&,the preset to be copied into
-	*/
-	void CopyPresetData(CIRIsdsPreset& aIsdsPreset) const;
-
-	/**
-	*CIRPresetImpl::GetAvailableBitrates()
-	*gets the bitrate array
-	*@return RArray<TInt>
-	*/
-	RArray<TInt>& GetAvailableBitrates();
-
-    /*
-     * Returns the played times of the channel
-     */
-    TInt GetPlayedTimes() const;
-    
-    /*
-     * Set the played times of the channel
-     */
-    void SetPlayedTimes(TInt aPlayedTimes);
-    
-    TBool GetRenamed() const;
-    
-    void SetRenamed();
-    
-protected:
-
-    /**CIRPresetImpl::CIRIsdsPreset()
-    *standard C++ constructor
-    *@param void
-    *@return NA
-    **/
-    CIRPresetImpl();
-    
-	/**CIRPresetImpl::ConstructL(TAny* aParams)
-	*standard second phase constructor(Leaveable)
-	*@param void
-	*@return void
-	**/
-	void ConstructL(TAny* aParams);
-
-
-    //for serialization
-    /**
-    *CIRPresetImpl::ExternalizeL()
-    *serializes the preset data into a stream
-    *@param aWriteStream
-    */
-    void ExternalizeL(RWriteStream& aWriteStream)const;
-
-    /**
-    *CIRPresetImpl::InternalizeL()
-    *serializes the preset data from a stream to a structure
-    *@param aReadStream
-    */
-    void InternalizeL(RReadStream& aReadStream);
-    
-private:
-
-	/**
-	 * no of channel urls
-	 */
-	TInt iChannelUrlCount;
-
-	/**
-	 * 0 for user defined 1 for isds type.
-	 */
-	TInt iType;
-
-	/**
-	 * isds generated preset id
-	 */
-	TInt iPresetId;
-
-	/**
-	 * preset language code
-	 */
-	RBuf iLanguageCode;
-
-	/**
-	 * preset language
-	 */
-	RBuf iLanguage;
-
-	/**
-	 * preset country of origin code
-	 */
-	RBuf iCountryCode;
-
-	/**
-	 * preset country of origin
-	 */
-	RBuf iCountry;
-
-	/**
-	 * preset last modified
-	 */
-	RBuf iLastModified;
-
-	/**
-	 * not in use
-	 */
-	RBuf iAdvertisementUrl;
-
-	/**
-	 * not in use
-	 */
-	RBuf iAdvertisementInUse;
-
-	/**
-	 * Logo URL
-	 */
-	RBuf iImgUrl;
-
-	/**
-     * Raw image data for the logo.
-     * Owned.
-     */
-    RBuf8 iLogoData;
-
-	/**
-	 * channel description
-	 */
-	RBuf iDescription;
-
-	/**
-	 * channel short desription
-	 */
-	RBuf iShortDesc;
-
-	/**
-	 * channel genre name
-	 */
-	RBuf iGenereName;
-
-	/**
-	 * channel genre id
-	 */
-	RBuf iGenereId;
-	
-	/**
-	 * musicStoreEnabled value
-	 */
-	RBuf iMusicStoreStatus;
-
-	/**
-	 * url array
-	 */
-	CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
-
-	/**
-	 * bitrate array
-	 */
-	RArray<TInt> iBitrateArray;
-	
-	//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/irpresetimpl.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1160 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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 "irchannelserverurl.h"
-#include "irdebug.h"
-#include "irpresetimpl.h"
-#include "irisdspreset.h"
-
-const TInt KUrlArrayMaxLength = 128;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::NewL()
-// Static function
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRPresetImpl* CIRPresetImpl::NewL( TAny* aParams )
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::NewL" );
-	CIRPresetImpl* self = CIRPresetImpl::NewLC( aParams );
-	CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRPresetImpl::NewL - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::NewLC()
-// Static function
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRPresetImpl* CIRPresetImpl::NewLC( TAny* aParams )
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::NewLC" );
-	CIRPresetImpl* self = new (ELeave) CIRPresetImpl;
-	CleanupStack::PushL( self );
-	self->ConstructL( aParams );
-	IRLOG_DEBUG( "CIRPresetImpl::NewLC - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::ConstructL()
-// standard second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::ConstructL(TAny* aParams)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::ConstructL" );
-	BaseConstructL(aParams);
-	iUrlArray=
-		new (ELeave) CArrayPtrFlat<CIRChannelServerUrl>(
-		KUrlArrayMaxLength);
-
-	IRLOG_DEBUG( "CIRPresetImpl::ConstructL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::~CIRPresetImpl()
-// standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-CIRPresetImpl::~CIRPresetImpl()
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::~CIRPresetImpl" );
-	iLanguageCode.Close();
-	iLanguage.Close();
-	iCountryCode.Close();
-	iCountry.Close();
-	iLastModified.Close();
-	iAdvertisementUrl.Close();
-	iAdvertisementInUse.Close();
-	iImgUrl.Close();
-	iLogoData.Close();
-	iDescription.Close();
-	iShortDesc.Close();
-	iGenereName.Close();
-	iGenereId.Close();
-	iMusicStoreStatus.Close();
-
-	if (iUrlArray)
-		{
-		iUrlArray->ResetAndDestroy();
-		}
-
-	delete iUrlArray;
-	iBitrateArray.Close();
-	IRLOG_DEBUG( "CIRPresetImpl::~CIRPresetImpl - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetId()
-// Function to set iPresetId
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetId(TInt aId)
-	{
-	iPresetId=aId;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetId()
-// Function to set iPresetId from a TDesC
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetId(const TDesC &aId)
-	{
-	TLex conv(aId);
-	conv.Val(iPresetId);
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetLangCode()
-// Function to set iLanguageCode from a TDesC
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetLangCode(const TDesC &aLangId)
-	{
-	iLanguageCode.Close();
-	iLanguageCode.Create( aLangId );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetLang()
-// Function to set iLanguage from a TDesC
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetLang(const TDesC& aLangName)
-	{
-	iLanguage.Close();
-	iLanguage.Create( aLangName );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetCountryCode()
-// Function to set iCountryCode from a TDesC
-// ---------------------------------------------------------------------------
-void CIRPresetImpl::SetCountryCode(const TDesC &aCountryId)
-	{
-	iCountryCode.Close();
-	iCountryCode.Create( aCountryId );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetCountryName()
-// Function to set iCountry from a TDesC
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetCountryName(const TDesC& aCountryName)
-	{
-	iCountry.Close();
-	iCountry.Create( aCountryName );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetLangInfo()
-// Function to set iLanguageCode, iLanguage
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetLangInfo(const TDesC &aLangId,const TDesC& aLangName)
-	{
-    SetLangCode( aLangId );
-    SetLang( aLangName );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetLangInfo()
-// Function to set iCountryCode, iCountry
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetCountryInfo(const TDesC &aCountryId,
-	const TDesC& aCountryName)
-	{
-	SetCountryCode( aCountryId );
-    SetCountryName( aCountryName );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetLastModifiedTime()
-// Function to set iLastModified
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetLastModifiedTime(const TDesC &aLastModified)
-	{
-	iLastModified.Close();
-	iLastModified.Create( aLastModified );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetGenreInfo()
-// Function to set iGenereName, iGenereId
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetGenreInfo(const TDesC& aGenreId,
-	const TDesC& aGenreName)
-	{
-	iGenereName.Close();
-	iGenereName.Create( aGenreName );
-	iGenereId.Close();
-	iGenereId.Create( aGenreId );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetImgUrl()
-// Function to set iImgUrl
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetImgUrl(const TDesC& aImgUrl)
-	{
-	iImgUrl.Close();
-	iImgUrl.Create( aImgUrl );
-	}
-
-// ---------------------------------------------------------------------------
-// From class CIRPresetImpl
-// Sets the raw logo image data.
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetLogoData( const TDesC8& aData )
-    {
-		iLogoData.Close();
-		iLogoData.Create( aData );
-    }
-
-// ---------------------------------------------------------------------------
-// From class CIRPresetImpl
-// Returns the raw logo image data.
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CIRPresetImpl::GetLogoData() const
-    {
-    return iLogoData;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetAdvertisementUrl()
-// Function to set iAdvertisementUrl
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetAdvertisementUrl(const TDesC& aAdvertisementUrl)
-	{
-	iAdvertisementUrl.Close();
-	iAdvertisementUrl.Create( aAdvertisementUrl );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetAdvertisementInUse()
-// Function to set iAdvertisementInUse
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetAdvertisementInUse(const TDesC& aAdvertisementInUse)
-	{
-	iAdvertisementInUse.Close();
-	iAdvertisementInUse.Create( aAdvertisementInUse );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetDescription()
-// Function to set iDescription
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl:: SetDescription(const TDesC& aDescription)
-	{
-    iDescription.Close();
-    iDescription.Create( aDescription );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetShortDesc()
-// Function to set iShortDesc
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl:: SetShortDesc(const TDesC& aShortDesc)
-	{
-    iShortDesc.Close();
-    iShortDesc.Create( aShortDesc );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetUrlCount()
-// Function to set iChannelUrlCount
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetUrlCount()
-	{
-	iChannelUrlCount=iUrlArray->Count();
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetUrlCount()
-// Function to set iChannelUrlCount
-// ---------------------------------------------------------------------------
-void CIRPresetImpl::SetUrlCount(TInt aCnt)
-	{
-	iChannelUrlCount=aCnt;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetChannelType()
-// Function to set iType
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetChannelType(TInt aType)
-	{
-	iType = aType;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetUrl()
-// Function to set Url parameter
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
-	const TDesC &aBitrate)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL" );
-	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
-	hold->SetServerName(aServerName);
-	hold->SetServerUrl(aUrl);
-	TLex conv(aBitrate);
-	TInt conVal = 0;
-	conv.Val(conVal);
-	hold->SetBitRate(conVal);
-	//ownership transferred to the array
-	//no need to delete hold
-	iUrlArray->AppendL(hold);
-	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetUrl()
-// Function to set Url parameter
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
-	TInt aBitrate)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate)" );
-	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
-	hold->SetServerName(aServerName);
-	hold->SetServerUrl(aUrl);
-	hold->SetBitRate(aBitrate);
-	iUrlArray->AppendL(hold);
-	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate) - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::SetMusicStoreStatus()
-// Function to set iMusicStoreStatus
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::SetMusicStoreStatus(const TDesC& aMusicStoreStatus)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::SetMusicStoreStatus - Entering" );
-    iMusicStoreStatus.Close();
-    iMusicStoreStatus.Create( aMusicStoreStatus );
-	IRLOG_DEBUG( "CIRPresetImpl::SetMusicStoreStatus - Exiting" );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetId()
-// Function to get iPresetId
-// ---------------------------------------------------------------------------
-//
-TInt CIRPresetImpl::GetId()const
-	{
-	return iPresetId;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetLangId()
-// Function to get iLanguageCode
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetLangId() const
-	{
-	return iLanguageCode;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetLangName()
-// Function to get iLanguage
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetLangName() const
-	{
-	return iLanguage;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetCountryId()
-// Function to get iCountryCode
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetCountryId() const
-	{
-	return iCountryCode;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetCountryName()
-// Function to get iCountry
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetCountryName() const
-	{
-	return iCountry;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetLastModifiedTime()
-// Function to get iLastModified
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetLastModifiedTime() const
-	{
-	return iLastModified;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetGenreId()
-// Function to get iGenereId
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetGenreId() const
-	{
-	return iGenereId;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetGenreName()
-// Function to get iGenereName
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetGenreName() const
-	{
-	return iGenereName;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetAdvertisementUrl()
-// Function to get iAdvertisementUrl
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetAdvertisementUrl() const
-	{
-	return iAdvertisementUrl;
-	}
-
-const TDesC& CIRPresetImpl::GetAdvertisementInUse() const
-{
-    return iAdvertisementInUse;
-}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetImgUrl()
-// Function to get iImgUrl
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetImgUrl() const
-	{
-	return iImgUrl;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetUrlCount()
-// Function to get iChannelUrlCount
-// ---------------------------------------------------------------------------
-//
-TInt CIRPresetImpl::GetUrlCount() const
-	{
-	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
- *
- */
-const TDesC& CIRPresetImpl::GetChannelUrlAt(TInt aIndex) const
-{
-    return iUrlArray->At(aIndex)->GetServerUrl();
-}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetDescription()
-// Function to get iDescription
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetDescription() const
-	{
-	return iDescription;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRPresetImpl::GetShortDescription()
-//Function to get iDescription
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetShortDescription() const
-	{
-	return iShortDesc;
-	}
-
-// ---------------------------------------------------------------------------
-//CIRPresetImpl::GetMusicStoreStatus()
-//Function to get iMusicStoreStatus
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRPresetImpl::GetMusicStoreStatus() const
-	{
-	return iMusicStoreStatus;
-	}
-
-
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetChannelType()
-// Function to get iType
-// ---------------------------------------------------------------------------
-//
-TInt CIRPresetImpl::GetChannelType()const
-	{
-	return iType;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl& CIRPresetImpl::operator=(const CIRPresetImpl& preset)
-// assignment operator eg. preset1=preset2
-// shallow copy
-// ---------------------------------------------------------------------------
-//
-CIRPresetImpl& CIRPresetImpl::operator=(const CIRPresetImpl& aPreset)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::operator=" );
-    if(&aPreset == this)
-		{
-		return *this;
-		}
-	//copy data members
- 	iPresetId = aPreset.iPresetId;
-
-	TRAP_IGNORE(SetNameL(aPreset.Name()))
-
-	iLanguageCode.Close();
-	iLanguageCode.Create(aPreset.iLanguageCode);
-
-	iLanguage.Close();
-	iLanguage.Create(aPreset.iLanguage);
-
-	iCountryCode.Close();
-	iCountryCode.Create(aPreset.iCountryCode);
-
-	iCountry.Close();
-	iCountry.Create(aPreset.iCountry);
-
-	iLastModified.Close();
-	iLastModified.Create(aPreset.iLastModified);
-
-	iAdvertisementUrl.Close();
-	iAdvertisementUrl.Create(aPreset.iAdvertisementUrl);
-
-	iAdvertisementInUse.Close();
-	iAdvertisementInUse.Create(aPreset.iAdvertisementInUse);
-
-	iImgUrl.Close();
-	iImgUrl.Create(aPreset.iImgUrl);
-
-	iLogoData.Close();
-	iLogoData.Create( aPreset.iLogoData );
-
-	iDescription.Close();
-	iDescription.Create(aPreset.iDescription);
-
-	iShortDesc.Close();
-	iShortDesc.Create(aPreset.iShortDesc);
-	
-	iMusicStoreStatus.Close();
-	iMusicStoreStatus.Create(aPreset.iMusicStoreStatus);
-
-	iGenereName.Close();
-	iGenereName.Create(aPreset.iGenereName);
-
-	iGenereId.Close();
-	iGenereId.Create(aPreset.iGenereId);
-
-	iChannelUrlCount = aPreset.iChannelUrlCount;
-	iType = aPreset.iType;  //0 for user defined 1 for isds type.
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		ASSERT( cnt >= 0 && cnt < aPreset.iUrlArray->Count() );
-		TRAPD(errUrl,SetUrlL(aPreset.iUrlArray->At(cnt)->GetServerName(),
-							 aPreset.iUrlArray->At(cnt)->GetServerUrl(),
-							 aPreset.iUrlArray->At(cnt)->GetBitRate()))
-		if(errUrl!=KErrNone)
-			{
-			return *this ;
-			}
-		}
-	IRLOG_DEBUG( "CIRPresetImpl::operator= - Exiting." );
- 	return *this;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::CIRPresetImpl()
-// default C++ constructor
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-CIRPresetImpl::CIRPresetImpl()
-	{
-	// no implementation
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::CIRPresetImpl()
-// default C++ constructor
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::ExternalizeL(RWriteStream& aWriteStream)const
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL" );
-//! externalize TInts s
-	aWriteStream.WriteInt32L(iPresetId);
-	aWriteStream.WriteInt32L(iType);
-	aWriteStream.WriteInt32L(iChannelUrlCount);
-
-	//Externalize HBufC s
-	//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 = 0;
-	if(!iLanguageCode.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iLanguageCode.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iLanguageCode;
-		}
-
-	if(!iLanguage.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iLanguage.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iLanguage;
-		}
-
-	if(!iCountryCode.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iCountryCode.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iCountryCode;
-		}
-
-	if(!iCountry.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iCountry.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iCountry;
-		}
-
-	if(!iGenereName.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iGenereName.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iGenereName;
-		}
-
-	if(!iGenereId.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iGenereId.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iGenereId;
-		}
-
-	if(!iLastModified.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iLastModified.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iLastModified;
-		}
-
-	if(!iAdvertisementUrl.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iAdvertisementUrl.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iAdvertisementUrl;
-		}
-
-	if(!iAdvertisementInUse.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iAdvertisementInUse.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iAdvertisementInUse;
-		}
-
-	if(!iImgUrl.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iImgUrl.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iImgUrl;
-		}
-
-	if(!iDescription.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iDescription.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iDescription;
-		}
-
-	if(!iShortDesc.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iShortDesc.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iShortDesc;
-		}
-
-	if(!iMusicStoreStatus.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iMusicStoreStatus.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iMusicStoreStatus;
-		}
-
-	if(!iLogoData.Length())
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iLogoData.Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream<<iLogoData;
-		}
-
-	//externalizing the preset data
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		GetUrl(cnt).ExternalizeL(aWriteStream);
-		}
-	
-	//added by Peter on June 23rd, 2009
-	aWriteStream.WriteInt32L(iPlayedTimes);
-	
-	aWriteStream.WriteInt32L(iRenamed);
-	
-	IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::CIRPresetImpl()
-// Internalizes the preset data
-// required for being derived from CPSPresetInterface
-// ---------------------------------------------------------------------------
-//
- void CIRPresetImpl::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::InternalizeL" );
-	//! Internalize TInts s
-	iPresetId=aReadStream.ReadInt32L();
-	iType=aReadStream.ReadInt32L();
-	iChannelUrlCount=aReadStream.ReadInt32L();
-	TInt len = 0;
-
-	//algo
-	//1.get the length of the data
-	//2.read that many bytes
-	//3.if read length is zero. skip.
-	len=aReadStream.ReadInt32L();
-	iLanguageCode.Close();
-	if(len!=0)
-		{
-		iLanguageCode.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iLanguage.Close();
-	if(len!=0)
-		{
-		iLanguage.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iCountryCode.Close();
-	if(len!=0)
-		{
-		iCountryCode.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iCountry.Close();
-	if(len!=0)
-		{
-		iCountry.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iGenereName.Close();
-	if(len!=0)
-		{
-		iGenereName.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iGenereId.Close();
-	if(len!=0)
-		{
-		iGenereId.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iLastModified.Close();
-	if(len!=0)
-		{
-		iLastModified.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iAdvertisementUrl.Close();
-	if(len!=0)
-		{
-		iAdvertisementUrl.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iAdvertisementInUse.Close();
-	if(len!=0)
-		{
-		iAdvertisementInUse.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iImgUrl.Close();
-	if(len!=0)
-		{
-		iImgUrl.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iDescription.Close();
-	if(len!=0)
-		{
-		iDescription.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iShortDesc.Close();
-	if(len!=0)
-		{
-		iShortDesc.CreateL(aReadStream,len);
-		}
-
-	len=aReadStream.ReadInt32L();
-	iMusicStoreStatus.Close();
-	if(len!=0)
-		{
-		iMusicStoreStatus.CreateL(aReadStream,len);	
-		}
-	
-
-	len=aReadStream.ReadInt32L();
-	iLogoData.Close();
-	if(len!=0)
-		{
-		iLogoData.CreateL(aReadStream,len);
-		}
-
-	//internalizing the preset data
-	CIRChannelServerUrl *url = NULL;
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		url = CIRChannelServerUrl::NewLC();
-		url->InternalizeL(aReadStream);
-		iUrlArray->AppendL(url);
-	    CleanupStack::Pop(url);
-		}
-	
-	iPlayedTimes = aReadStream.ReadInt32L();
-	
-	iRenamed = aReadStream.ReadInt32L();
-	
-	IRLOG_DEBUG( "CIRPresetImpl::InternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
-// used to convert the isdspresets to plugnized presets.
-// Does a deep copy for all the member variables
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
- 	{
-	IRLOG_DEBUG( "CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl" );
- 	iPresetId = aIsdsPreset.GetId();
-	iChannelUrlCount = aIsdsPreset.GetUrlCount();
-	iType = aIsdsPreset.GetChannelType();  //0 for user defined 1 for isds type.
-
-    TRAP_IGNORE( SetNameL( aIsdsPreset.GetName() ) )
-    SetLangCode( aIsdsPreset.GetLangId() );
-
-	SetLogoData( aIsdsPreset.GetLogoData() );
-    SetLang( aIsdsPreset.GetLangName() );
-    SetCountryCode( aIsdsPreset.GetCountryId() );
-    SetCountryName( aIsdsPreset.GetCountryName() );
-    SetLastModifiedTime( aIsdsPreset.GetLastModifiedTime() );
-    SetAdvertisementUrl( aIsdsPreset.GetAdvertisementUrl() );
-    SetAdvertisementInUse( aIsdsPreset.GetAdvertisementInUse() );
-    SetImgUrl( aIsdsPreset.GetImgUrl() );
-    SetDescription( aIsdsPreset.GetDescription() );
-    SetShortDesc( aIsdsPreset.GetShortDescription() );
-    SetMusicStoreStatus(aIsdsPreset.GetMusicStoreStatus());
-    SetGenreInfo( aIsdsPreset.GetGenreId(), aIsdsPreset.GetGenreName() );
-
-
-    iUrlArray->ResetAndDestroy();
-
-	for(TInt cnt=0;cnt<aIsdsPreset.GetUrlCount();cnt++)
-		{
-		ASSERT( cnt >= 0 && cnt < aIsdsPreset.iUrlArray->Count() );
-		TRAPD(errUrl,SetUrlL(aIsdsPreset.iUrlArray->At(cnt)->GetServerName(),
-							 aIsdsPreset.iUrlArray->At(cnt)->GetServerUrl(),
-							 aIsdsPreset.iUrlArray->At(cnt)->GetBitRate()))
-		if(errUrl!=KErrNone)
-			{
-			return ;
-			}
-		}
-	IRLOG_DEBUG( "CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl - Exiting." );
- 	}
-/*
-// ---------------------------------------------------------------------------
-// void CIRPresetImpl::UserDefinedPresetToCIRPresetImpl
-// used to convert the userdefined preset to plugnized presets.
-// Does a deep copy for all the member variables
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::UserDefinedPresetToCIRPresetImpl(const TDesC& aName,
-	const TDesC& aURl,TInt aId,TInt aIndex)
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl" );
-	iPresetId=aId;
-	TRAP_IGNORE(SetNameL(aName))
-	SetChannelType(0);//type set to user defined
-	//done to match the API,new API should be exposed by DS to accept only Url
-	_LIT(KServerName,"NA");
-	//copy the url
-	TRAPD(errUrl,SetUrlL(KServerName,aURl,0))
-	if(errUrl!=KErrNone)
-		{
-	    IRLOG_ERROR2( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl - SetUrlL left with %d.", errUrl );
-		return ; // WHATTHEHECK
-		}
-	// manually added channels have only one channel url
-    SetUrlCount(1);
-	IRLOG_DEBUG( "CIRPresetImpl::UserDefinedPresetToCIRPresetImpl - Exiting." );
-	}
-*/
-
-// ---------------------------------------------------------------------------
-//CIRPresetImpl::CopyPresetData()
-// copy data to CIRIsdsPreset
-// ---------------------------------------------------------------------------
-//
-void CIRPresetImpl::CopyPresetData(CIRIsdsPreset& aIsdsPreset) const
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::CopyPresetData" );
-	aIsdsPreset.SetId( iPresetId );
-	aIsdsPreset.SetUrlCount( iChannelUrlCount );
-	aIsdsPreset.SetChannelType( iType );  //0 for user defined 1 for isds type.
-	//algo
-	//1.check if the CIRIsdsPreset,member contains any data
-	//2.if yes delete it and set it to null
-	//3.allocate memory and copy data
-	aIsdsPreset.SetGenreName( iGenereName );
-	aIsdsPreset.SetGenreId( iGenereId );
-	aIsdsPreset.SetLangCode( iLanguageCode );
-
-	aIsdsPreset.SetLogoData(iLogoData);
-	aIsdsPreset.SetLang( iLanguage );
-	aIsdsPreset.SetCountryCode( iCountryCode );
-	aIsdsPreset.SetCountryName( iCountry );
-	aIsdsPreset.SetName( Name() );
-	aIsdsPreset.SetLastModifiedTime( iLastModified );
-	aIsdsPreset.SetAdvertisementUrl( iAdvertisementUrl );
-	aIsdsPreset.SetAdvertisementInUse( iAdvertisementInUse );
-	aIsdsPreset.SetImgUrl( iImgUrl );
-	aIsdsPreset.SetDescription( iDescription );
-	aIsdsPreset.SetShortDesc( iShortDesc );
-	aIsdsPreset.SetMusicStoreStatus( iMusicStoreStatus );
-
-    aIsdsPreset.iUrlArray->ResetAndDestroy();
-
-	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
-		{
-		ASSERT( cnt >= 0 && cnt < iUrlArray->Count() );
-		TRAPD(errUrl,aIsdsPreset.SetUrlL(iUrlArray->At(cnt)->GetServerName(),
-										 iUrlArray->At(cnt)->GetServerUrl(),
-										 iUrlArray->At(cnt)->GetBitRate()))
-		if(errUrl!=KErrNone)
-			{
-			return ;
-			}
-		}
-	IRLOG_DEBUG( "CIRPresetImpl::CopyPresetData - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRPresetImpl::GetAvailableBitrates()
-// Function to get available bitrates
-// ---------------------------------------------------------------------------
-//
-RArray<TInt>& CIRPresetImpl::GetAvailableBitrates()
-	{
-	IRLOG_DEBUG( "CIRPresetImpl::GetAvailableBitrates" );
-	iBitrateArray.Reset();
-	//creates an array of bitrates(int)that are available for a particular preset
-	for(TInt loop=0;loop<iUrlArray->Count();loop++)
-		{
-		iBitrateArray.InsertInOrder(iUrlArray->At(loop)->GetBitRate());
-		}
-	IRLOG_DEBUG( "CIRPresetImpl::GetAvailableBitrates - Exiting." );
-	return iBitrateArray;
-	}
-
-/*
- * Returns the played times of the channel
- */
-TInt CIRPresetImpl::GetPlayedTimes() const
-{
-    return iPlayedTimes;
-}
-
-/*
- * Set the played times of the channel
- */
-void CIRPresetImpl::SetPlayedTimes(TInt aPlayedTimes)
-{
-    iPlayedTimes = aPlayedTimes;
-}
-
-TBool CIRPresetImpl::GetRenamed() const
-{
-    return iRenamed;
-}
-
-void CIRPresetImpl::SetRenamed()
-{
-    iRenamed = ETrue;
-}
--- a/internetradio2.0/presetpluginsrc/irpresetpluginproxy.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +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 <implementationproxy.h>
-
-#include "irpresetimpl.h"
-
-// The implementation proxy table that lists all interfaces and their implementations contained within this plugin.
-const TImplementationProxy KIRPresetPluginImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( 0x10009DC1, CIRPresetImpl:: NewL) 
-    };
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Entry point for ECOM plugins.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
-	TInt& aTableCount )
-    {
-    aTableCount = sizeof( KIRPresetPluginImplementationTable ) / 
-    	sizeof( TImplementationProxy );
-    return KIRPresetPluginImplementationTable;
-    }
-
-
--- a/internetradio2.0/resources/2000b4aa.rss	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2000 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:  Resource definitions for project irpresetplugin
-*
-*/
-
-
-#include <registryinfo.rh>
-
-// ---------------------------------------------------------------------------
-// r_ir_preset_plugin_registry_info
-// Registry info for the preset ECOM plugin.
-// ---------------------------------------------------------------------------
-//
-RESOURCE REGISTRY_INFO r_ir_preset_plugin_registry_info
-    {
-    dll_uid     = 0x2000B4AA;
-    interfaces  =
-        {
-        INTERFACE_INFO
-            {
-            interface_uid   = 0x10281CB6;
-            implementations =
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    //implementation_uid  = 0xA0001D79;
-                    implementation_uid  = 0x10009DC1;
-
-                    version_no          = 1;
-                    display_name        = "Internet Radio Preset Plugin";
-                    default_data        = "";
-                    opaque_data         = "";
-                    }
-                };
-            }
-        };        
-    }
--- a/internetradio2.0/rfsplugininc/irrfsplugin.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  RFS ECOM plugin for Internet Radio
-*
-*/
-
-
-#ifndef C_IRRFSPLUGIN_H
-#define C_IRRFSPLUGIN_H
-
-#include <rfsPlugin.h>
-
-/**
- *  Internet Radio RFS ECOM plugin implementation.
- *
- *  Handles deleting of Internet Radio files when RFS operation is invoked.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CIRRfsPlugin ) : public CRFSPlugin
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     *
-     * @since   S60 v3.2
-     * @param   aInitParams   Initialisation parameters.
-     * @return  The created object.
-     */
-    static CIRRfsPlugin* NewL( TAny* aInitParams );
-
-    /**
-     * Destructor.
-     *
-     * @since   S60 v3.2
-     */
-    ~CIRRfsPlugin();
-
-private:
-
-    /**
-     * Constructor.
-     *
-     * @since   S60 v3.2
-     * @param   aInitParams   Initialisation parameters.
-     */
-    CIRRfsPlugin( TAny* aInitParams );
-
-    /**
-     * Second-phase constructor.
-     *
-     * @since   S60 v3.2
-     */
-    void ConstructL();
-
-// from base class CRFSPlugin
-
-    void RestoreFactorySettingsL( const TRfsReason aType );
-    void GetScriptL( const TRfsReason aType, TDes& aPath );
-    void ExecuteCustomCommandL( const TRfsReason aType, TDesC& aCommand );
-
-    };
-
-#endif // C_CIRRFSPLUGIN_H
--- a/internetradio2.0/rfspluginsrc/irrfsplugin.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Internet Radio RFS ECOM plugin implementation
-*
-*/
-
-
-#include <apacmdln.h>
-#include <apgcli.h>
-
-#include "irrfsplugin.h"
-
-// Files that are deleted upon RFS.
-_LIT( KIRLastPlayedFile, "c:\\private\\2000b499\\lastPlayed.dat" );
-_LIT( KIRCacheDatabaseFile, "c:\\private\\2000b499\\cacheDb.db" );
-_LIT( KIRSdsResponseFile, "c:\\private\\2000b499\\iSdsResponse.xml" );
-_LIT( KIRSessionFile, "c:\\private\\2000b499\\Session" );
-_LIT( KIRRadioReportFile, "c:\\private\\2000b499\\RadioReport.xml" );
-_LIT( KIRLogUsageFile, "c:\\private\\2000b499\\LogUsage.gz" );
-_LIT( KIRSettingsFile, "c:\\private\\2000b499\\irsettings.ini" );
-_LIT( KIRBackedUpSettingsFile, "c:\\private\\2000b499\\irsettings_backed_up.ini" );
-_LIT( KIRSettingscreFile, "c:\\private\\10202be9\\persists\\2000B499.cre" );
-
-//for History Database Deletion
-_LIT(KSongHistoryDbFile,"songhistoryDb.db");
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRRfsPlugin* CIRRfsPlugin::NewL( TAny* aInitParams )
-    {
-    CIRRfsPlugin* self = new ( ELeave ) CIRRfsPlugin( aInitParams );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRRfsPlugin::CIRRfsPlugin( TAny* /*aInitParams*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRRfsPlugin::ConstructL()
-    {
-	return;
-	}
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CIRRfsPlugin::~CIRRfsPlugin()
-    {
-    // Base class handles the ECOM cleanup.
-    }
-
-// ---------------------------------------------------------------------------
-// From base class CRFSPlugin
-// ---------------------------------------------------------------------------
-//
-void CIRRfsPlugin::RestoreFactorySettingsL( const TRfsReason aType )
-    {
-    if ( aType == ENormalRfs )
-        {
-        RFs fsSession;
-        User::LeaveIfError( fsSession.Connect() );
-
-        fsSession.Delete( KIRLastPlayedFile );
-        fsSession.Delete( KIRCacheDatabaseFile );
-        fsSession.Delete( KIRSdsResponseFile );
-        fsSession.Delete( KIRSessionFile );
-        fsSession.Delete( KIRRadioReportFile );
-        fsSession.Delete( KIRLogUsageFile );
-
-        fsSession.Delete( KIRSettingsFile );
-        fsSession.Delete( KIRBackedUpSettingsFile );
-        fsSession.Delete( KIRSettingscreFile );
-    	fsSession.Delete(KSongHistoryDbFile);
-        
-        fsSession.Close();
-        }
-    else
-        {
-        // RFS type not supported.
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From base class CRFSPlugin
-// ---------------------------------------------------------------------------
-//
-void CIRRfsPlugin::GetScriptL( const TRfsReason /*aType*/, TDes& aPath )
-    {
-    aPath.Zero();
-	return;
-	}
-
-// ---------------------------------------------------------------------------
-// From base class CRFSPlugin
-// ---------------------------------------------------------------------------
-//
-void CIRRfsPlugin::ExecuteCustomCommandL( const TRfsReason /*aType*/, TDesC& /*aCommand*/ )
-    {
-	return;
-	}
-
-// ======== GLOBAL FUNCTIONS ========
-
--- a/internetradio2.0/rfspluginsrc/irrfspluginproxy.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the RFS ECOM plugin proxy
-*
-*/
-
-
-#include <implementationproxy.h>
-
-#include "irrfsplugin.h"
-
-// The implementation proxy table that lists all interfaces and their implementations contained within this plugin.
-const TImplementationProxy KIRRfsPluginImplementationTable[] =
-    {
-    /*lint -save -e611 (Warning -- Suspicious cast)*/
-    IMPLEMENTATION_PROXY_ENTRY( 0x2000B4DD, CIRRfsPlugin::NewL )
-    /*lint -restore*/
-    };
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ======== GLOBAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Entry point for ECOM plugins.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-    {
-    aTableCount = sizeof( KIRRfsPluginImplementationTable ) / sizeof( TImplementationProxy );
-    return KIRRfsPluginImplementationTable;
-    }
-
--- a/internetradio2.0/rom/internetradio.iby	Tue Jul 06 14:07:20 2010 +0300
+++ b/internetradio2.0/rom/internetradio.iby	Wed Aug 18 09:40:26 2010 +0300
@@ -20,13 +20,11 @@
 #define __INTERNETRADIO_IBY__
 
 ECOM_PLUGIN(irfilerecognizer.dll, 2000B4A9.rsc)
-ECOM_PLUGIN(presetplugin.dll, 2000B4AA.rsc)
+ECOM_PLUGIN(irpresetplugin.dll, 2000B4AA.rsc)
 ECOM_PLUGIN(irrfsplugin.dll, 2000b4ac.rsc)
 
 data=ZPRIVATE\2000B499\backup_registration.xml                  private\2000B499\backup_registration.xml
 
-data=DATAZ_\RESOURCE_FILES_DIR\irsettings.rsc	                RESOURCE_FILES_DIR\irsettings.rsc
-
 file=ABI_DIR\BUILD_DIR\irdatastructures.dll                      SHARED_LIB_DIR\irdatastructures.dll
 file=ABI_DIR\BUILD_DIR\irdataprovider.dll			 SHARED_LIB_DIR\irdataprovider.dll
 file=ABI_DIR\BUILD_DIR\irxmlparser.dll				 SHARED_LIB_DIR\irxmlparser.dll
@@ -37,7 +35,7 @@
 file=ABI_DIR\BUILD_DIR\irsettings.dll                          SHARED_LIB_DIR\irsettings.dll
 file=ABI_DIR\BUILD_DIR\irsessionlog.dll                          SHARED_LIB_DIR\irsessionlog.dll
 
-data=DATAZ_\RESOURCE_FILES_DIR\plugins\presetplugin.rsc         	RESOURCE_FILES_DIR\plugins\presetplugin.rsc
+data=DATAZ_\RESOURCE_FILES_DIR\plugins\irpresetplugin.rsc         	RESOURCE_FILES_DIR\plugins\irpresetplugin.rsc
 data=DATAZ_\RESOURCE_FILES_DIR\plugins\irrfsplugin.rsc  			RESOURCE_FILES_DIR\plugins\irrfsplugin.rsc
 data=DATAZ_\RESOURCE_FILES_DIR\plugins\irfilerecognizer.rsc			RESOURCE_FILES_DIR\plugins\irfilerecognizer.RSC
 
--- a/internetradio2.0/rom/internetradio_backup.iby	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +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:  
-*
-*/
-
-
-#ifndef __INTERNETRADIO_IBY__
-#define __INTERNETRADIO_IBY__
-
-S60_APP_EXE(InternetRadio)
-
-S60_APP_AIF_ICONS(InternetRadio)
-data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\InternetRadio_reg.rsc        Private\10003a3f\import\apps\InternetRadio_reg.rsc
-
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,InternetRadio)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,InternetRadioEdwinSkin)
-
-ECOM_PLUGIN(IRMediaEngine.dll, 2000B4A8.rsc)
-ECOM_PLUGIN(IRFileRecognizer.dll, 2000B4A9.rsc)
-ECOM_PLUGIN(PresetPlugin.dll, 2000B4AA.rsc)
-//ECOM_PLUGIN(IRActiveIdle.dll, 2000B4AB.rsc)
-ECOM_PLUGIN(irrfsplugin.dll, 2000b4ac.rsc)
-ECOM_PLUGIN(irgeneralsettings200.dll, 2001A930.rsc)
-
-//data=ZPRIVATE\10003A3F\import\apps\InternetRadio_reg.rsc        private\10003A3F\import\apps\InternetRadio_reg.rsc        // this file is very important for displaying IR App in AppShell.
-data=DATAZ_\system\install\InternetRadioStub.sis                    system\install\InternetRadioStub.sis                // used for eclipsing ROM files and upgrading the same.
-data=ZPRIVATE\2000B499\backup_registration.xml                  private\2000B499\backup_registration.xml
-data=ZPRIVATE\10207254\themes\271012080\270513751\271063147\1.0\sources\irclassicidle.mif PRIVATE\10207254\themes\271012080\270513751\271063147\1.0\sources\irclassicidle.mif
-
-data=DATAZ_\RESOURCE_FILES_DIR\irsettings.rsc	                RESOURCE_FILES_DIR\irsettings.rsc
-//data=DATAZ_\RESOURCE_FILES_DIR\iractiveidle.rsc	                RESOURCE_FILES_DIR\iractiveidle.rsc
-
-data=ZPRIVATE\2000b499\terms_01.html                            private\2000b499\terms_01.html
-data=ZPRIVATE\2000b499\terms_02.html                            private\2000b499\terms_02.html
-data=ZPRIVATE\2000b499\terms_03.html                            private\2000b499\terms_03.html
-data=ZPRIVATE\2000b499\terms_04.html                            private\2000b499\terms_04.html
-data=ZPRIVATE\2000b499\terms_05.html                            private\2000b499\terms_05.html
-data=ZPRIVATE\2000b499\terms_06.html                            private\2000b499\terms_06.html
-data=ZPRIVATE\2000b499\terms_07.html                            private\2000b499\terms_07.html
-data=ZPRIVATE\2000b499\terms_08.html                            private\2000b499\terms_08.html
-data=ZPRIVATE\2000b499\terms_09.html                            private\2000b499\terms_09.html
-data=ZPRIVATE\2000b499\terms_10.html                            private\2000b499\terms_10.html
-data=ZPRIVATE\2000b499\terms_13.html                            private\2000b499\terms_13.html
-data=ZPRIVATE\2000b499\terms_14.html                            private\2000b499\terms_14.html
-data=ZPRIVATE\2000b499\terms_15.html                            private\2000b499\terms_15.html
-data=ZPRIVATE\2000b499\terms_16.html                            private\2000b499\terms_16.html
-data=ZPRIVATE\2000b499\terms_17.html                            private\2000b499\terms_17.html
-data=ZPRIVATE\2000b499\terms_18.html                            private\2000b499\terms_18.html
-data=ZPRIVATE\2000b499\terms_25.html                            private\2000b499\terms_25.html
-data=ZPRIVATE\2000b499\terms_26.html                            private\2000b499\terms_26.html
-data=ZPRIVATE\2000b499\terms_27.html                            private\2000b499\terms_27.html
-data=ZPRIVATE\2000b499\terms_28.html                            private\2000b499\terms_28.html
-data=ZPRIVATE\2000b499\terms_29.html                            private\2000b499\terms_29.html
-data=ZPRIVATE\2000b499\terms_30.html                            private\2000b499\terms_30.html
-data=ZPRIVATE\2000b499\terms_31.html                            private\2000b499\terms_31.html
-data=ZPRIVATE\2000b499\terms_32.html                            private\2000b499\terms_32.html
-data=ZPRIVATE\2000b499\terms_33.html                            private\2000b499\terms_33.html
-data=ZPRIVATE\2000b499\terms_37.html                            private\2000b499\terms_37.html
-data=ZPRIVATE\2000b499\terms_39.html                            private\2000b499\terms_39.html
-data=ZPRIVATE\2000b499\terms_42.html                            private\2000b499\terms_42.html
-data=ZPRIVATE\2000b499\terms_44.html                            private\2000b499\terms_44.html
-data=ZPRIVATE\2000b499\terms_45.html                            private\2000b499\terms_45.html
-data=ZPRIVATE\2000b499\terms_49.html                            private\2000b499\terms_49.html
-data=ZPRIVATE\2000b499\terms_50.html                            private\2000b499\terms_50.html
-data=ZPRIVATE\2000b499\terms_51.html                            private\2000b499\terms_51.html
-data=ZPRIVATE\2000b499\terms_54.html                            private\2000b499\terms_54.html
-data=ZPRIVATE\2000b499\terms_57.html                            private\2000b499\terms_57.html
-data=ZPRIVATE\2000b499\terms_59.html                            private\2000b499\terms_59.html
-data=ZPRIVATE\2000b499\terms_67.html                            private\2000b499\terms_67.html
-data=ZPRIVATE\2000b499\terms_68.html                            private\2000b499\terms_68.html
-data=ZPRIVATE\2000b499\terms_70.html                            private\2000b499\terms_70.html
-data=ZPRIVATE\2000b499\terms_76.html                            private\2000b499\terms_76.html
-data=ZPRIVATE\2000b499\terms_78.html                            private\2000b499\terms_78.html
-data=ZPRIVATE\2000b499\terms_79.html                            private\2000b499\terms_79.html
-data=ZPRIVATE\2000b499\terms_83.html                            private\2000b499\terms_83.html
-data=ZPRIVATE\2000b499\terms_93.html                            private\2000b499\terms_93.html
-data=ZPRIVATE\2000b499\terms_94.html                            private\2000b499\terms_94.html
-data=ZPRIVATE\2000b499\terms_96.html                            private\2000b499\terms_96.html
-data=ZPRIVATE\2000b499\terms_401.html                           private\2000b499\terms_401.html
-data=ZPRIVATE\2000b499\terms_402.html                           private\2000b499\terms_402.html
-
-file=ABI_DIR\BUILD_DIR\IRDataStructures.dll                      SHARED_LIB_DIR\IRDataStructures.dll
-file=ABI_DIR\BUILD_DIR\IRCommandChannel.dll                      SHARED_LIB_DIR\IRCommandChannel.dll
-file=ABI_DIR\BUILD_DIR\IRDataProvider.dll			 SHARED_LIB_DIR\IRDataProvider.dll
-file=ABI_DIR\BUILD_DIR\IRXMLParser.dll				 SHARED_LIB_DIR\IRXMLParser.dll
-file=ABI_DIR\BUILD_DIR\isdsclientinterface.dll                   SHARED_LIB_DIR\isdsclientinterface.dll
-file=ABI_DIR\BUILD_DIR\IRStreamSource.dll                        SHARED_LIB_DIR\IRStreamSource.dll
-file=ABI_DIR\BUILD_DIR\IRFavoritesDb.dll                         SHARED_LIB_DIR\IRFavoritesDb.dll
-file=ABI_DIR\BUILD_DIR\IRCacheMgmt.dll                           SHARED_LIB_DIR\IRCacheMgmt.dll
-file=ABI_DIR\BUILD_DIR\IRNetworkController.dll                   SHARED_LIB_DIR\IRNetworkController.dll
-file=ABI_DIR\BUILD_DIR\irsettings.dll                          SHARED_LIB_DIR\irsettings.dll
-file=ABI_DIR\BUILD_DIR\IRSessionLog.dll                          SHARED_LIB_DIR\IRSessionLog.dll
-//file=ABI_DIR\BUILD_DIR\IRActiveIdleEngine.dll                    SHARED_LIB_DIR\IRActiveIdleEngine.dll 
-file=ABI_DIR\BUILD_DIR\IRSongHistory.dll                    SHARED_LIB_DIR\IRSongHistory.dll 
-file=ABI_DIR\BUILD_DIR\IRSettingsView.dll                    SHARED_LIB_DIR\IRSettingsView.dll 
-
-#endif  // __INTERNETRADIO_IBY__
--- a/internetradio2.0/rom/internetradioresources_backup.iby	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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 __INTERNETRADIORESOURCES_IBY__
-#define __INTERNETRADIORESOURCES_IBY__
-
-S60_APP_RESOURCE(InternetRadio)
-data=DATAZ_\RESOURCE_FILES_DIR\irgeneralsettings.rsc	        RESOURCE_FILES_DIR\irgeneralsettings.rsc
-
-#endif  // __INTERNETRADIORESOURCES_IBY__
--- a/internetradio2.0/sessionloginc/irdbstatusobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2008-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:  ?Description
-*
-*/
-
-
-#ifndef MIRDBSTATUSOBSERVER_H
-#define MIRDBSTATUSOBSERVER_H
-
-class MIRLogDbStatusObserver
-	{
-public:
-	virtual void LogDbNeedFlush() = 0;
-	};
-
-
-#endif //MIRDBSTATUSOBSERVER_H
--- a/internetradio2.0/sessionloginc/irnmslogdb.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +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 IRNMSLOGDB_H
-#define IRNMSLOGDB_H
-
-#include <d32dbms.h>
-
-class CIRNmsLogger;
-
-NONSHARABLE_CLASS(CIRNmsLogDb) : public CBase
-	{												
-										//member functions
-public:
-
-	/**
-	* Function : NewL()
-	* Two phased construction
-	* @return instance of CIRNmsLogDb
-	*/
-	static CIRNmsLogDb* NewL();
-	
-	/**
-	* Function : NewLC()
-	* Two phased construction
-	* @return instance of CIRNmsLogDb
-	*/	
-	static CIRNmsLogDb* NewLC();
-	
-	/**
-	* Function : ~CIRNmsLogDb()
-	* default destructor
-	*/	
-	~CIRNmsLogDb();
-
-	/**
-	* Function : CreateDbConditional()
-	* Creates both the dbms files conditionally(only if not yet created)
-	* @param session database file
-	* @return errcode
-	*/	
-	TInt CreateDbConditional(TFileName &aNmsLog);
-
-	/**
-	* Function : AddNmsLogStartL()
-	* adds the NmsLog log entry into data base
-	* @param NmsLog data instance
-	*/
-	void AddNmsLogStartL(CIRNmsLogger& aNmsLog);
-	
-	/**
-	* CIRNmsLogDb::GetAllNmsLogL()
-	* gets all the preset into an array 
-	*/
-	void GetAllNmsLogL(CArrayPtrFlat<CIRNmsLogger>& aNmsLogDataList);
-	
-	/**
-	* Function : DeleteAllNmsLogL
-	* delete all the NmsLog from NmsLog log entry
-	*/
-	void DeleteAllNmsLogL();
-
-private: 
-
-	/**
-	* Function : ConstructL()
-	* two phase construction
-	*/   
-    void ConstructL();
-    
-    /**
-	* Function : CloseDb()
-	* Closes the database 
-	*/
-	void CloseDb();
-	
-	/**
-	* Function : CreateNmsLogTableL
-	* creates NmsLoglogtable with two column one is NmsLogid and rest of NmsLog
-	* log data
-	* ---------------------------------------------------------------------------
-	* NmsLogTable
-	*---------------------------
-	*| KID   |	 KNmsLogCol |
-	*---------------------------
-	*|TInt32 | EDbColLongText8 |
-	*---------------------------
-	*/	
-    void CreateNmsLogTableL();
-    
-	/**
-	* Function : CreateNmsLogIndexL
-	* sets NmsLogid as the primary key
-	*/  
-    void CreateNmsLogIndexL();
-    
-	/**
-	* Function : OpenDbL()
-	* opening the data base 
-	*/
-	void OpenDbL();
-	
-	/**
-	* Function : CreateDbL()
-	* creates both the dbms files 
-	* database filename
-	*/	
-	void CreateDbL(TFileName& aNmsLog);
-
-										//data members
-										
-private:
-
-	/**
-	* database file
-	*/
-	TFileName iDbFile;
-	
-	/**
-	* file session
-	*/
-    RFs iFsSession;
-    
-	/**
-	* data base handler
-	*/
-    RDbNamedDatabase iNmsLogDb;
-    
-    };
-
-#endif  //IRNMSLOGDB_H
-
-
--- a/internetradio2.0/sessionloginc/irnmslogger.h	Tue Jul 06 14:07:20 2010 +0300
+++ /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
-*
-*/
-
-
-#ifndef IRNMSLOGGER_H
-#define IRNMSLOGGER_H
-
-#include <e32base.h>
-
-#include "irsessionparams.h"
-
-class RReadStream;
-class RWriteStream;
-
-/**
-* This class can hold data for Nms log 
-*/
-
-NONSHARABLE_CLASS(CIRNmsLogger) : public CBase
-	{
-public:
-	/**
-	* Function: NewL
-	* Two phase constructor returns the instance of CIRNmsLogger
-	* @returns instance of CIRNmsLogger
-	*/
-	static CIRNmsLogger* NewL();
-
-	/**
-	* Function: NewLC
-	* Two phase constructor creates the instance of CIRNmsLogger
-	* @returns instance of CIRNmsLogger
-	*/
-	static CIRNmsLogger* NewLC(); 
-
-	/**
-	* Function: ~CIRNmsLogger
-	* default destructor
-	*/	
-	~CIRNmsLogger();
-	
-private:
-	/**
-	* Function: ConstructL
-	* Two phase constructor
-	*/	
-	void ConstructL();
-	
-	/**
-	* Function: CIRNmsLogger
-	* default constructor
-	*/	
-	CIRNmsLogger();	
-
-public:
-	
-
-	/**
-	* Function: ResetResource
-	* reset data from channel server
-	*/
-	void ResetResource();
-
-
-	/**
-	* Function: UpdateChannelID
-	* updates the channel id
-	* @param channel id
-	*/	
-	void UpdateChannelID(TInt aChanneldID);
-	
-	/**
-	* Function: UpdateCurrentNetwork
-	* updates the current network
-	* @param current network
-	*/
-	void UpdateCurrentNetwork(TInt aCurrentNetwork);
-	
-	/**
-	* Function: UpdateHomeOperator
-	* updates the home network
-	* @param home network
-	*/
-	void UpdateHomeOperator(TInt aHomeOperator);
-
-	/**
-	* Function : UpdateNmsStartGMTTime
-	* function updates Nms start time with current GMT time
-	*/
-	void UpdateNmsStartGMTTime();
-	
-	/**
-	* Function: UpdateNmsType
-	* updates the nms type
-	* @param nms type
-	*/
-	void UpdateNmsType(const TDesC& aNmsType);
-
-	/**	
-	* Function: ChannelID
-	* return the channel id
-	* @return channel id
-	*/	
-	TInt ChannelID() const;
-	
-	/**
-	* Function: CurrentNetwork
-	* returns the Current Network
-	* @return Current Network
-	*/	
-	TInt CurrentNetwork() const;
-	
-	/**
-	* Function: HomeOperator
-	* returns the home network
-	* @return home network
-	*/
-	TInt HomeOperator() const;
-	
-	
-	/**
-	* Function: StartTime
-	* returns the start time
-	* @return start time
-	*/	
-	TDes& StartTime();
-	
-	/**
-	* Function: NmsType
-	* returns the nms type
-	* @return nms type
-	*/	
-	TDesC& NmsType();
-
-	/**
-	* Function: NmsLogId
-	* returns the nmslog id
-	* @return n nmslog id
-	*/	
-	
-	TInt NmsLogId() const;
-	
-	
-	/**
-	* Function: FileName
-	* returns file name
-	* @return file name
-	*/
-	TFileName FileName();
-	
-	/** 
-	* Function: DateTime
-	* returns Nms start time
-	* @return Nms start time
-	*/
-	TTime DateTime();
-	
-	/**
-	* Function: GetBackedUp
-	* Back up the given Nms, copies the data of the Nms
-	* @param Nms logs instance which to be copied
-	*/
-	void GetBackedUp( CIRNmsLogger& aNms );
-	
-	/**
-	* Function: ExternalizeL
-	* externialize the stream to the given stream
-	* @param write stream
-	*/
-	void ExternalizeL(RWriteStream& aWriteStream);
-	
-	/**
-	* Function: InternalizeL
-	* gets the data from the stream
-	* @param read stream
-	*/
-	void InternalizeL(RReadStream& aReadStream);
-	
-
-private:  
-	/**									
-	* file name 
-	*/									
-	TFileName iFilePath;
-	
-	/**
-	* Nms start time
-	*/
-	TTime iStartNmsTime;
-	
-	/**
-	* time current Nms become active started
-	*/
-	TTime iActiveNmsTime;
-	
-	
-	/**
-	* start time is stored
-	*/
-	TBuf<64> iStartTime;
-	
-
-	/**
-	* NmsLog id
-	*/
-	TInt iNmsLogId;
-	
-	/**
-	* channel id
-	*/
-	TInt iChannelId;
-	
-	/**
-	* home operator mcc+mnc
-	*/
-	TInt iHomeOperator;
-	
-	/**
-	* current operator mcc+mnc
-	*/
-	TInt iNmsCurrentNetwork;
-	
-	/**
-	* nms type information	
-	*/
-	TBuf<16> iNmsType;
-	};
-
-
-#endif //IRNMSLOGGER_H
-
-
-
--- a/internetradio2.0/sessionloginc/irphoneinfo.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-#ifndef IRPHONEINFO_H
-#define IRPHONEINFO_H
-
-#include <e32base.h>
-#include <etel3rdparty.h>
-
-class CTelephony;
-class MIRPhoneInfoObserver;
-
-NONSHARABLE_CLASS(CPhoneInfo) : public CActive
-    {
-public:
-    static CPhoneInfo* NewL(MIRPhoneInfoObserver* aObserver);
-    ~CPhoneInfo();
-
-    void StartUpdating();
-
-private:
-    CPhoneInfo(MIRPhoneInfoObserver* aObserver);
-    void ConstructL();
-
-    void RunL();
-    void DoCancel();
-
-private:
-    CTelephony::TPhoneIdV1 iPhoneIdV1;
-    CTelephony::TPhoneIdV1Pckg iPhoneIdV1Pckg;
-
-    CTelephony* iTelephony;
-    MIRPhoneInfoObserver* iObserver;
-    };
-
-#endif // IRPHONEINFO_H
--- a/internetradio2.0/sessionloginc/irreportsettings.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +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 IRREPORTSETTINGS_H
-#define IRREPORTSETTINGS_H
-
-#include <e32def.h>
-
-_LIT(KSession,"Session");
-
-_LIT(KNmsLog,"NmsLog");
-
-_LIT(KLogFileName,"RadioReport.xml");
-
-_LIT(KGZipLogFileName,"LogUsage.gz");
-
-_LIT(KField,"Field");
-
-_LIT(KXmlHeader,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-
-
-//RadioReport
-
-_LIT(KRPSTARTTAG,"<radioReport ver=\"Field\"  IRID=\"Field\" id=\"Field\">");
-
-_LIT(KRPENDTAG,"</radioReport>");
-
-//Session log
-
-_LIT(KSESSIONSTARTTAG,"<session starttime=\"Field\" duration=\"Field\" terminatedBy=\"Field\" connectedFrom=\"Field\" id=\"Field\"><channelid>Field</channelid>");
-
-_LIT(KSERVERRESULTTAG,"<serverResult url=\"Field\">Field</serverResult>");
-
-_LIT(KCONNECTIONTAG,"<connection type=\"Field\"><operator currentNetwork=\"Field\" homeOperator=\"Field\"/></connection>");
-
-_LIT(KSESSIONENDTAG,"</session>");
-
-//Browse log
-
-_LIT(KBROWSESTARTTAG,"<browseLog>");
-
-_LIT(KBROWSEENDTAG,"</browseLog>");
-
-_LIT(KBROWSETAG,"<browse url=\"Field\" timeStamp=\"Field\" currentNetwork=\"Field\"/>");
-
-
-/**
- * for nmsLogs (Nokia Music Store Logs Information)
- * 
- */
-_LIT(KNMSLOGSTARTTAG, "<nmsLog>");
-_LIT(KNMSLOGENDTAG, "</nmsLog>");
-_LIT(KNMSEVENTTAG, "<nmsEvent timeStamp=\"Field\" channelId=\"Field\" type=\"Field\"><operator currentNetwork=\"Field\" homeOperator=\"Field\"/></nmsEvent>" );
-
-/**
- * for song recognition Logs (Shazam Logs Information)
- * 
- */
-_LIT(KSONGRECOGLOGSTARTTAG, "<songRecogLog>");
-_LIT(KSONGRECOGLOGENDTAG, "</songRecogLog>");
-_LIT(KSONGRECOGEVENTTAG, "<songRecogEvent timeStamp=\"Field\"></songRecogEvent>");
-
-
-//Advertisement log
-
-//Terminatedby
-_LIT(KUSER,"user");
-
-_LIT(KNOCONNECTIONTOSERVER,"noConnectionToServer");
-
-_LIT(KNOCONNECTIONTONETWORK,"noConnectionToNetwork");
-
-	//Connected from
-
-_LIT(KISDS,"isds");
-
-_LIT(KPRESETADHOC,"preset-adhoc");
-
-_LIT(KPRESETISDS,"preset-isds");
-
-_LIT(KHISTORYADHOC,"history-adhoc");
-
-_LIT(KHISTORYISDS,"history-isds");
-
-_LIT(KADHOCMANUAL,"adhoc-manual");
-
-_LIT(KADHOCEXTERNAL,"adhoc-external");
-
-//Connection type
-
-//ServerResult
-_LIT(KConnected,"Connected");
-
-_LIT(KFull,"ServerFull");
-
-_LIT(KConnTimeOut,"ConnectionTimeOut");
-
-_LIT(KConnectionFailed,"ConnectionFailed");
-
-#endif //IRREPORTSETTINGS_H
-
-
-
--- a/internetradio2.0/sessionloginc/irsessiondb.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +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 IRSESSIONDB_H
-#define IRSESSIONDB_H
-
-#include <d32dbms.h>
-
-class CIRSessionLogger;
-
-NONSHARABLE_CLASS(CIRSessionDb) : public CBase
-	{												
-										//member functions
-public:
-
-	/**
-	* Function : NewL()
-	* Two phased construction
-	* @return instance of CIRSessionDb
-	*/
-	static CIRSessionDb* NewL();
-	
-	/**
-	* Function : NewLC()
-	* Two phased construction
-	* @return instance of CIRSessionDb
-	*/	
-	static CIRSessionDb* NewLC();
-	
-	/**
-	* Function : ~CIRSessionDb()
-	* default destructor
-	*/	
-	~CIRSessionDb();
-
-	/**
-	* Function : CreateDbConditional()
-	* Creates both the dbms files conditionally(only if not yet created)
-	* @param session database file
-	* @return errcode
-	*/	
-	TInt CreateDbConditional(TFileName &aSession);
-
-	/**
-	* Function : AddSessionStartL()
-	* adds the session log entry into data base
-	* @param session data instance
-	*/
-	void AddSessionStartL(CIRSessionLogger& aSession);
-	
-	/**
-	* CIRSessionDb::GetAllPresetL()
-	* gets all the preset into an array 
-	*/
-	void GetAllSessionL(CArrayPtrFlat<CIRSessionLogger>& aSessionDataList);
-	
-	/**
-	* Function : DeleteAllSessionL
-	* delete all the session from session log entry
-	*/
-	void DeleteAllSessionL();
-
-private: 
-
-	/**
-	* Function : ConstructL()
-	* two phase construction
-	*/   
-    void ConstructL();
-    
-    /**
-	* Function : CloseDb()
-	* Closes the database 
-	*/
-	void CloseDb();
-	
-	/**
-	* Function : CreateSessionTableL
-	* creates sessionlogtable with two column one is sessionid and rest of session
-	* log data
-	* ---------------------------------------------------------------------------
-	* SessionTable
-	*---------------------------
-	*| KID   |	 KSessionLogCol |
-	*---------------------------
-	*|TInt32 | EDbColLongText8 |
-	*---------------------------
-	*/	
-    void CreateSessionTableL();
-    
-	/**
-	* Function : CreateSessionIndexL
-	* sets sessionid as the primary key
-	*/  
-    void CreateSessionIndexL();
-    
-	/**
-	* Function : OpenDbL()
-	* opening the data base 
-	*/
-	void OpenDbL();
-	
-	/**
-	* Function : CreateDbL()
-	* creates both the dbms files 
-	* database filename
-	*/	
-	void CreateDbL(TFileName& aSession);
-
-										//data members
-										
-private:
-
-	/**
-	* database file
-	*/
-	TFileName iDbFile;
-	
-	/**
-	* file session
-	*/
-    RFs iFsSession;
-    
-	/**
-	* data base handler
-	*/
-    RDbNamedDatabase iSessionDb;
-    
-    };
-
-#endif  //IRSESSIONDB_H
-
-
-
-
-
-
-
-
--- a/internetradio2.0/sessionloginc/irsessionlogger.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,569 +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 IRSESSIONLOGGER_H
-#define IRSESSIONLOGGER_H
-
-#include <f32file.h>
-
-#include "irsessionparams.h"
-#include "mirphoneinfoobserver.h"
-
-class CIRSessionDb;
-class CIRSessionLogger;
-class CIRSettings;
-class CIRNmsLogDb;
-class CIRNmsLogger;
-class CPhoneInfo;
-class MIRLogDbStatusObserver;
-
-/**
- * This class is used to provide usage log, various function are to log session
- * information as well as others, like browse log information. Session logs can be 
- * stored in internel data base for last 5 session, it is deleted only if the 
- * response is given. If more than 5 session is happening at any point of time
- * first one based on session id is removed.
- * When you end a session a gzip file is generated in private path
- * This zip file has (xml file) session log in xml format
- * This is single ton implementation use DeleteInstance to delete its 
- * instance
- *
- * @lib irsessionlog.lib
- * @since S_60 3.0
- *
- */
-
-//============================ class declaration ========================
-
-
-NONSHARABLE_CLASS(CIRReportGenerator) : public CObject,
-                                        public MIRPhoneInfoObserver
-	{
-//member function
-public:
-
-	/**
-	* Function: NewL
-	* Two phase constructor returns the instance of CIRReportGenerator
-	* this is a single ton implementation
-	* @note Deleting this object directly is not allowed. Please use Close().
-	* @note CleanupClosePushL(generator) must be used if the object is to be pushed onto cleanup stack.
-	* @returns instance of CIRReportGenerator
-	*/	
-	IMPORT_C static CIRReportGenerator* OpenL();
-	
-private:	
-	/**
-	* Function: ~CIRReportGenerator
-	* default destructor
-	*/	
-	~CIRReportGenerator();
-	
-	/**
-	* Function: ConstructL
-	* Two phase constructor
-	*/	
-	void ConstructL();
-	
-	/**
-	* Function: CIRReportGenerator
-	* default constructor
-	*/	
-	CIRReportGenerator();
-
-public:
-
-	/**
-	* Function: LogServerResult
-	* logs server connection result
-	* @param URL to which connection is attempted
-	* @param response from server
-	*/		
-	IMPORT_C void LogServerResult(const TDesC& aUrl,TResponse aResult);	
-	
-    /**
-    * Function: LogSongRecog
-    * logs song recog
-    */  
-	IMPORT_C void LogSongRecog();
-    
-	/**
-	* Function: UpdateCurrentBrowseNetwork
-	* logs network during browsing
-	* @param mcc+ mnc code of current network
-	*/	
-	IMPORT_C void UpdateCurrentBrowseNetwork(TInt aNetwork);
-		
-	/**
-	* Function: LogBrowse
-	* logs browse url and status information
-	* @param browse url
-	* @param status information
-	*/	
-	IMPORT_C void LogBrowse(const TDesC8& aUrl,TInt aStatus);
-			
-	/**
-	* Function: SessionStartedL
-	* starts a new session
-	*/	
-	IMPORT_C void SessionStartedL();
-	/**
-	* Function: NmsLogStartedL
-	* starts a new nmslog
-	*/	
-	IMPORT_C void NmsLogStartedL();
-	/**
-	* Function: SessionEnd
-	* marks the a session
-	*/		
-	IMPORT_C void SessionEndL( TBool aForcedTermination );
-	
-	/**
-	* Function: MarkSessionStart
-	* marks the a start of a session
-	*/	
-	IMPORT_C void MarkSessionStart();
-	
-	/**
-	* Function: HandleStopEvents
-	* function handle session state change events
-	* @param ETrue if session is progressing and EFalse if not progressing
-	*/
-	IMPORT_C void HandleStopEvents(TBool aIsSessionProgressing );
-	
-	/**
-	* Function: ReStorePreviousSession
-	* restore the previous session
-	* @return ETrue if restoring is possible else returns EFalse
-	*/
-	IMPORT_C TBool ReStorePreviousSession();
-
-	
-	/**
-	* Function: UpdateTerminatedBy
-	* updates the termination status
-	* @param terminated by information
-	*/	
-	IMPORT_C void UpdateTerminatedBy(TTerminationStatus aTerminatedBy);
-	
-	/**
-	* Function: UpdateConnectedFrom
-	* connected information is stored
-	* @param connected from information
-	*/		
-	IMPORT_C void UpdateConnectedFrom(TConnectedFrom aConnectedFrom);
-	
-	/**
-	* Function: BrowseUrl
-	* logs browse url and result
-	* @param URL to which connection is attempted
-	* @param response from server
-	*/	
-	IMPORT_C void BrowseUrl(const TDesC& aBrowseUrl,TInt aStatus);
-	
-	/**
-	* Function: UpdateChannelID
-	* updates the channel id
-	* @param channel id
-	*/	
-	IMPORT_C void UpdateChannelID(TInt aChanneldID);
-	
-	/**
-	* Function: UpdateCurrentNetwork
-	* updates the current network
-	* @param current network
-	*/	
-	IMPORT_C void UpdateCurrentNetwork(TInt aCurrentNetwork);
-	
-	/**
-	* Function: UpdateHomeOperator
-	* updates the home network
-	* @param home network
-	*/	
-	IMPORT_C void UpdateHomeOperator(TInt aHomeOperator);
-	
-	/**
-	* Function: UpdateConnectionType
-	* updates the connection type
-	* @param connection type
-	*/	
-	IMPORT_C void UpdateConnectionType(const TDesC& aConnectionType);	
-	
-	/**
-	* Function : ReponseFromISDSObtained
-	* This function is called when session log is successfully sent
-	* removes all session log entries from sessiondb
-	*/	
-	IMPORT_C void ReponseFromISDSObtained();
-	
-	
-	/**
-	 * The following methods are for Nms Event Usage Logging 
-	 */
-	
-	
-	/**
-	 * Function: UpdateNmsCurrentNetwork
-	 * logs network during Music Store launching
-	 * @param mcc+ mnc code of current network
-	 */	
-	IMPORT_C void UpdateNmsCurrentNetwork(TInt aNetwork);
-	
-	/**
-	 * Function: UpdateNmsHomeOperator
-	 * logs network during Music Store launching
-	 */	
-	IMPORT_C void UpdateNmsHomeOperator(TInt aNetwork);
-	
-	/**
-	 * Function: WriteNmsLogtoXmlL
-	 * logs nmsEvents to Xml file
-	 */	
-	IMPORT_C void WriteNmsLogtoXmlL();
-	/**
-	* Function: UpdateNmsType
-	* updates the Nms type
-	* @param Nms type
-	*/	
-	IMPORT_C void UpdateNmsType(const TDesC& aNmsType);		
-	/**
-	* Function: UpdateNmsChannelID
-	* updates the Nms channel id
-	* @param Nms channel id
-	*/	
-	IMPORT_C void UpdateNmsChannelID(TInt aChanneldID);
-
-    /**
-     * The following methods are for Song Recog Event Usage Logging 
-     */
-	
-    /**
-     * The following methods are used for sending out Usage Logging 
-     */
-    
-	/**
-	* Function: SetDbStatusObserser
-	* @param Db Status Observer
-	*/	
-	IMPORT_C void SetDbStatusObserser(MIRLogDbStatusObserver *aDbStatusObserver);
-	
-	/**
-	* Function: ReportSent();
-	* notify that the usage report is just sent out to isds server
-	*/	
-	IMPORT_C void ReportSent();	
-private:
-
-	/**
-	* Function: CollectSettingsData
-	* collect information during starting of session
-	* like irid, version information.
-	*/		
-	void CollectSettingsData();
-	
-	/**
-	* Function: WriteToXmlL
-	* gathers the information and generates sesion log file and zip file
-	* file will be stored in private path
-	*/	
-	void WriteToXmlL();		
-	
-	/**
-	* Function: WriteSessionData
-	* gathers session log data and writes to XML file
-	* @param no of urls tried to connect in that particular session
-	*/		
-	void WriteSessionData(TInt aIndex);
-	
-	/**
-	* Function: WriteBrowseLog
-	* gathers browse log data and writes to XML file
-	*/	
-	void WriteBrowseLog();
-	
-	/**
-	* Function: ZipFileL
-	* generates the zip file from the input xml file
-	* output file is in gzip format and is stored in private path
-	*/	
-	void ZipFileL();
-	
-	/**
-	* Function: FormatDateTime
-	* formats the date time given in "%d-%d-%d %d:%d:%d GMT\n" format
-	* copies the result to a descriptor
-	* @param reference of descriptor to which the data is to be copied
-	* @param time to be copied
-	*/	
-	void FormatDateTime(TDes& aBuffer,TDateTime aDateTime);
-	
-	/**
-	* Function : WriteSessionLog
-	* Write buffer content to log file
-	*/
-	void WriteBufferToLogFile();
-	
-	/**
-	* Function : UnForceSessionEndedL
-	* Write session log
-	* @param instance of session which ended
-	*/
-	void UnForceSessionEndedL( CIRSessionLogger* aSession );
-	
-	/**
-	* Function : ForcedSessionEndedL
-	* Write session log
-	*/
-	void ForcedSessionEndedL();
-
-
-    /**
-	 * The following methods are for Nms Event Usage Logging 
-	 */
-		
-	/**
-	* Function: WriteNmsLogData
-	* gathers Nmslog data and writes to XML file
-	* @param position of the log in the log data array
-	*/		
-	void WriteNmsLogData(TInt aIndex);
-    
-    /**
-     * From MIRPhoneInfoObserver
-     */
-	void ImeiUpdatedL(const TDesC& aImei);
-    
-private:	
-
-	/**
-	* opsetting instance 
-	*/
-	CIRSettings* iSettingsData;
-    
-    /**
-    * Phone Info 
-    */	
-	CPhoneInfo* iPhoneInfo;
-	
-	/**
-	* instance of session logger
-	*/
-	CIRSessionLogger* iSessionLog;
-	
-	/**
-	* instance of nms logger
-	*/
-	CIRNmsLogger* iNmsLog;
-    
-	/**
-	* instance of previous session 
-	*/
-	CIRSessionLogger* iPreviousSessionLog;
-	/**
-	* instance of previous session 
-	*/
-	CIRNmsLogger* iPreviousNmsLog;
-	
-	/**
-	* instance of sessiondb
-	*/ 
-	CIRSessionDb* iLogSessionDb;
-	/**
-	* instance of NmsLogdb
-	*/ 
-	CIRNmsLogDb* iNmsLogDb;
-	
-	/**
-	* instance of Db Status Observer
-	*/
-	MIRLogDbStatusObserver *iDbStatusObserver;
-	/**
-	* Indicate whether Nms Log Db has been updated
-	*/
-	TBool iNmsLogDbUpdated;
-	/**
-	* Indicate whether Session Log Db has been updated
-	*/
-	TBool iSessionLogDbUpdated;
-	/**
-	* Indicate whether usage report sent to isds server has received successful response
-	*/
-	TBool iUnComfirmedReportSent;
-	/**
-	* it holds the sessions
-	*/
-	CArrayPtrFlat<CIRSessionLogger> *iSessionData;
-	/**
-	* it holds the NmsLog
-	*/
-	CArrayPtrFlat<CIRNmsLogger> *iNmsLogData;
-    
-	/**
-	* position in xml file
-	*/
-	TInt iFileWritePos;
-
-	/**
-	* stores the network during browsing
-	*/
-	TInt iCurrentBrowseNetwork;
-	
-	/**
-	* Checks whether any error has occured while 
-	* writing or retriving from data base
-	*/
-	TBool iSessionLogUpdationFailed;
-	/**
-	* Checks whether any error has occured while 
-	* writing or retriving from data base
-	*/
-	TBool iNmsLogUpdationFailed;    
-	/**
-	* Checks whether db creation is failure or success
-	*/
-	TBool iSessionDbCreationFailed;
-	/**
-	* Checks whether db creation is failure or success
-	*/
-	TBool iNmsDbCreationFailed;
-    
-	/*
-	* sets when an nms event is generated
-	*/
-	TBool iNmsEventFlag;
-	
-	/**
-	* log file
-	*/
-	RFile iLogFile;
-	
-	/*
-	* file session
-	*/
-	RFs iFsSession;
-	
-	/**
-	* unicode buffer
-	*/ 
-	//"MAX_URL_CHARACTOR_NUMBER = 255" is defined 
-	// in iropenwebaddressview.cpp, it is 8bit len char.
-	// the memory should be double when tranfer 8bit to 16bit.  
-	TBuf<512> iUniCodeBuf;  //Unicode
-	
-	/**
-	* utf 8 buffer
-	*/
-	TBuf8<256> iUTF8Buffer; //UTF-8
-	
-	/**
-	* version number
-	*/
-	TBuf<5> iReportVersion;
-	
-	/**
-	* irid
-	*/
-	TBuf<30>  iIRId;
-	
-    /**
-    * Base64 encoded IMEI
-    */
-    HBufC *iImeiBase64;
-	
-	/**
-	* session database file
-	*/
-	TFileName iSessFile;
-	/**
-	* session database file
-	*/
-	TFileName iNmsLogFile;    
-	/**
-	* log files path
-	*/
-	TFileName iLogFilePath;
-	
-	/**
-	* instance of browse log	
-	*/
-	TIRBrowseLog iRBrowseLog;
-	
-	/**
-	* session start time
-	*/
-	TTime iSessionStartTime;
-	
-    /**
-     * Timestamp
-     */
-    TTime iSongRecogTimestamp; 	
-	
-	/**
-	* time stamp
-	*/
-	TTime iBrowseLogTimeStamp;
-	
-	/**
-	* date
-	*/
-	TDateTime iDate;
-	
-	/**
-	* array for storing browse log
-	*/	
-	RArray<TIRBrowseLog> iBrowseLog;
-	
-	/**
-	* number of browse logs written to xml
-	*/
-	TInt iBrowseLogsCntToXml;
-
-	
-	/**
-	 * The following methods are for Nms Event Usage Logging 
-	 */
-		
-	/**
-	 * Timestamp
-	 */
-	TTime iNmsTimestamp; 
-    
-	/**
-	 * Type of Event (i.e., "find" or "launch")
-	 */
-	TInt iNmsType;
-	
-	/**
-	 * Nms Event Current netwrok type
-	 */
-	TInt iNmsCurrentNetwork;
-	
-	/**
-	 * Nms Event Home Operator
-	 */
-	TInt iNmsHomeOperator;  
-	/**
-	 * The number of times session end called
-	 */
-	TInt iSessionEndCalled;  	 
-	};
-
-#endif //IRSESSIONLOGGER_H
-
-
-
--- a/internetradio2.0/sessionloginc/irsessionloggerutility.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,426 +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 IRSESSIONLOGGERUTILITY_H
-#define IRSESSIONLOGGERUTILITY_H
-
-#include <e32base.h>
-
-#include "irsessionparams.h"
-
-class RReadStream;
-class RWriteStream;
-
-/**
-* This class can hold data for session log 
-*/
-
-NONSHARABLE_CLASS(CIRSessionLogger) : public CBase
-	{
-public:
-	/**
-	* Function: NewL
-	* Two phase constructor returns the instance of CIRSessionLogger
-	* @returns instance of CIRSessionLogger
-	*/
-	static CIRSessionLogger* NewL();
-
-	/**
-	* Function: NewLC
-	* Two phase constructor creates the instance of CIRSessionLogger
-	* @returns instance of CIRSessionLogger
-	*/
-	static CIRSessionLogger* NewLC(); 
-
-	/**
-	* Function: ~CIRSessionLogger
-	* default destructor
-	*/	
-	~CIRSessionLogger();
-	
-private:
-	/**
-	* Function: ConstructL
-	* Two phase constructor
-	*/	
-	void ConstructL();
-	
-	/**
-	* Function: CIRSessionLogger
-	* default constructor
-	*/	
-	CIRSessionLogger();	
-
-public:
-	/**
-	* Function: EndLogging
-	* logs the termination condition
-	*/
-	void EndLogging();
-	
-	/**
-	* Function: HandleStartEvents
-	* functtion handles start events
-	*/
-	void HandleStartEvents();
-	
-	/**
-	* Function: HandleStopEvents
-	* functtion handles stop events
-	*/
-	void HandleStopEvents();
-	
-	/**
-	* Function: MarkSession
-	* Marks the start of a session
-	*/
-	void MarkSession();
-
-	/**
-	* Function: UnMarkSession
-	* UnMarks the start of a sessiom
-	*/
-	void UnMarkSession();
-	
-	/**
-	* Function: SessionMarked
-	* Returns whether session is marked or not
-	* @return session marked flag
-	*/	
-	TBool SessionMarked();
-	
-	/**
-	* Function: LogServerResult
-	* logs server connection result
-	* @param URL to which connection is attempted
-	* @param response from server
-	*/
-	void LogServerResult(const TDesC& aUrl,TResponse aResult);
-	
-    /**
-    * Function: LogSongRecog
-    * logs song recog
-    * @param aTimeStamp song recog timestamp.
-    */	
-	void LogSongRecog(const TDesC& aTimeStamp);
-	
-	/**
-	* Function: GetConnectedFrom
-	* connected information is stored
-	* @param connected from information
-	*/
-	void GetConnectedFrom(TConnectedFrom aConnectedFrom);
-	
-	/**
-	* Function: UpdateSessionLog
-	* update the session logs
-	* @param TIRServer structure which holds url response and cound
-	*/
-	void UpdateSessionLog(TIRServer& aServer);
-	
-	/**
-	* Function: ResetResource
-	* reset data from channel server
-	*/
-	void ResetResource();
-
-	/**
-	* Function: IsSessionProgressing
-	* checks whether session is active or not
-	* @return EFalse if session is currently not progressing
-	*/
-	TBool IsSessionProgressing();
-
-	/**
-	* Function: CompensationTime
-	* returns time at which session become active
-	* @return time at which session become active
-	*/	
-	TTime CompensationTime();
-
-	/**
-	* Function: UpdateSessionId
-	* updates the session id
-	* @param session id
-	*/
-	void UpdateSessionId(TInt aSessionId);
-	
-	/**
-	* Function: UpdateTerminationStatus
-	* updates the termination status
-	* @param terminated by information
-	*/	
-	void UpdateTerminationStatus(TTerminationStatus aTerminatedBy);
-	
-	/**
-	* Function: UpdateChannelID
-	* updates the channel id
-	* @param channel id
-	*/	
-	void UpdateChannelID(TInt aChanneldID);
-	
-	/**
-	* Function: UpdateCurrentNetwork
-	* updates the current network
-	* @param current network
-	*/
-	void UpdateCurrentNetwork(TInt aCurrentNetwork);
-	
-	/**
-	* Function: UpdateHomeOperator
-	* updates the home network
-	* @param home network
-	*/
-	void UpdateHomeOperator(TInt aHomeOperator);
-	
-	/**
-	* Function: UpdateConnectionType
-	* updates the connection type
-	* @param connection type
-	*/
-	void UpdateConnectionType(const TDesC& aConnectionType);
-	
-	/**
-	* Function : UpdateSessionStartGMTTime
-	* function updates session start time with current GMT time
-	*/
-	void UpdateSessionStartGMTTime();
-	
-	/**
-	* Function: TerminationStatus
-	* returns termination status
-	* @return termination status
-	*/
-	TDesC& TerminationStatus();
-		
-	/**	
-	* Function: ChannelID
-	* return the channel id
-	* @return channel id
-	*/	
-	TInt ChannelID() const;
-	
-	/**
-	* Function: CurrentNetwork
-	* returns the Current Network
-	* @return Current Network
-	*/	
-	TInt CurrentNetwork() const;
-	
-	/**
-	* Function: HomeOperator
-	* returns the home network
-	* @return home network
-	*/
-	TInt HomeOperator() const;
-	
-	/**
-	* Function: ConnectionType
-	* returns the connection type
-	* @return connection type
-	*/	
-	TDesC& ConnectionType();
-	
-	/**
-	* Function: StartTime
-	* returns the start time
-	* @return start time
-	*/	
-	TDes& StartTime();
-	
-	/**
-	* Function: ConnectionType
-	* returns the connection type
-	* @return connection type
-	*/	
-	TDesC& ConnectedFrom();
-	
-	/**
-	* Function: SessionId
-	* returns the session id
-	* @return session id
-	*/	
-	TInt SessionId() const;
-	
-	
-	/**
-	* Function: SessionDuration
-	* returns the duration of the session
-	* @return duration of the session
-	*/	
-	TInt SessionDuration() const;
-	
-	/**
-	* Function: FileName
-	* returns file name
-	* @return file name
-	*/
-	TFileName FileName();
-	
-	/** 
-	* Function: DateTime
-	* returns session start time
-	* @return session start time
-	*/
-	TTime DateTime();
-	
-	/** 
-	*  Function: SessionData
-	*  function returns instance session log array
-	*  @return session log RArray of session log
-	*/
-	const RArray<TIRServer>& SessionData()const;
-
-    /** 
-    *  Function: SongRecogLog
-    *  function returns instance song recog log array
-    *  @return song recog log RArray of song recog log
-    */
-    const RArray<TIRSongRecogLog>& SongRecogLog()const;
-    
-	/**
-	* Function: GetBackedUp
-	* Back up the given session, copies the data of the session
-	* @param session logs instance which to be copied
-	*/
-	void GetBackedUp( CIRSessionLogger& aSession );
-	
-	/**
-	* Function: ExternalizeL
-	* externialize the stream to the given stream
-	* @param write stream
-	*/
-	void ExternalizeL(RWriteStream& aWriteStream);
-	
-	/**
-	* Function: InternalizeL
-	* gets the data from the stream
-	* @param read stream
-	*/
-	void InternalizeL(RReadStream& aReadStream);
-	
-	/**
-	* Function: DurationValue
-	* Duration value
-	* @return duration
-	*/
-	TTimeIntervalSeconds DurationValue();
-	
-private:  
-	/**									
-	* file name 
-	*/									
-	TFileName iFilePath;
-	
-	/**
-	* session start time
-	*/
-	TTime iStartSessionTime;
-	
-	/**
-	* time current session become active started
-	*/
-	TTime iActiveSessionTime;
-	
-	/**
-	* session duration
-	*/
-	TTimeIntervalSeconds iDurationValue;
-	
-	/**
-	* start time is stored
-	*/
-	TBuf<64> iStartTime;
-	
-	/**
-	* terminated by status is stored
-	*/
-	TBuf<32> iTerminatedBy;
-	
-	/**
-	* connected from information
-	*/
-	TBuf<32> iConnectedFrom;
-	
-	/**
-	* connection type information	
-	*/
-	TBuf<32> iSessionConnectionType;
-	
-	/**
-	* session duration
-	*/
-	TInt iDuration;
-	
-	/**
-	* Termination status
-	*/
-	TTerminationStatus iTerminateBy;
-	
-	/**
-	* Session id
-	*/
-	TInt iSessionId;
-	
-	
-	/**
-	* NmsLog id
-	*/
-	TInt iNmsLogId;
-	
-	/**
-	* channel id
-	*/
-	TInt iChannelId;
-	
-	/**
-	* home operator mcc+mnc
-	*/
-	TInt iHomeOperator;
-	
-	/**
-	* current operator mcc+mnc
-	*/
-	TInt iSessionCurrentNetwork;
-	
-	/**
-	* Checks whether session is actually started 
-	*/	
-	TBool iSessionMarked;	
-	
-	/**
-	* Checks whether application is playing or not 
-	*/	
-	TBool iIsSessionProgressing;	
-	
-	/**
-	* session log holder's array
-	*/
-	RArray<TIRServer> iRServer;
-		
-    /**
-    * song recog log holder's array
-    */
-    RArray<TIRSongRecogLog> iRSongRecogLog;
-	};
-
-
-#endif //IRSESSIONLOGGERUTILITY_H
-
-
-
--- a/internetradio2.0/sessionloginc/irsessionparams.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +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 IRSESSIONPARAMS_H
-#define IRSESSIONPARAMS_H
-
-#include <e32cmn.h>
-
-// Browse Log Url Class
-class TIRBrowseLog
-	{	
-public:
-	//browse url	
-	TBuf<256> 	iBrowseUrl;
-	//time stamp
-	TBuf<32> 	iTimeStamp;	
-	//connected from
-	TBuf<16> 	iCurrentNetwork;
-	TInt  		iStatus;    //TO check the status for browse url,1 for channel BRowse url
-	}; 
-
-
-// Channel Server Results
-class TIRServer
-	{
-public:
-	//channel url
-	TBuf<256> iServerUrl;
-	//channel url connection result
-	TBuf<32>  iServerResult;
-	TInt 	  iCount;
-	};
-
-// Song Recog Log
-class TIRSongRecogLog
-    {
-public:
-    TBuf<64> iTimeStamp;
-    };
-
-enum TTerminationStatus
-	{
-	//terminated by user
-	EUserTerminated = 0,
-	//no connection to the server
-	ENoConnectionToServer,
-	//no connection to the network
-	ENoConnectionToNetwork,	
-	};
-	
-enum TConnectedFrom
-	{
-    //when session started straight from station details in iSDS
-    EIRIsds = 0,
-    //when session started from a station details saved to iRAPP favorites and the station is not from iSDS (channel_Id = 0 )
-    EIRPresetAdhoc,
-    //when session started from a station details saved to iRAPP favorites and the station is from iSDS (channel_ID is iSDS channel_ID)
-    EIRPresetIsds,
-    //when session started from iRAPP 'station play history' and the station is not from iSDS (channel_Id = 0 )
-    EIRHistoryAdhoc,
-    //when session started from iRAPP 'station play history' and the station is from iSDS (channel_ID is iSDS channel_ID )
-    EIRHistoryIsds,
-    //when session started from manually entered stream url
-    EIRAdhocManual,
-    //when iRAPP session started/triggered from any iRAPP external client e.g. Browser or SMS/MMS
-    EIRAdhocExternal
-	};
-
-enum TResponse
-	{
-	//connected 
-	EIRConnected = 0,
-	//connection failed because server is full (not responding)
-	EIRFull,
-	//connection timed out
-	EIRConnTimeOut,
-	//connection failed generic senerio like invalid url	
-	EIRConnFailed,
-	};
-
-#endif //IRSESSIONLOGGER_H
-
-
-
-
--- a/internetradio2.0/sessionloginc/mirphoneinfoobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-#ifndef MIRPHONEINFOOBSERVER_H
-#define MIRPHONEINFOOBSERVER_H
-
-class MIRPhoneInfoObserver
-	{
-public:
-	virtual void ImeiUpdatedL(const TDesC& aImei) = 0;
-	};
-
-
-#endif //MIRPHONEINFOOBSERVER_H
--- a/internetradio2.0/sessionloginc/mirsessionobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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 MIRSESSIONOBSERVER_H
-#define MIRSESSIONOBSERVER_H
-
-class MIRSessionObserver
-	{
-public:
-	virtual void CollectSessionData() = 0;
-	virtual void CollectPresetData(TInt aChannelType) = 0;
-	virtual void CollectBrowseLog(const TDesC& aBrowseUrl,TInt aStatus) = 0;
-	};
-
-
-#endif //MIRSESSIONOBSERVER_H
--- a/internetradio2.0/sessionlogsrc/irnmslogdb.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +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 <bautils.h>
-
-#include "irdebug.h" 
-#include "irnmslogdb.h"
-#include "irnmslogger.h"
-
-_LIT(KNmsLogTable,"NmsLog"); 
-_LIT(KID,"id");
-_LIT(KNmsLogCol,  "NmsLogData");
-_LIT(KNmsLogIndex,"NmsLogIndex");
-
-const TInt KMaxNoNmsLog = 15;
-
-
-// ======== LOCAL FUNCTIONS ========
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewL()
-// two phased construction
-// ---------------------------------------------------------------------------
-//
-  CIRNmsLogDb* CIRNmsLogDb::NewL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::NewL" );
-	CIRNmsLogDb* self;
-	self=CIRNmsLogDb::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRNmsLogDb::NewL - Exiting." );
-	return self;
-	}
- 
- 
-// ---------------------------------------------------------------------------
-// Function : NewLC()
-// Two phased construction
-// ---------------------------------------------------------------------------
-//
-  CIRNmsLogDb* CIRNmsLogDb::NewLC()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::NewLC" );
-	CIRNmsLogDb *self;
-	self=new(ELeave)CIRNmsLogDb;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRNmsLogDb::NewLC - Exiting." );
-	return self;
-	}
- 
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::~CIRNmsLogDb()
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRNmsLogDb::~CIRNmsLogDb()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::~CIRNmsLogDb" );
-	CloseDb();
-	iFsSession.Close();
-	IRLOG_DEBUG( "CIRNmsLogDb::~CIRNmsLogDb - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::CreateDbConditional()
-// Creates both the dbms files conditionally(only if not yet created)
-// calls CreateDbL()
-// ---------------------------------------------------------------------------
-//
- TInt CIRNmsLogDb::CreateDbConditional(TFileName &aNmsLog)
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional" );
-	iDbFile.Copy(aNmsLog);
-	if( !BaflUtils::FileExists(iFsSession, iDbFile) )
-		{
-		TRAPD(error,CreateDbL(iDbFile));
-		if( error )
-			{
-			IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional - Exiting (1)." );
-			return error;
-			}	
-		}
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateDbConditional - Exiting (2)." );
-	return KErrNone;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb:AddNmsLogStartL()
-// adds the NmsLog log entry into data base
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::AddNmsLogStartL(CIRNmsLogger& aNmsLog)
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::AddNmsLogStartL" );
-	OpenDbL();
-	RDbTable nmsLogtable;
-	TInt error=nmsLogtable.Open(iNmsLogDb,KNmsLogTable,nmsLogtable.
-		EUpdatable);
-	CleanupClosePushL(nmsLogtable);
-	if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-	
-	//! arrange the presets in incresing order of index
-	nmsLogtable.SetIndex(KNmsLogIndex);
-	nmsLogtable.Reset();
-
-	//if NmsLog log is greater or equal to than 5
-	if( nmsLogtable.CountL() >= KMaxNoNmsLog )
-		{
-		//first row is selected
-		nmsLogtable.FirstL();
-		//the current row is selected
-		nmsLogtable.GetL();
-		//delete that entry
-		nmsLogtable.DeleteL();
-		}	
-    CleanupStack::PopAndDestroy(&nmsLogtable);
-	//Algorithm : else condition need not handle seperatly
-	//Algorithm : add NmsLogid and informations like
-	//starttime,connectedfrom,NmsLogid,connectiontype,channelid
-	//currentnetwork,homenetwork,NmsLogtable 
-	//Algorithm: if no. of NmsLog is greater than 5
-
-	_LIT(query,"SELECT * FROM %S");	
-    HBufC* sqlStr=HBufC::NewLC(query().Length() + KNmsLogTable().Length());
-	sqlStr->Des().Format(query,&KNmsLogTable);
-	
-	// Create a view on the database
-    RDbView view;     
-    error = view.Prepare(iNmsLogDb,*sqlStr);
-    if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-    CleanupStack::PopAndDestroy(sqlStr);     
-    CleanupClosePushL(view);
-    error = view.EvaluateAll();
-    if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-    CDbColSet* columns = view.ColSetL();
-    CleanupStack::PushL(columns);
-    
-    RDbColWriteStream writeStream;
-	TRAP(error,//trap start
-	   // Insert a row. Column order matches sql select statement
-	    view.InsertL();
-		//get index
-		view.SetColL(columns->ColNo(KID), aNmsLog.NmsLogId());	
-		//!open stream
-		writeStream.OpenLC(view,columns->ColNo(KNmsLogCol));
-		aNmsLog.ExternalizeL(writeStream);
-		writeStream.CommitL();
-		CleanupStack::PopAndDestroy(&writeStream);
- 		);
- 		
- 	CleanupStack::PopAndDestroy(columns);
- 	if( error!=KErrNone )
-	 	{
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-	view.PutL();
- 	CleanupStack::PopAndDestroy(&view);
- 	CloseDb();
- 	IRLOG_DEBUG( "CIRNmsLogDb::AddNmsLogStartL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::GetAllNmsLogL()
-// gets all the preset into an array 
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::GetAllNmsLogL(
-	CArrayPtrFlat<CIRNmsLogger>& aNmsLogDataList)
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::GetAllNmsLogL" );
-	OpenDbL();
-	//not sure about this resetanddestroy
-	 //! Open for preset master
-	aNmsLogDataList.ResetAndDestroy();	    
-	//! temp item for holding the retrived data
-	CIRNmsLogger *item;
-	RDbColReadStream instream;    
-	RDbTable table;
-	TInt error = table.Open(iNmsLogDb, KNmsLogTable, table.EReadOnly);
-	CleanupClosePushL(table);
-	if( error!=KErrNone )
-	 	{
-	 	//if open fails function leaves
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-
-	CDbColSet* colSet = table.ColSetL();
-	CleanupStack::PushL(colSet);
-
-	//! arrange the presets in incresing order of index
-	table.SetIndex(KNmsLogIndex);
-	table.Reset();
-	//! recursively retrive the preset data from the master table
-	for (table.FirstL(); table.AtRow(); table.NextL())
-	    {
-	    item=CIRNmsLogger::NewL();
-	    CleanupStack::PushL(item);
-	    table.GetL();
-	    instream.OpenLC( table, colSet->ColNo( KNmsLogCol ) );
-		item->InternalizeL(instream);
-		//update NmsLogid
-	    aNmsLogDataList.AppendL(item);
-	    CleanupStack::PopAndDestroy(&instream);
-	    CleanupStack::Pop(item);
-	    }
-	    
-	CleanupStack::PopAndDestroy(colSet);
-	//!close the master table
-	CleanupStack::PopAndDestroy(&table);
-	CloseDb();
-	IRLOG_DEBUG( "CIRNmsLogDb::GetAllNmsLogL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : DeleteAllNmsLog
-// delete all the NmsLog from NmsLog log entry
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::DeleteAllNmsLogL()
-	{ 
-	IRLOG_DEBUG( "CIRNmsLogDb::DeleteAllNmsLogL" ); 
-	//opening a data base 
-	OpenDbL();
-	RDbTable nmsLogtable;
-	//data base table opened
-    TInt error=nmsLogtable.Open(iNmsLogDb,KNmsLogTable,nmsLogtable.
-    	EUpdatable);
-    CleanupClosePushL(nmsLogtable);
-    if( error!=KErrNone )
-	 	{
-	 	//if error we leave
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-	//data base begin 	
-    error = iNmsLogDb.Begin();
-    if( error!=KErrNone )
-	 	{
-	 	//if open fails function leaves
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-
-    //! arrange the presets in incresing order of index
-    nmsLogtable.SetIndex(KNmsLogIndex);
-    nmsLogtable.Reset();
-    nmsLogtable.FirstL();
-    while(nmsLogtable.AtRow())
-	    {
-	    //deleting all the rows in the table
-	    nmsLogtable.GetL();
-	    nmsLogtable.DeleteL();
-		nmsLogtable.FirstL();
-	    }
-	//saving the change
-	CleanupStack::PopAndDestroy(&nmsLogtable);
-    iNmsLogDb.Commit();
-    CloseDb();	
-    IRLOG_DEBUG( "CIRNmsLogDb::DeleteAllNmsLogL - Exiting." );
-	}   
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::ConstructL()
-// Standard 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::ConstructL" );
-	User::LeaveIfError(iFsSession.Connect());
-	IRLOG_DEBUG( "CIRNmsLogDb::ConstructL- Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::CloseDb()
-// Closes the database 
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::CloseDb()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::CloseDb" );
-	iNmsLogDb.Close();
-	IRLOG_DEBUG( "CIRNmsLogDb::CloseDb - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function : CreateNmsLogTableL
-// creates NmsLogtable with two column one is NmsLogid and rest of NmsLog
-// log data
-// ---------------------------------------------------------------------------
-//NmsLogTable
-//---------------------------
-//| KID   |	 KNmsLogCol |
-//---------------------------
-//|TInt32 | EDbColLongText8 |
-//---------------------------
-//
-void CIRNmsLogDb::CreateNmsLogTableL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogTableL" );
-	//start time of NmsLog
-	TDbCol nmsLogid(KID, EDbColInt32);
-	nmsLogid.iAttributes = TDbCol::ENotNull; 
-	
-    //!this column is used to store preset data
-    //!The column stores a potentially large amount of non-Unicode text data.
-    TDbCol nmsLogcol(KNmsLogCol, EDbColLongText8);
-   	nmsLogcol.iAttributes = TDbCol::ENotNull; 
-   	
-	CDbColSet* nmsLogcolset = CDbColSet::NewLC();
-	nmsLogcolset->AddL(nmsLogid);
-	nmsLogcolset->AddL(nmsLogcol);
-
-	// Create the NmsLoglog table with two columns
-	
-	User::LeaveIfError(iNmsLogDb.CreateTable(KNmsLogTable,
-		 *nmsLogcolset));
-	
-	//Create the KeyIndex for the table
-	CreateNmsLogIndexL();
-	CleanupStack::PopAndDestroy(nmsLogcolset);
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogTableL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CreateNmsLogIndexL
-// sets NmsLogid as the primary key
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogDb::CreateNmsLogIndexL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogIndexL" );
-	TDbKeyCol nmsLogid(KID);
-	CDbKey* index = CDbKey::NewLC();
-	index->AddL(nmsLogid);
-	User::LeaveIfError(iNmsLogDb.CreateIndex( KNmsLogIndex, KNmsLogTable,
-		*index));
-	CleanupStack::PopAndDestroy(index);
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateNmsLogIndexL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::OpenDbL()
-// opening the data base 
-// ---------------------------------------------------------------------------
-//
- void CIRNmsLogDb::OpenDbL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::OpenDbL" );
-	CloseDb();
-	TInt error = KErrNone;
-	if( !BaflUtils::FileExists(iFsSession, iDbFile) )
-	    {
-	    //if file doesn't exist function leaves with error code
-	    //KErrNotFound
-	    error = KErrNotFound;
-	    User::LeaveIfError(error);
-	    }
-
-	error = iNmsLogDb.Open(iFsSession,iDbFile);	
-	if( error!=KErrNone )
-		{
-		//if database is failed to open then 
-		//function leaves
-		IRLOG_ERROR2( "CIRNmsLogDb::OpenDbL - Opening NmsLog database failed (%d)", error );
-		User::LeaveIfError(error);
-		}
-	if( iNmsLogDb.IsDamaged() || !iNmsLogDb.InTransaction() )
-		{
-		//if data base is damaged then 
-		//it tried to recover
-		//if recovery is not possible function leaves
-		error = iNmsLogDb.Recover();
-		if ( KErrNone == error)
-			{
-			//if recovered data base is compacted
-			error = iNmsLogDb.Compact();	
-			}
-	    User::LeaveIfError(error);	
-		}
-	IRLOG_DEBUG( "CIRNmsLogDb::OpenDbL - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CIRNmsLogDb::CreateDbL()
-// Creates both the dbms files 
-// calls CreateFavMasterTableL(),CreateFavUrlTableL
-// database filename
-// ---------------------------------------------------------------------------
-//
- void CIRNmsLogDb::CreateDbL(TFileName& aNmsLog)
-	{
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateDbL" );
-	CloseDb();
-	TInt error = iNmsLogDb.Replace(iFsSession,aNmsLog);
-	if ( error != KErrNone )
-	    {
-	    IRLOG_ERROR2( "CIRNmsLogDb::CreateDbL - Creating NmsLog database failed (%d)", error );
-	    }
-	User::LeaveIfError(error);
-	CreateNmsLogTableL();
-	IRLOG_DEBUG( "CIRNmsLogDb::CreateDbL - Exiting." );
-	}
-
-
-
-
-
-
-
-
-
-
--- a/internetradio2.0/sessionlogsrc/irnmslogger.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +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 "irdebug.h"
-#include "irreportsettings.h"
-#include "irnmslogger.h"
-
-//const TInt KMaxUrlLength = 256
-
-// ============================== Function declaration =======================
-
-// ---------------------------------------------------------------------------
-// Function: NewL
-// Two phase constructor returns the instance of CIRNmsLogger
-// ---------------------------------------------------------------------------
-//
-CIRNmsLogger* CIRNmsLogger::NewL()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::NewL" );
-	CIRNmsLogger* self = CIRNmsLogger::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRNmsLogger::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function: NewLC
-// Two phase constructor creates the instance of CIRNmsLogger
-// ---------------------------------------------------------------------------
-//
-CIRNmsLogger* CIRNmsLogger::NewLC()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::NewLC" );
-	CIRNmsLogger* self = new (ELeave) CIRNmsLogger;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRNmsLogger::NewLC - Exiting." );
-	return self;
-	}	
-
-// ---------------------------------------------------------------------------
-// Function: ~CIRNmsLogger
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRNmsLogger::~CIRNmsLogger()	
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::ConstructL()		
-	{
-	//No implementation
-	//return;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CIRNmsLogger
-// default constructor
-// ---------------------------------------------------------------------------
-//
-CIRNmsLogger::CIRNmsLogger()	
-	{
-	//No implementation
-	}
-
-	
-// ---------------------------------------------------------------------------
-// Function: ResetResource
-// reset data from channel server
-// ---------------------------------------------------------------------------
-//	
-void CIRNmsLogger::ResetResource()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::ResetResource" );
-	//reseting of resource
-	}
-
-
-	
-// ---------------------------------------------------------------------------
-// Function: UpdateChannelID
-// updates the channel id
-// ---------------------------------------------------------------------------
-//	
-void CIRNmsLogger::UpdateChannelID(TInt aChanneldID)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::UpdateChannelID" );
-	iChannelId = aChanneldID;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateCurrentNetwork
-// updates the current network
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::UpdateCurrentNetwork(TInt aCurrentNetwork)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::UpdateCurrentNetwork" );
-	iNmsCurrentNetwork = aCurrentNetwork;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateHomeOperator
-// updates the home network
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::UpdateHomeOperator(TInt aHomeOperator)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::UpdateHomeOperator" );
-	iHomeOperator = aHomeOperator;
-	}
-
-// ---------------------------------------------------------------------------
-// Function : UpdateNmsStartGMTTime
-// function updates Nms start time with current GMT time
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::UpdateNmsStartGMTTime()
-	{
-	iStartNmsTime.UniversalTime();	
-	}
-// ---------------------------------------------------------------------------
-// CIRNmsLogger: UpdateNmsType
-// updates the Nms type
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::UpdateNmsType(const TDesC& aNmsType)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::UpdateNmsType" );
-	iNmsType.Copy(aNmsType);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ChannelID
-// returns the channel id
-// ---------------------------------------------------------------------------
-//	
-TInt CIRNmsLogger::ChannelID() const
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::ChannelID" );
-	return iChannelId;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CurrentNetwork
-// returns the Current Network
-// ---------------------------------------------------------------------------
-//	
-TInt CIRNmsLogger::CurrentNetwork() const
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::CurrentNetwork" );
-	return iNmsCurrentNetwork;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: HomeOperator
-// returns the home network
-// ---------------------------------------------------------------------------
-//
-TInt CIRNmsLogger::HomeOperator() const
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::HomeOperator" );
-	return iHomeOperator;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function: StartTime
-// returns the start time
-// ---------------------------------------------------------------------------
-//	
-TDes& CIRNmsLogger::StartTime()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::StartTime" );
-	return iStartTime;	
-	}
-// ---------------------------------------------------------------------------
-// Function: NmsLogId
-// returns the NmsLog id
-// ---------------------------------------------------------------------------
-//	
-TInt CIRNmsLogger::NmsLogId() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::NmsLogId" );
-	return iNmsLogId;
-	}
-// ---------------------------------------------------------------------------
-// Function: NmsType
-// returns the Nms type
-// ---------------------------------------------------------------------------
-//	
-TDesC& CIRNmsLogger::NmsType()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::ConnectionType" );
-	return iNmsType;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: FileName
-// returns file name
-// ---------------------------------------------------------------------------
-//
-TFileName CIRNmsLogger::FileName()
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::FileName" );
-	return iFilePath;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: DateTime
-// returns Nms start time
-// ---------------------------------------------------------------------------
-//
-TTime CIRNmsLogger::DateTime()
-	{
-	return iStartNmsTime;	
-	}
-	
-
-	
-// ---------------------------------------------------------------------------
-// Function: GetBackedUp
-// Back up the Nms log of a Nms
-// ---------------------------------------------------------------------------
-//	
-void CIRNmsLogger::GetBackedUp( CIRNmsLogger& aNms )
-	{
-	//Nms start time
-	iStartNmsTime = aNms.DateTime();
-	//start time 
-	iStartTime.Copy( aNms.StartTime() );
-	//channel id
-	iChannelId = aNms.ChannelID();
-	//home operator
-	iHomeOperator = aNms.HomeOperator();
-	//current network
-	iNmsCurrentNetwork = aNms.CurrentNetwork();
-	// Newly added	
-	ResetResource();
-	}
-			
-// ---------------------------------------------------------------------------
-// Function: ExternalizeL
-// externialize the stream to the given stream
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::ExternalizeL(RWriteStream& aWriteStream)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::ExternalizeL" );
-	TInt length;
-	//start time
-	length = iStartTime.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iStartTime,length);
-	
-	//channel id
-	aWriteStream.WriteInt32L(iChannelId);
-
-	//Type
-	length = iNmsType.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iNmsType,length);
-	
-	//current network
-	aWriteStream.WriteInt32L(iNmsCurrentNetwork);
-	
-	//home operator
-	aWriteStream.WriteInt32L(iHomeOperator);
-
-	IRLOG_DEBUG( "CIRNmsLogger::ExternalizeL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: InternalizeL
-// gets the data from the stream
-// ---------------------------------------------------------------------------
-//
-void CIRNmsLogger::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG( "CIRNmsLogger::InternalizeL" );
-	TInt length;
-	
-	//Start Time
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iStartTime,length);
-	
-	
-	//Channel Id
-	iChannelId = aReadStream.ReadInt32L();
-
-	//Nms Type
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iNmsType,length);
-
-	//Nms Current Network
-	iNmsCurrentNetwork = aReadStream.ReadInt32L();
-	
-	//Home Operator
-	iHomeOperator = aReadStream.ReadInt32L();
-			
-	IRLOG_DEBUG( "CIRNmsLogger::InternalizeL - Exiting." );
-	}
--- a/internetradio2.0/sessionlogsrc/irphoneinfo.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-#include "irphoneinfo.h"
-#include "mirphoneinfoobserver.h"
-
-// ---------------------------------------------------------------------------
-// Function: NewL
-// ---------------------------------------------------------------------------
-//
-CPhoneInfo* CPhoneInfo::NewL(MIRPhoneInfoObserver* aObserver)
-    {
-    CPhoneInfo* self = new(ELeave) CPhoneInfo(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Function: ~CPhoneInfo
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CPhoneInfo::~CPhoneInfo()
-    {
-    Cancel();
-    delete iTelephony;
-    iTelephony = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Function: StartUpdatingL
-// ---------------------------------------------------------------------------
-//
-void CPhoneInfo::StartUpdating()
-    {
-    // Retrieves the model information and unique identification of the mobile device.
-    if(!IsActive() && iTelephony)
-        {    
-        iTelephony->GetPhoneId(iStatus, iPhoneIdV1Pckg);
-        SetActive();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Function: CPhoneInfo
-// default constructor
-// ---------------------------------------------------------------------------
-//
-CPhoneInfo::CPhoneInfo(MIRPhoneInfoObserver* aObserver)
-    : CActive(EPriorityLow),
-      iPhoneIdV1Pckg(iPhoneIdV1),
-      iTelephony(NULL),
-      iObserver(aObserver)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-void CPhoneInfo::ConstructL()
-    {
-    iTelephony = CTelephony::NewL();
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-// Function: RunL
-// From CActive
-// ---------------------------------------------------------------------------
-//
-void CPhoneInfo::RunL()
-    {
-    if(NULL != iObserver)
-        {
-        if(KErrNone == iStatus.Int())
-            {
-            TRAP_IGNORE(iObserver->ImeiUpdatedL(iPhoneIdV1.iSerialNumber));
-            }
-        else
-            {
-            TRAP_IGNORE(iObserver->ImeiUpdatedL(KNullDesC));
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Function: DoCancel
-// From CActive
-// ---------------------------------------------------------------------------
-//
-void CPhoneInfo::DoCancel()
-    {
-    // Cancels an outstanding asynchronous request.
-    if(IsActive() && iTelephony)
-        {    
-        iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
-        }
-    }
--- a/internetradio2.0/sessionlogsrc/irsessiondb.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +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 <bautils.h>
-
-#include "irdebug.h" 
-#include "irsessiondb.h"
-#include "irsessionloggerutility.h"
-
-_LIT(KSessionTable,"Session"); 
-_LIT(KID,"id");
-_LIT(KSessionLogCol,  "SessionData");
-_LIT(KSessionIndex,"SessionIndex");
-
-const TInt KMaxNoSession = 15;
-
-
-// ======== LOCAL FUNCTIONS ========
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewL()
-// two phased construction
-// ---------------------------------------------------------------------------
-//
-  CIRSessionDb* CIRSessionDb::NewL()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::NewL" );
-	CIRSessionDb* self;
-	self=CIRSessionDb::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRSessionDb::NewL - Exiting." );
-	return self;
-	}
- 
- 
-// ---------------------------------------------------------------------------
-// Function : NewLC()
-// Two phased construction
-// ---------------------------------------------------------------------------
-//
-  CIRSessionDb* CIRSessionDb::NewLC()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::NewLC" );
-	CIRSessionDb *self;
-	self=new(ELeave)CIRSessionDb;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRSessionDb::NewLC - Exiting." );
-	return self;
-	}
- 
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::~CIRSessionDb()
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRSessionDb::~CIRSessionDb()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::~CIRSessionDb" );
-	CloseDb();
-	iFsSession.Close();
-	IRLOG_DEBUG( "CIRSessionDb::~CIRSessionDb - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::CreateDbConditional()
-// Creates both the dbms files conditionally(only if not yet created)
-// calls CreateDbL()
-// ---------------------------------------------------------------------------
-//
- TInt CIRSessionDb::CreateDbConditional(TFileName &aSession)
-	{
-	IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional" );
-	iDbFile.Copy(aSession);
-	if( !BaflUtils::FileExists(iFsSession, iDbFile) )
-		{
-		TRAPD(error,CreateDbL(iDbFile));
-		if( error )
-			{
-			IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional - Exiting (1)." );
-			return error;
-			}	
-		}
-	IRLOG_DEBUG( "CIRSessionDb::CreateDbConditional - Exiting (2)." );
-	return KErrNone;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb:AddSessionStartL()
-// adds the session log entry into data base
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::AddSessionStartL(CIRSessionLogger& aSession)
-	{
-	IRLOG_DEBUG( "CIRSessionDb::AddSessionStartL" );
-	OpenDbL();
-	RDbTable sessionlogtable;
-	TInt error=sessionlogtable.Open(iSessionDb,KSessionTable,sessionlogtable.
-		EUpdatable);
-	CleanupClosePushL(sessionlogtable);
-	if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-	
-	//! arrange the presets in incresing order of index
-	sessionlogtable.SetIndex(KSessionIndex);
-	sessionlogtable.Reset();
-
-	//if session log is greater or equal to than 5
-	if( sessionlogtable.CountL() >= KMaxNoSession )
-		{
-		//first row is selected
-		sessionlogtable.FirstL();
-		//the current row is selected
-		sessionlogtable.GetL();
-		//delete that entry
-		sessionlogtable.DeleteL();
-		}	
-    CleanupStack::PopAndDestroy(&sessionlogtable);
-	//Algorithm : else condition need not handle seperatly
-	//Algorithm : add sessionid and informations like
-	//starttime,connectedfrom,sessionid,connectiontype,channelid
-	//currentnetwork,homenetwork,sessiontable 
-	//Algorithm: if no. of session is greater than 5
-
-	_LIT(query,"SELECT * FROM %S");	
-    HBufC* sqlStr=HBufC::NewLC(query().Length() + KSessionTable().Length());
-	sqlStr->Des().Format(query,&KSessionTable);
-	
-	// Create a view on the database
-    RDbView view;     
-    error = view.Prepare(iSessionDb,*sqlStr);
-    if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-    CleanupStack::PopAndDestroy(sqlStr);     
-    CleanupClosePushL(view);
-    error = view.EvaluateAll();
-    if( error )
-		{
-		CloseDb();
-		User::LeaveIfError(error);	
-		}
-    CDbColSet* columns = view.ColSetL();
-    CleanupStack::PushL(columns);
-    
-    RDbColWriteStream writeStream;
-	TRAP(error,//trap start
-	   // Insert a row. Column order matches sql select statement
-	    view.InsertL();
-		//get index
-		view.SetColL(columns->ColNo(KID), aSession.SessionId());	
-		//!open stream
-		writeStream.OpenLC(view,columns->ColNo(KSessionLogCol));
-		aSession.ExternalizeL(writeStream);
-		writeStream.CommitL();
-		CleanupStack::PopAndDestroy(&writeStream);
- 		);
- 		
- 	CleanupStack::PopAndDestroy(columns);
- 	if( error!=KErrNone )
-	 	{
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-	view.PutL();
- 	CleanupStack::PopAndDestroy(&view);
- 	CloseDb();
- 	IRLOG_DEBUG( "CIRSessionDb::AddSessionStartL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::GetAllPresetL()
-// gets all the preset into an array 
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::GetAllSessionL(
-	CArrayPtrFlat<CIRSessionLogger>& aSessionDataList)
-	{
-	IRLOG_DEBUG( "CIRSessionDb::GetAllSessionL" );
-	OpenDbL();
-	//not sure about this resetanddestroy
-	 //! Open for preset master
-	aSessionDataList.ResetAndDestroy();	    
-	//! temp item for holding the retrived data
-	CIRSessionLogger *item;
-	RDbColReadStream instream;    
-	RDbTable table;
-	TInt error = table.Open(iSessionDb, KSessionTable, table.EReadOnly);
-	CleanupClosePushL(table);
-	if( error!=KErrNone )
-	 	{
-	 	//if open fails function leaves
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-
-	CDbColSet* colSet = table.ColSetL();
-	CleanupStack::PushL(colSet);
-
-	//! arrange the presets in incresing order of index
-	table.SetIndex(KSessionIndex);
-	table.Reset();
-	//! recursively retrive the preset data from the master table
-	for (table.FirstL(); table.AtRow(); table.NextL())
-	    {
-	    item=CIRSessionLogger::NewL();
-	    CleanupStack::PushL(item);
-	    table.GetL();
-	    instream.OpenLC( table, colSet->ColNo( KSessionLogCol ) );
-		item->InternalizeL(instream);
-		//update sessionid
-	    aSessionDataList.AppendL(item);
-	    CleanupStack::PopAndDestroy(&instream);
-	    CleanupStack::Pop(item);
-	    }
-	    
-	CleanupStack::PopAndDestroy(colSet);
-	//!close the master table
-	CleanupStack::PopAndDestroy(&table);
-	CloseDb();
-	IRLOG_DEBUG( "CIRSessionDb::GetAllSessionL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function : DeleteAllSession
-// delete all the session from session log entry
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::DeleteAllSessionL()
-	{ 
-	IRLOG_DEBUG( "CIRSessionDb::DeleteAllSessionL" ); 
-	//opening a data base 
-	OpenDbL();
-	RDbTable sessionlogtable;
-	//data base table opened
-    TInt error=sessionlogtable.Open(iSessionDb,KSessionTable,sessionlogtable.
-    	EUpdatable);
-    CleanupClosePushL(sessionlogtable);
-    if( error!=KErrNone )
-	 	{
-	 	//if error we leave
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-	//data base begin 	
-    error = iSessionDb.Begin();
-    if( error!=KErrNone )
-	 	{
-	 	//if open fails function leaves
-	 	CloseDb();
-	 	User::LeaveIfError(error);
-	 	}
-
-    //! arrange the presets in incresing order of index
-    sessionlogtable.SetIndex(KSessionIndex);
-    sessionlogtable.Reset();
-    sessionlogtable.FirstL();
-    while(sessionlogtable.AtRow())
-	    {
-	    //deleting all the rows in the table
-	    sessionlogtable.GetL();
-	    sessionlogtable.DeleteL();
-		sessionlogtable.FirstL();
-	    }
-	//saving the change
-	CleanupStack::PopAndDestroy(&sessionlogtable);
-    iSessionDb.Commit();
-    CloseDb();	
-    IRLOG_DEBUG( "CIRSessionDb::DeleteAllSessionL - Exiting." );
-	}   
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::ConstructL()
-// Standard 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::ConstructL" );
-	User::LeaveIfError(iFsSession.Connect());
-	IRLOG_DEBUG( "CIRSessionDb::ConstructL- Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::CloseDb()
-// Closes the database 
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::CloseDb()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::CloseDb" );
-	iSessionDb.Close();
-	IRLOG_DEBUG( "CIRSessionDb::CloseDb - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function : CreateSessionTableL
-// creates sessionlogtable with two column one is sessionid and rest of session
-// log data
-// ---------------------------------------------------------------------------
-//SessionTable
-//---------------------------
-//| KID   |	 KSessionLogCol |
-//---------------------------
-//|TInt32 | EDbColLongText8 |
-//---------------------------
-//
-void CIRSessionDb::CreateSessionTableL()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::CreateSessionTableL" );
-	//start time of session
-	TDbCol sessionid(KID, EDbColInt32);
-	sessionid.iAttributes = TDbCol::ENotNull; 
-	
-    //!this column is used to store preset data
-    //!The column stores a potentially large amount of non-Unicode text data.
-    TDbCol sessionlogcol(KSessionLogCol, EDbColLongText8);
-   	sessionlogcol.iAttributes = TDbCol::ENotNull; 
-   	
-	CDbColSet* sessionlogcolset = CDbColSet::NewLC();
-	sessionlogcolset->AddL(sessionid);
-	sessionlogcolset->AddL(sessionlogcol);
-
-	// Create the sessionlog table with two columns
-	
-	User::LeaveIfError(iSessionDb.CreateTable(KSessionTable,
-		 *sessionlogcolset));
-	
-	//Create the KeyIndex for the table
-	CreateSessionIndexL();
-	CleanupStack::PopAndDestroy(sessionlogcolset);
-	IRLOG_DEBUG( "CIRSessionDb::CreateSessionTableL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function : CreateSessionIndexL
-// sets sessionid as the primary key
-// ---------------------------------------------------------------------------
-//
-void CIRSessionDb::CreateSessionIndexL()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::CreateSessionIndexL" );
-	TDbKeyCol sessionid(KID);
-	CDbKey* index = CDbKey::NewLC();
-	index->AddL(sessionid);
-	User::LeaveIfError(iSessionDb.CreateIndex( KSessionIndex, KSessionTable,
-		*index));
-	CleanupStack::PopAndDestroy(index);
-	IRLOG_DEBUG( "CIRSessionDb::CreateSessionIndexL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// CIRSessionDb::OpenDbL()
-// opening the data base 
-// ---------------------------------------------------------------------------
-//
- void CIRSessionDb::OpenDbL()
-	{
-	IRLOG_DEBUG( "CIRSessionDb::OpenDbL" );
-	CloseDb();
-	TInt error = KErrNone;
-	if( !BaflUtils::FileExists(iFsSession, iDbFile) )
-	    {
-	    //if file doesn't exist function leaves with error code
-	    //KErrNotFound
-	    error = KErrNotFound;
-	    User::LeaveIfError(error);
-	    }
-
-	error = iSessionDb.Open(iFsSession,iDbFile);	
-	if( error!=KErrNone )
-		{
-		//if database is failed to open then 
-		//function leaves
-		IRLOG_ERROR2( "CIRSessionDb::OpenDbL - Opening session database failed (%d)", error );
-		User::LeaveIfError(error);
-		}
-	if( iSessionDb.IsDamaged() || !iSessionDb.InTransaction() )
-		{
-		//if data base is damaged then 
-		//it tried to recover
-		//if recovery is not possible function leaves
-		error = iSessionDb.Recover();
-		if ( KErrNone == error)
-			{
-			//if recovered data base is compacted
-			error = iSessionDb.Compact();	
-			}
-	    User::LeaveIfError(error);	
-		}
-	IRLOG_DEBUG( "CIRSessionDb::OpenDbL - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CIRSessionDb::CreateDbL()
-// Creates both the dbms files 
-// calls CreateFavMasterTableL(),CreateFavUrlTableL
-// database filename
-// ---------------------------------------------------------------------------
-//
- void CIRSessionDb::CreateDbL(TFileName& aSession)
-	{
-	IRLOG_DEBUG( "CIRSessionDb::CreateDbL" );
-	CloseDb();
-	TInt error = iSessionDb.Replace(iFsSession,aSession);
-	if ( error != KErrNone )
-	    {
-	    IRLOG_ERROR2( "CIRSessionDb::CreateDbL - Creating session database failed (%d)", error );
-	    }
-	User::LeaveIfError(error);
-	CreateSessionTableL();
-	IRLOG_DEBUG( "CIRSessionDb::CreateDbL - Exiting." );
-	}
-
-
-
-
-
-
-
-
-
-
--- a/internetradio2.0/sessionlogsrc/irsessionlogger.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1224 +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 <coemain.h>
-#include <ezgzip.h>
-#include <sysutil.h>
-#include <utf.h>
-#include <etel3rdparty.h>
-#include <imcvcodc.h>
-#include "irdebug.h"
-#include "irreportsettings.h"
-#include "irsessiondb.h"
-#include "irsessionlogger.h"
-#include "irsessionloggerutility.h"
-#include "irsettings.h"
-#include "irnmslogdb.h"
-#include "irnmslogger.h"
-#include "irdbstatusobserver.h"
-#include "irphoneinfo.h"
-
-const TUint KFieldPosition = 5;
-const TInt KAmpMaxLength = 5;
-const TInt KFormatBuffMaxLength = 6;
-const TInt KMaxUrlSize = 256;
-
-const TUint KSessionLogGranularity = 4;
-const TUint KNmsLogGranularity = 5;
-
-const TUint KSessionLogThreshold = 5; // Session Log Maximum 15
-const TUint KNmsLogThreshold = 5;     // Nms Log Maximum 15
-
-// ---------------------------------------------------------------------------
-// Function: OpenL
-// Two phase constructor returns the instance of CIRReportGenerator
-// this is a single ton implementation
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRReportGenerator* CIRReportGenerator::OpenL()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::OpenL" );
-    CIRReportGenerator* reportGenerator = reinterpret_cast<CIRReportGenerator*>(Dll::Tls());
-    
-    if (reportGenerator)
-        {
-        User::LeaveIfError(reportGenerator->Open());
-	    IRLOG_INFO( "CIRReportGenerator::OpenL - Opened singleton for new user." );
-        }
-    else
-        {
-        reportGenerator = new (ELeave) CIRReportGenerator;
-        CleanupClosePushL(*reportGenerator);
-        reportGenerator->ConstructL();
-        User::LeaveIfError(Dll::SetTls(reportGenerator));
-        CleanupStack::Pop(reportGenerator);
-	    IRLOG_INFO( "CIRSessionLogger::OpenL - Created the CIRReportGenerator singleton." );
-        }
-	IRLOG_DEBUG( "CIRReportGenerator::OpenL - Exiting." );
-    return reportGenerator;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function: ~CIRReportGenerator
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRReportGenerator::~CIRReportGenerator()	
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::~CIRReportGenerator" );
-	
-	delete iImeiBase64;
-	iImeiBase64 = NULL;
-	
-	delete iPhoneInfo;
-	iPhoneInfo = NULL;
-	
-	//operation settings instance is removed
-	if( iSettingsData )
-		{
-		iSettingsData->Close(); // delete is handled like this.
-		}
-	
-	delete iSessionLog;
-	delete iNmsLog;
-	
-	delete iLogSessionDb;
-	delete iNmsLogDb;
-	
-	//session data is also removed
-	if (iSessionData)
-	    {
-	    iSessionData->ResetAndDestroy();
-	    }
-	delete iSessionData;
-	
-	//NmsLog data is also removed
-	if (iNmsLogData)
-	    {
-	    iNmsLogData->ResetAndDestroy();
-	    }
-	delete iNmsLogData;
-    
-	iBrowseLog.Close(); //browse log array is closed
-	iLogFile.Close();
-	//file session is closed
-	iFsSession.Close();
-	delete iPreviousSessionLog;
-	delete iPreviousNmsLog;
-	Dll::FreeTls();
-	IRLOG_DEBUG( "CIRReportGenerator::~CIRReportGenerator - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//	
-void CIRReportGenerator::ConstructL()		
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::ConstructL" );
-	iSessionEndCalled = 0;
-	//file session is connected
-	//Create the IROperation Settings Instance
-	iSettingsData = CIRSettings::OpenL();
-	
-	User::LeaveIfError(iFsSession.Connect());
-	
-	//session logger is created
-	iSessionLog = CIRSessionLogger::NewL();
-   	//session logger is created
-	iNmsLog = CIRNmsLogger::NewL();
-	
-    //session db is created
-    iLogSessionDb = CIRSessionDb::NewL();
-    //NmsLog db is created
-    iNmsLogDb = CIRNmsLogDb::NewL();
-    
-    iSessFile =iSettingsData->PrivatePath();
-	iSessFile.Append(KSession);
-  	TInt error = iLogSessionDb->CreateDbConditional(iSessFile);
-	if ( error )
-		{
-		iSessionDbCreationFailed = ETrue;
-		}
-	else
-		{
-		iSessionDbCreationFailed = EFalse;	
-		}
-  
-    iNmsLogFile =iSettingsData->PrivatePath();
-	iNmsLogFile.Append(KNmsLog);
-  	TInt nmsError = iNmsLogDb->CreateDbConditional(iNmsLogFile);
-	if ( nmsError )
-		{
-		iNmsDbCreationFailed = ETrue;
-		}
-	else
-		{
-		iNmsDbCreationFailed = EFalse;	
-		}
-  
-  	//session log for five session are to be stored
-  	//and is stored in session data  	
-	iSessionData = new (ELeave) CArrayPtrFlat<CIRSessionLogger>(KSessionLogGranularity);
-	iNmsLogData = new (ELeave) CArrayPtrFlat<CIRNmsLogger>(KNmsLogGranularity);
-		
-	iPhoneInfo = CPhoneInfo::NewL(this);
-	iPhoneInfo->StartUpdating();
-	
-	IRLOG_DEBUG( "CIRReportGenerator::ConstructL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CIRReportGenerator
-// default constructor
-// ---------------------------------------------------------------------------
-//
-CIRReportGenerator::CIRReportGenerator():iPhoneInfo(NULL),
-                                         iDbStatusObserver(NULL),
-                                         iNmsLogDbUpdated(EFalse),
-                                         iSessionLogDbUpdated(EFalse),
-                                         iUnComfirmedReportSent(EFalse),
-                                         iSessionLogUpdationFailed(EFalse),
-                                         iNmsLogUpdationFailed(EFalse),
-                                         iSessionDbCreationFailed(EFalse),
-                                         iNmsDbCreationFailed(EFalse),
-                                         iImeiBase64(NULL)
-	{
-	//No Implementation	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: LogServerResult
-// logs server connection result
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::LogServerResult(const TDesC& aUrl,TResponse aResult)	
-	{
-	iSessionLog->LogServerResult(aUrl,aResult);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: LogSongRecog
-// logs song recog
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::LogSongRecog()  
-    {
-    //taking the session start time in GMT    
-    iSongRecogTimestamp.UniversalTime();
-    TTimeIntervalSeconds offset(iSettingsData->TimeCorrection());
-    iSongRecogTimestamp -= offset;
-    iDate = iSongRecogTimestamp.DateTime();
-    TBuf<64> songRecogTimestamp;
-    FormatDateTime(songRecogTimestamp,iDate);
-    iSessionLog->LogSongRecog(songRecogTimestamp);
-    }
-
-// ---------------------------------------------------------------------------
-// Function: UpdateCurrentBrowseNetwork
-// logs network browsing
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateCurrentBrowseNetwork(TInt aNetwork)
-	{
-	iCurrentBrowseNetwork = aNetwork;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: LogBrowse
-// logs browse url and status information
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C void CIRReportGenerator::LogBrowse(const TDesC8& aUrl,TInt aStatus)	
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::LogBrowse" );
-	//browse url is copied
-	iRBrowseLog.iBrowseUrl.Copy(aUrl);
-	//time stamp in GMT is onbtained
-	iBrowseLogTimeStamp.UniversalTime();
-
-	TInt time_val = 0;
-    time_val = iSettingsData->TimeCorrection();
-	TTimeIntervalSeconds offset(time_val);
-
-	iBrowseLogTimeStamp -= offset;
-	iDate = iBrowseLogTimeStamp.DateTime();
-	//formated
-	FormatDateTime(iRBrowseLog.iTimeStamp,iDate);
-	_LIT(KFormat,"%d");
-	(iRBrowseLog.iCurrentNetwork).Format(KFormat,
-									iCurrentBrowseNetwork);	
-	//status is stored
-	iRBrowseLog.iStatus = aStatus;
-	TRAP_IGNORE(iBrowseLog.AppendL(iRBrowseLog))
-	IRLOG_DEBUG( "CIRReportGenerator::LogBrowse - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: SessionStartedL
-// starts a new session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::SessionStartedL()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL" );
-	//gets the session id for new session
-	iSessionLog->ResetResource();
-	
-	iSessionLog->UpdateSessionId(iSettingsData->GetLogRunningNo());
-	iSettingsData->SetLogRunningNoL();
-	iFileWritePos = 0;	
-	
-	iLogFilePath = iSettingsData->PrivatePath();
-	iLogFilePath.Append(KLogFileName);
-    //taking the session start time in GMT    
-	iSessionStartTime.UniversalTime();
-	iSessionLog->UpdateSessionStartGMTTime();
-	TTimeIntervalSeconds offset(iSettingsData->TimeCorrection());
-	iSessionStartTime -= offset;
-	iDate = iSessionStartTime.DateTime();
-	FormatDateTime(iSessionLog->StartTime(),iDate);
-	iSessionLog->UnMarkSession();
-	//collect the neccessary information	
-	CollectSettingsData();
-	iSessionLogUpdationFailed = EFalse;
-	//start adding the intial information in db	
-	IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL - Exiting." );	
-	}
-// ---------------------------------------------------------------------------
-// Function: NmsLogStartedL
-// starts a new nmslog
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::NmsLogStartedL()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL" );
-	iNmsTimestamp.UniversalTime();
-	TInt time_val = 0;
-	time_val = iSettingsData->TimeCorrection();
-	TTimeIntervalSeconds offset(time_val);
-
-	iNmsTimestamp -= offset;
-	iDate = iNmsTimestamp.DateTime();
-	//formated
-	FormatDateTime(iNmsLog->StartTime(),iDate);	
-	iNmsLogUpdationFailed = EFalse;
-	//start adding the intial information in db	
-	IRLOG_DEBUG( "CIRReportGenerator::SessionStartedL - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: SessionEnd
-// marks the a session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::SessionEndL( TBool aForcedTermination )
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::SessionEndL" );
-	iSessionEndCalled++;
-	//session end
-	if( aForcedTermination )
-		{
-		//forced ending of session log
-		ForcedSessionEndedL();
-		}
-	else
-		{
-		//unforced ending of session log
-		iSessionLog->EndLogging();
-		UnForceSessionEndedL(iSessionLog);	
-		}	
-
-	IRLOG_DEBUG( "CIRReportGenerator::SessionEndL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateTerminatedBy
-// updates the termination status
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateTerminatedBy(TTerminationStatus 
-	aTerminatedBy)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateTerminatedBy" );
-	iSessionLog->UpdateTerminationStatus(aTerminatedBy);		
-	}
-
-// ---------------------------------------------------------------------------
-// Function: GetConnectedFrom
-// connected information is stored
-// ---------------------------------------------------------------------------
-//	
-EXPORT_C void CIRReportGenerator::UpdateConnectedFrom(TConnectedFrom aConnectedFrom)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateConnectedFrom" );
-	iSessionLog->GetConnectedFrom(aConnectedFrom);
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: BrowseUrl
-// logs browse url and result
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::BrowseUrl(const TDesC& aBrowseUrl,
-													TInt aStatus)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::BrowseUrl" );
-	_LIT(KAmp,"&amp;");
-	TBuf8<KAmpMaxLength> amp;
-	amp.Copy(KAmp);	
-	TBuf8<KMaxUrlSize> url;
-	url.Copy(aBrowseUrl);
-	_LIT8(KAmpnd,"&");
-	TInt pos = url.Find(KAmpnd);
-	if(pos > 0)
-		{
-		url.Replace(pos,1,amp);	
-		}
-	LogBrowse(url,aStatus);
-	IRLOG_DEBUG( "CIRReportGenerator::BrowseUrl - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateChannelID
-// updates the channel id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateChannelID(TInt aChanneldID)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateChannelID" );
-	iSessionLog->UpdateChannelID(aChanneldID);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateCurrentNetwork
-// updates the current network
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateCurrentNetwork(TInt aCurrentNetwork)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateCurrentNetwork" );
-	iSessionLog->UpdateCurrentNetwork(aCurrentNetwork);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateHomeOperator
-// updates the home network
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateHomeOperator(TInt aHomeOperator)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateHomeOperator" );
-	iSessionLog->UpdateHomeOperator(aHomeOperator);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: MarkSessionStart
-// updates the termination status
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::MarkSessionStart()
-	{
-	iSessionStartTime.UniversalTime();
-
-	TInt time_val = 0;
-	time_val = iSettingsData->TimeCorrection();
-	TTimeIntervalSeconds offset(time_val);
-	
-	iSessionStartTime -= offset; 
-	iDate = iSessionStartTime.DateTime();
-	FormatDateTime(iSessionLog->StartTime(),iDate);
-	//setting session start time
-	iSessionLog->UpdateSessionStartGMTTime();
-	iSessionLog->MarkSession();		
-	if( iPreviousSessionLog )
-		{
-		//if previous session exist it added to the log
-		TRAP_IGNORE( UnForceSessionEndedL(iPreviousSessionLog) )
-		delete iPreviousSessionLog;
-		iPreviousSessionLog = NULL;	
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// Function: HandleStopEvents
-// function handles session state changes
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::HandleStopEvents(TBool aIsSessionProgressing )
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::HandleStopEvents" );
-	if( !aIsSessionProgressing )
-		{
-		iSessionLog->HandleStopEvents();
-		}
-	else
-		{
-		iSessionLog->HandleStartEvents();
-		}
-	IRLOG_DEBUG( "CIRReportGenerator::HandleStopEvents - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ReStorePreviousSession
-// restore the previous session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRReportGenerator::ReStorePreviousSession()
-	{
-	if( iPreviousSessionLog )
-		{
-		//if previous session exist that is restored
-		//ETrue is returned.
-		iSessionLog->GetBackedUp(*iPreviousSessionLog);
-		delete iPreviousSessionLog;
-		iPreviousSessionLog = NULL;
-		return ETrue;	
-		}
-	else
-		{
-		//if previous session doesn't exist EFalse is returned
-		return EFalse;	
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateConnectionType
-// updates the connection type
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateConnectionType(const TDesC& 
-	aConnectionType)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateConnectionType" );
-	iSessionLog->UpdateConnectionType(aConnectionType);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateNmsType
-// updates the connection type
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateNmsType(const TDesC& aNmsType)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateNmsType" );
-	iNmsLog->UpdateNmsType(aNmsType);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: SetDbStatusObserser
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::SetDbStatusObserser(MIRLogDbStatusObserver *aDbStatusObserver)
-{
-    iDbStatusObserver = aDbStatusObserver;
-}	
-
-// ---------------------------------------------------------------------------
-// Function: reportSent
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::ReportSent()
-{
-    iUnComfirmedReportSent = ETrue;
-}	
-
-
-// ---------------------------------------------------------------------------
-// Function : ReponseFromISDSObtained
-// This function is called when session log is successfully sent
-// removes all session log entries from sessiondb
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::ReponseFromISDSObtained()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::ReponseFromISDSObtained" );
-	iUnComfirmedReportSent = EFalse;
-	TRAP_IGNORE(iLogSessionDb->DeleteAllSessionL())
-	TRAP_IGNORE(iNmsLogDb->DeleteAllNmsLogL())
-	for(TInt i = 0; i < iBrowseLogsCntToXml; i++)
-		{
-		if(iBrowseLog.Count() > 0)
-			iBrowseLog.Remove(0);
-		}
-	}	
-
-// ---------------------------------------------------------------------------
-// Function: CollectSettingsData
-// collect information during starting of session
-// like irid, version information.
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::CollectSettingsData()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::CollectSettingsData" );
-	_LIT(KData,"1.0");
-	_LIT(KIRID,"NO IRID");
-	
-	
-
-		//gets irid from opsetting
-		TRAP_IGNORE( iIRId.Copy(iSettingsData->GetIRIDL()) );
-		//if length of irid is zero "no irid" is assigned
-		if((iIRId).Length() == 0)
-			{
-			iIRId.Copy(KIRID);
-			}
-		//version copied
-		iReportVersion.Copy(KData);
-	IRLOG_DEBUG( "CIRReportGenerator::CollectSettingsData - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: WriteToXmlL
-// gathers the information and generates sesion log file and zip file
-// file will be stored in private path
-// ---------------------------------------------------------------------------
-//	
-void CIRReportGenerator::WriteToXmlL()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteToXmlL" );	
-	//1. log file is created
-    User::LeaveIfError(iLogFile.Replace(iFsSession,iLogFilePath,EFileWrite));	
-	iLogFile.Seek(ESeekStart,iFileWritePos);
-	
-	
-    //2. Write file header.
-    iUniCodeBuf.Copy(KXmlHeader);
-    CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);	
-	WriteBufferToLogFile();
-	
-	//3. Write Version + IRID + IMEI
-	iUniCodeBuf.Copy(KRPSTARTTAG);
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	//3.1 Write Version
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,iReportVersion);
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	//3.2 Write IRID
-	RBuf tempIRID;
-	TRAP_IGNORE( tempIRID.Create(iSettingsData->GetIRIDL()) );
-	if((tempIRID).Length() != 0)
-		{
-		iIRId.Copy(tempIRID);
-		}
-	tempIRID.Close();
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,iIRId);
-    //3.3 Write IMEI
-	iFileWritePos = iUniCodeBuf.Find(KField);
-	if(NULL == iImeiBase64)
-	    {
-	    iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,KNullDesC);
-	    }
-	else
-	    {
-	    iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,*iImeiBase64);	    
-	    }    
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	WriteBufferToLogFile();
-	
-	//4. Write session log
-	if(!iSessionLogUpdationFailed)
-		{
-		for(TInt count = 0; count<(iSessionData->Count()); count++)
-			{
-			WriteSessionData(count);		
-			}
-		}
-	
-	//5. Write browse log			
-	WriteBrowseLog();
-
-	//6. Write nms log  
-	if(!iNmsLogUpdationFailed)
-		{
-		iUniCodeBuf.Copy(KNMSLOGSTARTTAG);
-		CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-		WriteBufferToLogFile();
-
-		for(TInt count = 0; count<(iNmsLogData->Count()); count++)
-			{
-			WriteNmsLogData(count);		
-			}
-		iUniCodeBuf.Copy(KNMSLOGENDTAG);
-		CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-		WriteBufferToLogFile();		
-		}
-
-	//7. Write file ending
-	iUniCodeBuf.Copy(KRPENDTAG);
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	WriteBufferToLogFile();
-	
-	iLogFile.Close();
-	ZipFileL();
-	
-	iBrowseLogsCntToXml = iBrowseLog.Count();
-	
-	IRLOG_DEBUG( "CIRReportGenerator::WriteToXmlL - Exiting." );
-	}
-// ---------------------------------------------------------------------------
-// Function: WriteNmsLogtoXmlL
-// logs nmsEvents to Xml file
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::WriteNmsLogtoXmlL()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogtoXmlL" );
-	if(iSessionEndCalled == 0)
-		{
-		ForcedSessionEndedL();
-		iSessionEndCalled++;
-		}
-	iNmsEventFlag = ETrue;
-	UnForceSessionEndedL(iSessionLog);
-	iNmsEventFlag = EFalse;
-	IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogtoXmlL - Leaving" );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: WriteSessionData
-// gathers session log data and writes to XML file
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::WriteSessionData(TInt aIndex)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteSessionData" );
-	
-	ASSERT( aIndex >= 0 && aIndex < iSessionData->Count() );
-	TBuf<KFormatBuffMaxLength> FormatBuff;
-	_LIT(KConvert,"%d");
-	
-	// 1. session start time is copied
-	iUniCodeBuf.Copy(KSESSIONSTARTTAG);
-	iFileWritePos =	iUniCodeBuf.Find(KField);	
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-		At(aIndex))->StartTime());
-	
-	// 2. session duration is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);	
-	TInt duration = (iSessionData->At(aIndex))->SessionDuration();
-	FormatBuff.Format(KConvert,duration);
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	
-	// 3. termination status is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-		At(aIndex))->TerminationStatus());
-	
-	// 4. connected from information is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-		At(aIndex))->ConnectedFrom());
-	
-	// 5. session id is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	FormatBuff.Format(KConvert,(iSessionData->At(aIndex))->SessionId());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	
-	// 6. channel id is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	FormatBuff.Format(KConvert,(iSessionData->At(aIndex))->ChannelID());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	
-	WriteBufferToLogFile();
-		
-	// 8. Write ServerResult    
-	TInt ServerResultCount = (iSessionData->At(aIndex))->
-		SessionData().Count();
-	for(TInt count=0; count < ServerResultCount;count++)
-		{
-		//channel server urls are copied for the session			
-		iUniCodeBuf.Copy(KSERVERRESULTTAG);
-		iFileWritePos =	iUniCodeBuf.Find(KField);
-		iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-		At(aIndex)->SessionData()[count].iServerUrl));
-			
-		//status is copied
-		iFileWritePos =	iUniCodeBuf.Find(KField);
-		iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-			At(aIndex)->SessionData()[count].iServerResult));
-		CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-		//writting the information to the xml file	
-		WriteBufferToLogFile();
-		}
-    
-	// 9. connection type is copied
-	iUniCodeBuf.Copy(KCONNECTIONTAG);
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-		At(aIndex))->ConnectionType());
-	
-	// 10. current network is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	FormatBuff.Format(KConvert,(iSessionData->At(aIndex))->
-			CurrentNetwork());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	
-    // 11. home operator is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	FormatBuff.Format(KConvert,(iSessionData->At(aIndex))->HomeOperator());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	
-	WriteBufferToLogFile();
-	
-    // 12. Write Song Recog Log
-    iUniCodeBuf.Copy(KSONGRECOGLOGSTARTTAG);	
-    CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-    WriteBufferToLogFile();	
-	
-    TInt songRecogLogCount = (iSessionData->At(aIndex))->
-        SongRecogLog().Count();
-    for(TInt count=0; count < songRecogLogCount; count++)
-        {        
-        iUniCodeBuf.Copy(KSONGRECOGEVENTTAG);
-        iFileWritePos = iUniCodeBuf.Find(KField);
-        iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iSessionData->
-        At(aIndex)->SongRecogLog()[count].iTimeStamp));
-        CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-        WriteBufferToLogFile();
-        }
-
-    iUniCodeBuf.Copy(KSONGRECOGLOGENDTAG);
-    CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-    WriteBufferToLogFile();
-    
-    // write ending tag </session>
-	iUniCodeBuf.Copy(KSESSIONENDTAG);
-	//tags are also written into xml file
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	WriteBufferToLogFile();
-	IRLOG_DEBUG( "CIRReportGenerator::WriteSessionData - Exiting." );			
-	}	
-
-// ---------------------------------------------------------------------------
-// Function: WriteBrowseLog
-// gathers browse log data and writes to XML file
-// ---------------------------------------------------------------------------
-//	
- void CIRReportGenerator::WriteBrowseLog()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteBrowseLog" );
-	//browse log
-	//browse log tag is written
-	iUniCodeBuf.Copy(KBROWSESTARTTAG);
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	WriteBufferToLogFile();
-	for(TInt count = 0; count < (iBrowseLog.Count());count++)
-		{
-		//browse log url is copied				
-		iUniCodeBuf.Copy(KBROWSETAG);
-		iFileWritePos =	iUniCodeBuf.Find(KField);
-		iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
-			(iBrowseLog).operator[](count).iBrowseUrl);
-		iFileWritePos =	iUniCodeBuf.Find(KField);
-		//browse log time stamp is copied
-		iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
-			(iBrowseLog).operator[](count).iTimeStamp);
-		iFileWritePos =	iUniCodeBuf.Find(KField);
-		//browse log current network is copied
-		iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,
-			(iBrowseLog).operator[](count).iCurrentNetwork);
-	    CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	    //browse log is written to xml
-		WriteBufferToLogFile();
-		}
-	
-	//browse log end tag is copied	
-	iUniCodeBuf.Copy(KBROWSEENDTAG);
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	WriteBufferToLogFile();
-	IRLOG_DEBUG( "CIRReportGenerator::WriteBrowseLog - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ZipFileL
-// generates the zip file from the input xml file
-// output file is in gzip format and is stored in private path
-// ---------------------------------------------------------------------------
-//	
- void CIRReportGenerator::ZipFileL()
- 	{
- 	IRLOG_DEBUG( "CIRReportGenerator::ZipFileL" );
- 	//input file is the xml file in private path and output is a gzip file stored 
- 	//private path
- 	//xml file
-	RFile iplogfile;
-	//getting path of zip file
-	TFileName gzipfilepath = iSessionLog->FileName();
-	gzipfilepath.Append(KGZipLogFileName);
-	
-		iLogFilePath = iSettingsData->PrivatePath();
-		iLogFilePath.Append(KLogFileName);
-
-	//input file is opened
-	TInt error = iplogfile.Open(iFsSession,iLogFilePath,EFileStream | EFileRead);
-	CleanupClosePushL( iplogfile );
-	
-	if( KErrNone != error )
-		{
-		User::LeaveIfError(error);	
-		}
-	
-	//generating zip file
-	
-	TInt fileSize(0);
-	TInt err = iplogfile.Size( fileSize );
-	
-	if(!err)
-		{	
-		TParse zipParse;
-		zipParse.Set( iLogFilePath, NULL, NULL );
-		
-		TPtrC zipDrive = zipParse.Drive();
-		
-		TChar driveChar = zipDrive[0];
-		TInt driveNum(0);
-		RFs::CharToDrive( driveChar, driveNum );
-		
-		TDriveInfo driveInfo;
-		TInt driveErr = iplogfile.Drive( driveNum, driveInfo );
-	       if( !driveErr
-	    	&& driveNum != EDriveZ
-	    	&& !SysUtil::DiskSpaceBelowCriticalLevelL(
-	    			 &CCoeEnv::Static()->FsSession(), iUTF8Buffer.Size(), driveNum ) )
-			{
-			// disk space is not below critical level
-			// Next generate the zip file
-			CEZFileToGZip* zip = CEZFileToGZip::NewLC(iFsSession,gzipfilepath, iplogfile);
- 	while(zip->DeflateL())
-		{
-		}
-	CleanupStack::PopAndDestroy(zip);
-			}
-		else
-			{
-			// disk space is below critical level
-			// Do not generate the zip file
-			}
-		}
-
-	//file is closed 
-	CleanupStack::PopAndDestroy(); // iplogfile
-	IRLOG_DEBUG( "CIRReportGenerator::ZipFileL - Exiting." );	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: FormatDateTime
-// formats the date time given in "%d-%d-%d %d:%d:%d GMT\n" format
-// copies the result to a descriptor
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::FormatDateTime(TDes& aBuffer,TDateTime aDateTime)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::FormatDateTime" );          
-	_LIT(KFormatTxt,"%d-%d-%d %d:%d:%d GMT\n");
-    aBuffer.Format(KFormatTxt,aDateTime.Year(),TInt(aDateTime.Month()+1), 
-		//Format the month as a TInt to preserve locale independence
-        //aDateTime.Day()+1, 
-        aDateTime.Day()+1, 
-        // Day and month ranges begin at zero (0-30 and 0-11), 
-        // so add one when formatting
-        aDateTime.Hour(), aDateTime.Minute(), aDateTime.Second()
-        //aDateTime.MicroSecond()
-        );
-    IRLOG_DEBUG( "CIRReportGenerator::FormatDateTime - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: WriteBufferToLogFile
-// Writes the content of iUTF8Buffer to iLogFile
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::WriteBufferToLogFile()
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteBufferToLogFile" );   
-	// Get the drive where iLogFile is located.
-
-	TInt driveNumber(0);
-	TDriveInfo driveInfo;
-	
-	TInt err = iLogFile.Drive( driveNumber, driveInfo );
-
-	// Write the log file only if:
-	// Drive was fetched successflly,
-	// the drive is not Z
-	// and free disk space is not below critical level (128kB)
-
-	if( !err && driveNumber!=EDriveZ )
-		{
-		TBool ret = ETrue;
-	    TRAP_IGNORE( ret = SysUtil::DiskSpaceBelowCriticalLevelL( 
-	    &CCoeEnv::Static()->FsSession(),iUTF8Buffer.Size(), driveNumber ))
-	    if( !ret )
-			{
-			iLogFile.Write( iUTF8Buffer );
-			}
-		else
-			{
-			// Do not write the session log.
-			}
-		}
-	else
-		{
-		// Do not write the session log.
-		}
-	IRLOG_DEBUG( "CIRReportGenerator::WriteBufferToLogFile - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UnForceSessionEndedL
-// Handles Unforced end of the session
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::UnForceSessionEndedL( CIRSessionLogger* aSession )
-	{
-	// 1. retrieve session log from db
-	if(iSessionDbCreationFailed)
-		{
-		iSessionLogUpdationFailed = ETrue;	
-		}
-	else
-		{
-		if(iNmsEventFlag)
-			{
-			TRAPD(error,
-			//count is stored	
-			iLogSessionDb->GetAllSessionL(*iSessionData);
-			);
-			if(error)
-				{
-				iSessionLogUpdationFailed = ETrue;	
-				}	
-			}
-		else
-			{
-			TRAPD( error,
-                    //loads the information into the db at the end of the session
-                    iLogSessionDb->AddSessionStartL(*aSession);
-                    //count is stored	
-                    iLogSessionDb->GetAllSessionL(*iSessionData);
-                 );
-            if(error)
-                {
-                iSessionLogUpdationFailed = ETrue;	
-                }	
-            else
-			    {
-                TInt count = iSessionData->Count();
-                if((count>0) && (count%KSessionLogThreshold == 0))
-                    {
-                    iSessionLogDbUpdated = ETrue;
-                    }
-                }
-			}
-		}
-
-    // 2. retrieve nms log from db	
-	if(iNmsDbCreationFailed)
-		{
-		iNmsLogUpdationFailed = ETrue;	
-		}
-	else
-		{
-		if(!iNmsEventFlag)
-			{
-			TRAPD( error, iNmsLogDb->GetAllNmsLogL(*iNmsLogData) );
-			if(error)
-				{
-				iNmsLogUpdationFailed = ETrue;	
-				}	
-			}
-		else
-			{
-			TRAPD( error,
-                    //loads the information into the db at the end of the session
-                    iNmsLogDb->AddNmsLogStartL(*iNmsLog);
-                    //count is stored	
-                    iNmsLogDb->GetAllNmsLogL(*iNmsLogData);
-                 );
-			if(error)
-				{
-				iNmsLogUpdationFailed = ETrue;	
-				}
-            else
-                {
-                TInt count = iNmsLogData->Count();
-                if((count>0) && (count%KNmsLogThreshold == 0))
-                    {
-                    iNmsLogDbUpdated = ETrue;
-                    }
-                }
-			}
-		}
-
-	//xml file is created and is zipped
-	WriteToXmlL();
-	
-	if( iDbStatusObserver && 
-	       ( iNmsLogDbUpdated ||
-	         iSessionLogDbUpdated ||
-	         iUnComfirmedReportSent
-	       )
-	  )
-	    {
-	  	iDbStatusObserver->LogDbNeedFlush();
-	  	iNmsLogDbUpdated = EFalse;
-	  	iSessionLogDbUpdated = EFalse;
-	    }
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ForcedSessionEndedL
-// Handles forced end of the session
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::ForcedSessionEndedL()
-	{
-	iSessionLog->EndLogging();
-	iPreviousSessionLog = CIRSessionLogger::NewL();
-	iPreviousSessionLog->GetBackedUp(*iSessionLog);
-	iPreviousNmsLog = CIRNmsLogger::NewL();
-	iPreviousNmsLog->GetBackedUp(*iNmsLog);
-	}
-
-/**
- * The following methods are for Nms Event Usage Logging 
- */
-// ---------------------------------------------------------------------------
-// Function: UpdateNmsCurrentNetwork
-// logs network during Music Store launching
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateNmsCurrentNetwork(TInt aNetwork)
-	{
-	iNmsLog->UpdateCurrentNetwork(aNetwork);
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: UpdateNmsHomeOperator
-// logs network during Music Store Launching
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateNmsHomeOperator(TInt aNetwork)
-	{
-	iNmsLog->UpdateHomeOperator(aNetwork);
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: UpdateNmsChannelID
-// updates the channel id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRReportGenerator::UpdateNmsChannelID(TInt aChanneldID)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::UpdateNmsChannelID" );
-	iNmsLog->UpdateChannelID(aChanneldID);
-	}
-
-// ---------------------------------------------------------------------------
-// Function: WriteNmsLogData
-// gathers Nmslog data and writes to XML file
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::WriteNmsLogData(TInt aIndex)
-	{
-	IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogData" );
-	TBuf<KFormatBuffMaxLength> FormatBuff;
-	_LIT(KConvert,"%d");
-
-	//NmsEvent Tag is written
-	iUniCodeBuf.Copy(KNMSEVENTTAG);
-
-	iFileWritePos =	iUniCodeBuf.Find(KField);	
-	//Nms Event timestamp is copied
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iNmsLogData->
-	At(aIndex))->StartTime());
-
-	//channel id is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-    ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
-	FormatBuff.Format(KConvert,(iNmsLogData->At(aIndex))->ChannelID());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-
-	//type is copied
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,(iNmsLogData->
-	At(aIndex))->NmsType());
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-
-	//current network is copied
-	ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
-	FormatBuff.Format(KConvert,(iNmsLogData->At(aIndex))->
-	CurrentNetwork());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-	iFileWritePos =	iUniCodeBuf.Find(KField);
-
-	//home operator is copied
-	ASSERT( aIndex >= 0 && aIndex < iNmsLogData->Count() );
-	FormatBuff.Format(KConvert,(iNmsLogData->At(aIndex))->HomeOperator());
-	iUniCodeBuf.Replace(iFileWritePos,KFieldPosition,FormatBuff);
-
-	CnvUtfConverter::ConvertFromUnicodeToUtf8(iUTF8Buffer,iUniCodeBuf);
-	//writting the information to the xml file	
-	WriteBufferToLogFile();
-
-	IRLOG_DEBUG( "CIRReportGenerator::WriteNmsLogData - Exiting." );
-	}	
-
-// ---------------------------------------------------------------------------
-// Function: ImeiUpdated
-// From MIRPhoneInfoObserver
-// ---------------------------------------------------------------------------
-//
-void CIRReportGenerator::ImeiUpdatedL(const TDesC& aImei)
-    {
-    if(0 == aImei.Length())
-        {
-        iPhoneInfo->StartUpdating();
-        return;
-        }
-    // prepare base64 codec input
-    HBufC8 *imei = HBufC8::NewLC( aImei.Length() );
-    TPtr8 imeiPtr = imei->Des();    
-    imeiPtr.Copy(aImei);
-    
-    // prepare base64 codec output
-    HBufC8 *buffer = HBufC8::NewLC( aImei.Length() * 2 );
-    TPtr8 bufferPtr = buffer->Des();
-    
-    // Encoding
-    TImCodecB64 base64Codec;
-    base64Codec.Initialise();
-    base64Codec.Encode(*imei, bufferPtr);
-    
-    // store to data member
-    if(NULL == iImeiBase64)
-        {
-        iImeiBase64 = HBufC16::NewL( aImei.Length() * 2 );
-        }
-    TPtr imeiBase64Ptr = iImeiBase64->Des();
-    imeiBase64Ptr.Copy(bufferPtr);
-    
-    CleanupStack::PopAndDestroy(buffer);
-    CleanupStack::PopAndDestroy(imei);
-    }
-
--- a/internetradio2.0/sessionlogsrc/irsessionloggerutility.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,832 +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 "irdebug.h"
-#include "irreportsettings.h"
-#include "irsessionloggerutility.h"
-
-const TInt KMaxUrlLength = 256;
-const TInt KMaxTimeStampLength = 64;
-
-// ============================== Function declaration =======================
-
-// ---------------------------------------------------------------------------
-// Function: NewL
-// Two phase constructor returns the instance of CIRSessionLogger
-// ---------------------------------------------------------------------------
-//
-CIRSessionLogger* CIRSessionLogger::NewL()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::NewL" );
-	CIRSessionLogger* self = CIRSessionLogger::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRSessionLogger::NewL - Exiting." );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function: NewLC
-// Two phase constructor creates the instance of CIRSessionLogger
-// ---------------------------------------------------------------------------
-//
-CIRSessionLogger* CIRSessionLogger::NewLC()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::NewLC" );
-	CIRSessionLogger* self = new (ELeave) CIRSessionLogger;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRSessionLogger::NewLC - Exiting." );
-	return self;
-	}	
-
-// ---------------------------------------------------------------------------
-// Function: ~CIRSessionLogger
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRSessionLogger::~CIRSessionLogger()	
-	{
-	iRServer.Reset();
-	iRServer.Close();	
-	iRSongRecogLog.Reset();
-	iRSongRecogLog.Close();	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConstructL
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::ConstructL()		
-	{
-	//No implementation
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CIRSessionLogger
-// default constructor
-// ---------------------------------------------------------------------------
-//
-CIRSessionLogger::CIRSessionLogger()	
-	{
-	//No implementation
-	}
-
-// ---------------------------------------------------------------------------
-// Function: EndLogging
-// logs the termination condition
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::EndLogging()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::EndLogging" );	
-	if( iSessionMarked )
-		{
-		HandleStopEvents();
-		}
-	else
-		{
-		iDuration = 0;	
-		}
-	switch(iTerminateBy)
-		{
-		case EUserTerminated:
-			{
-			//error condition for termination is disconnected by the user
-			iTerminatedBy.Copy(KUSER);
-			break;
-			}
-		case ENoConnectionToServer:
-			{
-			//error condition for termination is no connection to server			
-			iTerminatedBy.Copy(KNOCONNECTIONTOSERVER);
-			break;
-			}
-		case ENoConnectionToNetwork:
-			{
-			//error condition for termination is no connection to network
-			iTerminatedBy.Copy(KNOCONNECTIONTONETWORK);
-			break;
-			}
-		default:
-			{
-			break;	
-			}								
-		}
-	IRLOG_DEBUG( "CIRSessionLogger::EndLogging - Exiting." );		
-	}
-
-	
-// ---------------------------------------------------------------------------
-// Function: HandleStopEvents
-// logs the termination condition
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::HandleStartEvents()
-	{
-	if( !iIsSessionProgressing )
-		{
-		iActiveSessionTime.UniversalTime();
-		iIsSessionProgressing = ETrue;
-		}
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: HandleStartEvents
-// logs the termination condition
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::HandleStopEvents()
-	{
-	if( iIsSessionProgressing )
-		{
-		TTime endtime;	
-		//endtime has session end time in GMT format
-		endtime.UniversalTime();
-		//session duration compensation value is calculated 
-		//as difference between Compensation Time [time when it stopped] and
-		//end time
-		TTimeIntervalSeconds timeelaspsed;
-		endtime.SecondsFrom(iActiveSessionTime,timeelaspsed);
-		//compensation value session duration is converted to integer
-		iDuration += timeelaspsed.Int();
-		iIsSessionProgressing = EFalse;
-		}
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: MarkSession
-// Marks the start of a session
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::MarkSession()
-	{
-	iSessionMarked = ETrue;	
-	iDuration = 0;
-	HandleStartEvents();
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UnMarkSession
-// UnMarks the start of a sessiom
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UnMarkSession()
-	{
-	iSessionMarked = EFalse;	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: SessionMarked
-// Returns the session mark flag
-// ---------------------------------------------------------------------------
-//	
-TBool CIRSessionLogger::SessionMarked()
-	{
-	return iSessionMarked;	
-	}	
-// ---------------------------------------------------------------------------
-// Function: ResetResource
-// reset data from channel server
-// ---------------------------------------------------------------------------
-//	
-void CIRSessionLogger::ResetResource()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::ResetResource" );
-	//reseting of resource
-	iRServer.Reset();
-	iRSongRecogLog.Reset();
-	}
-// ---------------------------------------------------------------------------
-// Function: IsSessionProgressing
-// checks whether session is progressing or not
-// ---------------------------------------------------------------------------
-//
-TBool CIRSessionLogger::IsSessionProgressing()
-	{
-	return iIsSessionProgressing;	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: CompensationTime
-// Returns the session mark flag
-// ---------------------------------------------------------------------------
-//	
-TTime CIRSessionLogger::CompensationTime()
-	{
-	return iActiveSessionTime;	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: LogServerResult
-// logs server connection result
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::LogServerResult(const TDesC& aUrl,TResponse aResponse)
-	{
-	IRLOG_INFO3( "CIRSessionLogger::LogServerResult - %S (%d)", &aUrl, aResponse );
-	TIRServer tempServer;
-	if( aUrl.Length() <= KMaxUrlLength )
-		{
-		//channel server url is copied
-		tempServer.iServerUrl.Copy(aUrl);
-		}
-	switch(aResponse)
-		{
-		//connected to the channel server
-		case EIRConnected:
-			{
-			tempServer.iServerResult.Copy(KConnected);
-			}
-			break;
-		//not connected to channel server
-		//since server is not responding
-		case EIRFull:
-			{
-			tempServer.iServerResult.Copy(KFull);
-			}
-			break;
-		//not connected to channel server
-		//since connection time out 	
-		case EIRConnTimeOut:
-			{
-			tempServer.iServerResult.Copy(KConnTimeOut);
-			}
-			break;
-		//not connected to channel server (may be invalid urls)
-		case EIRConnFailed:
-			{
-			tempServer.iServerResult.Copy(KConnectionFailed);
-			}
-			break;
-		default:
-			{
-			break;	
-			}	
-		}
-	UpdateSessionLog(tempServer);
-	IRLOG_DEBUG( "CIRSessionLogger::LogServerResult - Exiting." );			
-	}
-
-// ---------------------------------------------------------------------------
-// Function: LogSongRecog
-// logs song recog
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::LogSongRecog(const TDesC& aTimeStamp)
-    {
-    if( aTimeStamp.Length() <= KMaxTimeStampLength )
-        {
-        TIRSongRecogLog tempSongRecogLog;
-        tempSongRecogLog.iTimeStamp.Copy(aTimeStamp);   
-        TRAP_IGNORE(iRSongRecogLog.AppendL(tempSongRecogLog));
-        }    
-
-    }
-
-// ---------------------------------------------------------------------------
-// Function: GetConnectedFrom
-// connected information is stored
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::GetConnectedFrom(TConnectedFrom aConnectedFrom)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom" );
-	switch(aConnectedFrom)
-		{
-		case EIRIsds:
-			{
-			iConnectedFrom.Copy(KISDS);
-			break;
-			}
-		case EIRPresetAdhoc:
-			{
-			iConnectedFrom.Copy(KPRESETADHOC);
-			break;
-			}
-		case EIRPresetIsds:
-			{
-			iConnectedFrom.Copy(KPRESETISDS);
-			break;
-			}
-        case EIRHistoryAdhoc:
-            {
-            iConnectedFrom.Copy(KHISTORYADHOC);
-            break;
-            }
-        case EIRHistoryIsds:
-            {
-            iConnectedFrom.Copy(KHISTORYISDS);
-            break;
-            }
-        case EIRAdhocManual:
-            {
-            iConnectedFrom.Copy(KADHOCMANUAL);
-            break;
-            }
-        case EIRAdhocExternal:
-            {
-            iConnectedFrom.Copy(KADHOCEXTERNAL);
-            break;
-            }            
-		default:
-			{
-			break;	
-			}									
-		}
-	IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateSessionLog
-// update the session logs
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateSessionLog(TIRServer& aServer)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionLog" );
-
-    TBool found = EFalse;
-
-    // Only one entry per URL may be in the session log.
-	for ( TInt i = 0; i < iRServer.Count() && !found; i++ )
-	    {
-        TIRServer& server = iRServer[i];
-        if ( server.iServerUrl == aServer.iServerUrl )
-            {
-            // If an entry for this URL already exists, it is replaced
-            // by the newer status code.
-            server = aServer;
-            found = ETrue;
-            }
-	    }
-	
-	if ( !found )
-	    {
-    	// Creates a new entry into the session log for this URL.
-    	TRAP_IGNORE(iRServer.AppendL(aServer))	
-	    }
-	}
-
-
-// ---------------------------------------------------------------------------
-// Function: UpdateSessionId
-// updates the session id
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateSessionId(TInt aSessionId)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionId" );
-	iSessionId = aSessionId;	
-	}
-
-	
-// ---------------------------------------------------------------------------
-// Function: UpdateTerminationStatus
-// updates the termination status
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateTerminationStatus(TTerminationStatus aTerminatedBy)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateTerminationStatus" );
-	iTerminateBy = aTerminatedBy;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateChannelID
-// updates the channel id
-// ---------------------------------------------------------------------------
-//	
-void CIRSessionLogger::UpdateChannelID(TInt aChanneldID)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateChannelID" );
-	iChannelId = aChanneldID;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateCurrentNetwork
-// updates the current network
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateCurrentNetwork(TInt aCurrentNetwork)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateCurrentNetwork" );
-	iSessionCurrentNetwork = aCurrentNetwork;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateHomeOperator
-// updates the home network
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateHomeOperator(TInt aHomeOperator)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateHomeOperator" );
-	iHomeOperator = aHomeOperator;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: UpdateConnectionType
-// updates the connection type
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateConnectionType(const TDesC& aConnectionType)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::UpdateConnectionType" );
-	iSessionConnectionType.Copy(aConnectionType);
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : UpdateSessionStartGMTTime
-// function updates session start time with current GMT time
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::UpdateSessionStartGMTTime()
-	{
-	iStartSessionTime.UniversalTime();	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: TerminationStatus
-// returns termination status
-// ---------------------------------------------------------------------------
-//
-TDesC& CIRSessionLogger::TerminationStatus()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::TerminationStatus" );
-	return iTerminatedBy;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ChannelID
-// returns the channel id
-// ---------------------------------------------------------------------------
-//	
-TInt CIRSessionLogger::ChannelID() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::ChannelID" );
-	return iChannelId;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: CurrentNetwork
-// returns the Current Network
-// ---------------------------------------------------------------------------
-//	
-TInt CIRSessionLogger::CurrentNetwork() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::CurrentNetwork" );
-	return iSessionCurrentNetwork;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: HomeOperator
-// returns the home network
-// ---------------------------------------------------------------------------
-//
-TInt CIRSessionLogger::HomeOperator() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::HomeOperator" );
-	return iHomeOperator;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConnectionType
-// returns the connection type
-// ---------------------------------------------------------------------------
-//	
-TDesC& CIRSessionLogger::ConnectionType()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::ConnectionType" );
-	return iSessionConnectionType;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: StartTime
-// returns the start time
-// ---------------------------------------------------------------------------
-//	
-TDes& CIRSessionLogger::StartTime()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::StartTime" );
-	return iStartTime;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: ConnectionType
-// returns the connection type
-// ---------------------------------------------------------------------------
-//	
-TDesC& CIRSessionLogger::ConnectedFrom()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::ConnectedFrom" );
-	return iConnectedFrom;
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: SessionId
-// returns the session id
-// ---------------------------------------------------------------------------
-//	
-TInt CIRSessionLogger::SessionId() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::SessionId" );
-	return iSessionId;
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: SessionDuration
-// returns the duration of the session
-// ---------------------------------------------------------------------------
-//	
-TInt CIRSessionLogger::SessionDuration() const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::SessionDuration" );
-	return iDuration;
-	}
-
-// ---------------------------------------------------------------------------
-// Function: FileName
-// returns file name
-// ---------------------------------------------------------------------------
-//
-TFileName CIRSessionLogger::FileName()
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::FileName" );
-	return iFilePath;	
-	}
-
-// ---------------------------------------------------------------------------
-// Function: DateTime
-// returns session start time
-// ---------------------------------------------------------------------------
-//
-TTime CIRSessionLogger::DateTime()
-	{
-	return iStartSessionTime;	
-	}
-	
-
-// ---------------------------------------------------------------------------
-//  Function: SessionData
-//  function returns instance session log array
-// ---------------------------------------------------------------------------
-//
-const RArray<TIRServer>& CIRSessionLogger::SessionData()const
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::SessionData" );
-	return iRServer;	
-	}
-
-// ---------------------------------------------------------------------------
-//  Function: SongRecogLog
-//  function returns instance song recog log array
-// ---------------------------------------------------------------------------
-//
-const RArray<TIRSongRecogLog>& CIRSessionLogger::SongRecogLog()const
-    {
-    IRLOG_DEBUG( "CIRSessionLogger::SongRecogLog" );
-    return iRSongRecogLog;    
-    }
-
-// ---------------------------------------------------------------------------
-//  Function: DurationValue
-//  function returns duration value
-// ---------------------------------------------------------------------------
-//
-TTimeIntervalSeconds CIRSessionLogger::DurationValue()
-	{
-	return iDurationValue;	
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: GetBackedUp
-// Back up the session log of a session
-// ---------------------------------------------------------------------------
-//	
-void CIRSessionLogger::GetBackedUp( CIRSessionLogger& aSession )
-	{
-	//copies the file path
-	iFilePath = aSession.FileName();
-	//session start time
-	iStartSessionTime = aSession.DateTime();
-	//duration 
-	iDurationValue = aSession.DurationValue();
-	//start time 
-	iStartTime.Copy( aSession.StartTime() );
-	//termination status
-	iTerminatedBy.Copy( aSession.TerminationStatus() );
-	//connected from information
-	iConnectedFrom.Copy( aSession.ConnectedFrom() );
-	//connection type
-	iSessionConnectionType.Copy( aSession.ConnectionType() );
-	//session duration
-	iDuration = aSession.SessionDuration();
-	//state of the player
-	iIsSessionProgressing = aSession.IsSessionProgressing();
-	//Compensation time
-	iActiveSessionTime = aSession.CompensationTime();
-	//session id
-	iSessionId = aSession.SessionId();
-	//channel id
-	iChannelId = aSession.ChannelID();
-	//home operator
-	iHomeOperator = aSession.HomeOperator();
-	//current network
-	iSessionCurrentNetwork = aSession.CurrentNetwork();
-	//session mark checking flag
-	iSessionMarked = aSession.SessionMarked();
-	
-	ResetResource();
-	//getting session data	
-	for(TInt iter = 0 ;iter < aSession.SessionData().Count(); iter++)
-		{
-		//session data
-		iRServer.Append(aSession.SessionData().operator[](iter));
-		}
-    //getting song recog log data  
-    for(TInt iter = 0 ;iter < aSession.SongRecogLog().Count(); iter++)
-        {
-        //song recog log data
-        iRSongRecogLog.Append(aSession.SongRecogLog().operator[](iter));
-        }	
-	}
-			
-// ---------------------------------------------------------------------------
-// Function: ExternalizeL
-// externialize the stream to the given stream
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::ExternalizeL(RWriteStream& aWriteStream)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL" );
-	TInt length;
-	//start time
-	length = iStartTime.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iStartTime,length);
-	
-	//connected from
-	length = iConnectedFrom.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iConnectedFrom,length);
-	
-	//session id
-	aWriteStream.WriteInt32L(iSessionId);
-	
-	//connection type
-	length = iSessionConnectionType.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iSessionConnectionType,length);
-	
-	//channel id
-	aWriteStream.WriteInt32L(iChannelId);
-	
-	//current network
-	aWriteStream.WriteInt32L(iSessionCurrentNetwork);
-	
-	//home operator
-	aWriteStream.WriteInt32L(iHomeOperator);
-	
-	//duration
-	aWriteStream.WriteInt32L(iDuration);
-	
-	//terminated by
-	length = iTerminatedBy.Length();
-	aWriteStream.WriteInt32L(length);
-	aWriteStream.WriteL(iTerminatedBy,length);
-	
-	//count
-	aWriteStream.WriteInt32L(iRServer.Count());
-	
-	//session duration
-	//Session Data
-	for(TInt iter=0;iter<iRServer.Count();iter++)
-		{
-		//channel Server Url;
-		length = iRServer[iter].iServerUrl.Length();
-		aWriteStream.WriteInt32L(length);
-		aWriteStream.WriteL(iRServer[iter].iServerUrl,length);	
-		//channel server result
-		length = iRServer[iter].iServerResult.Length();
-		aWriteStream.WriteInt32L(length);
-		aWriteStream.WriteL(iRServer[iter].iServerResult,length);
-		//count
-		aWriteStream.WriteInt32L(iRServer[iter].iCount);
-		}
-	
-    //count
-    aWriteStream.WriteInt32L(iRSongRecogLog.Count());
-    
-    //session duration
-    //Session Data
-    for(TInt iter=0;iter<iRSongRecogLog.Count();iter++)
-        {
-        //channel Server Url;
-        length = iRSongRecogLog[iter].iTimeStamp.Length();
-        aWriteStream.WriteInt32L(length);
-        aWriteStream.WriteL(iRSongRecogLog[iter].iTimeStamp,length);  
-        }	
-	IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-// Function: InternalizeL
-// gets the data from the stream
-// ---------------------------------------------------------------------------
-//
-void CIRSessionLogger::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG( "CIRSessionLogger::InternalizeL" );
-	TInt length;
-	
-	//Start Time
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iStartTime,length);
-	
-	//Connected From	
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iConnectedFrom,length);
-	
-	//Session Id
-	iSessionId=aReadStream.ReadInt32L();
-	
-	//Session Connection Type
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iSessionConnectionType,length);
-	
-	//Channel Id
-	iChannelId = aReadStream.ReadInt32L();
-	
-	//Session Current Network
-	iSessionCurrentNetwork = aReadStream.ReadInt32L();
-	
-	//Home Operator
-	iHomeOperator = aReadStream.ReadInt32L();
-	
-	//Duration
-	iDuration = aReadStream.ReadInt32L();
-	
-	//Terminated By
-	length = aReadStream.ReadInt32L();
-	aReadStream.ReadL(iTerminatedBy,length);
-	
-	//count
-	TInt count = aReadStream.ReadInt32L();
-	//Session Data
-	iRServer.Reset();
-	for(TInt iter=0;iter<count;iter++)
-		{
-		TIRServer hold;
-		
-		//Server Url
-		length = aReadStream.ReadInt32L();
-		hold.iServerUrl.Zero();
-		aReadStream.ReadL(hold.iServerUrl,length);
-
-		//Server Result
-		length = aReadStream.ReadInt32L();
-		hold.iServerResult.Zero();
-		aReadStream.ReadL(hold.iServerResult,length);
-		
-		//Count
-		hold.iCount = aReadStream.ReadInt32L();
-		iRServer.Append(hold);
-		}
-
-    //count
-    count = aReadStream.ReadInt32L();	
-    //Song Recog Data
-    iRSongRecogLog.Reset();
-    for(TInt iter=0;iter<count;iter++)
-        {
-        TIRSongRecogLog hold;
-        
-        //Server Url
-        length = aReadStream.ReadInt32L();
-        hold.iTimeStamp.Zero();
-        aReadStream.ReadL(hold.iTimeStamp,length);
-        
-        iRSongRecogLog.Append(hold);
-        }
-    
-	IRLOG_DEBUG( "CIRSessionLogger::InternalizeL - Exiting." );
-	}
--- a/internetradio2.0/settingsinc/ircodecmanager.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Maintains the set of supported codecs 
-*
-*/
-
-
-#ifndef C_IRCODECMANAGER_H
-#define C_IRCODECMANAGER_H
-
-#include <sounddevice.h>
-
-/**
- *  Maintains the list of supported codecs in a terminal.
- * 
- *
- */
-NONSHARABLE_CLASS( CIRCodecManager ): public CBase, public MDevSoundObserver
-    {
-public:
-    /**
-     * Two-phased constructor.
-     * @return Instance of CIRCodecManager
-     */
-    static CIRCodecManager* NewL();
-
-    /**
-     * Two-phased constructor.
-     * @return Instance of CIRCodecManager
-     */
-    static CIRCodecManager* NewLC();
-    
-    /**
-     * Destructor.
-     */
-    ~CIRCodecManager();
-
-    /**
-     * Tells if the codec provided as argument is supported by the terminal 
-     * and by Internet Radio.
-     * 
-     * @param aCodec The codec that's support is tested.
-     * @return ETrue if the codec is supported, EFalse if not.
-     */
-    TBool IsSupportedCodec( TFourCC aCodec ) const;
-    
-private:
-    /**
-     * C++ Default constructor.
-     */
-    CIRCodecManager();
-
-    /**
-     * Second phase constructor
-     */
-    void ConstructL();
-
-private: // From MDevSoundObserver
-    /**
-     * @see MDevSoundObserver::InitializeComplete
-     */
-    void InitializeComplete(TInt aError);
-    
-    /**
-     * @see MDevSoundObserver::ToneFinished
-     */
-    void ToneFinished(TInt aError);
-    
-    /**
-     * @see MDevSoundObserver::BufferToBeFilled
-     */
-    void BufferToBeFilled(CMMFBuffer* aBuffer);
-
-    /**
-     * @see MDevSoundObserver::PlayError
-     */
-    void PlayError(TInt aError);
-
-    /**
-     * @see MDevSoundObserver::BufferToBeEmptied
-     */
-    void BufferToBeEmptied(CMMFBuffer* aBuffer);
-
-    /**
-     * @see MDevSoundObserver::RecordError
-     */
-    void RecordError(TInt aError);
-
-    /**
-     * @see MDevSoundObserver::ConvertError
-     */
-    void ConvertError(TInt aError);
-
-    /**
-     * @see MDevSoundObserver::DeviceMessage
-     */
-    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
-
-private:
-    /**
-     * Initialises the set of supported codecs.
-     */
-    void LoadSupportedCodecsL();
-
-    /**
-     * Checks that the codec is in the set of Internet Radio's supported codecs
-     * and verifies that DevSound can be initialised with the codec.
-     * 
-     * @param aCodec The codec to be tested.
-     * @return ETrue if the codec is really supported, EFalse otherwise.
-     */
-    TBool VerifySupportL( TFourCC aCodec );
-
-private: 
-    /**
-     * The set of codecs that are supported.
-     * Owned.
-     */
-    RArray<TFourCC> iSupportedDataTypes;
-    
-    };
-#endif // C_IRCODECMANAGER_H
--- a/internetradio2.0/settingsinc/irsettings.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef C_CIRSETTINGS_H
-#define C_CIRSETTINGS_H
-
-#include <f32file.h>
-
-class CRepository;
-
-// CLEANUP REQUIRED
-
-const TInt KMaxLengthIRAppVersion = 50;
-const TInt KMaxLengthIrId = 32;
-const TInt KMaxLengthSilencePeriod = 32;
-const TInt KMaxLengthUrl = 500;
-const TInt KMaxLengthFileName = 500;
-
-// END CLEANUP
-
-NONSHARABLE_CLASS( CIRSettings ) : public CObject
-    {
-
-public:
-
-    IMPORT_C static CIRSettings* OpenL();
-    ~CIRSettings();
-
-    IMPORT_C TBool IsFlagTermsAndConditionsL();
-    IMPORT_C void SetFlagTermsAndConditionsL();
-    IMPORT_C void ReSetFlagTermsAndConditionsL();
-    IMPORT_C const TDesC& GetIrappVersionL() const;
-    IMPORT_C void SetIRIDL(const TDesC& aIrid);
-    IMPORT_C const TDesC& GetIRIDL() const;
-    IMPORT_C const  TDesC& GetISDSBaseUrlL() const;
-    IMPORT_C void SetISDSBaseUrlL(const TDesC& aIsdsUrl);
-    IMPORT_C TInt GetVolumeSetting() const;
-    IMPORT_C void SetVolumeSettingL(TInt aPlayVolume);
-    IMPORT_C TBool IsUpdateAvailableL();
-    IMPORT_C void SetUpdateAvailableL();
-	IMPORT_C void ReSetUpdateAvailableL();
-    IMPORT_C TInt GetLogRunningNo() const;
-    IMPORT_C void SetLogRunningNoL();
-    IMPORT_C void SetTimeOutL(TInt aTimeOut);
-    IMPORT_C TInt GetTimeOut() const;
-    IMPORT_C void SetSilencePeriodL(TUint aSilencePeriod);
-    IMPORT_C TUint GetSilencePeriodL() const;
-    IMPORT_C void SetSilencePeriodStartL(const TDesC& aSilencePeriodStart);
-    IMPORT_C const TDesC& GetSilencePeriodStartL() const;
-    IMPORT_C void SetPreferredQualityL(TInt aQualityValue);
-    IMPORT_C TInt GetPreferredQuality() const; 
-    IMPORT_C void SetSongHisotryShowL(TInt aShowFlag);
-    IMPORT_C TInt GetSongHistoryShow() const;
-    IMPORT_C void SetMaxPresetCountL(TInt aMaxCount);
-    IMPORT_C TInt MaxPresetCount();
-    IMPORT_C void SetTimeCorrectionL(TInt aCorrection);
-    IMPORT_C TInt TimeCorrection() const;
-    IMPORT_C const TDesC& PrivatePath() const;
-
-	// Methods for starting view
-    /**
-     * SetStartingViewIdL()
-     * Sets the starting view Id in cenrep
-     */
-    IMPORT_C void SetStartingViewIdL(TUint32 aStartingViewId);
-   
-    /**
-     * GetStartingViewIdL()
-     * Gets the starting view Id from cenrep
-     */
-    IMPORT_C TUint32 GetStartingViewIdL() const;
-   
-	/**
-	 * GetGlobalAdvFlagL()
-	 * Gets the global advertisement flag from cenrep
-	 */
-	IMPORT_C TBool GetGlobalAdvFlagL();
-
-	/**
-	 * GetManuallyInputtedStationUrlL()
-	 * Gets the url inputted in Go to station view from cenrep
-	 */
-    IMPORT_C const  TDesC& GetManuallyInputtedStationUrlL() const;
-    /**
-     * SetManuallyInputtedStationUrlL()
-     * Sets the url in Go to station view from cenrep
-     */
-    IMPORT_C void SetManuallyInputtedStationUrlL(const TDesC& aUrl);
-
-    /**
-     * GetManuallyInputtedStationNameL()
-     * Gets the name inputted in Go to station view from cenrep
-     */
-    IMPORT_C const  TDesC& GetManuallyInputtedStationNameL() const;
-    /**
-     * SetManuallyInputtedStationNameL()
-     * Sets the name in Go to station view from cenrep
-     */
-    IMPORT_C void SetManuallyInputtedStationNameL(const TDesC& aName);
-private:
-
-    CIRSettings();
-    void ConstructL();
-
-private:
-
-	CRepository *iRepository;
-    RFs iFs;
-
-	//key KIrappVersion
-    TBuf<KMaxLengthIRAppVersion> iIrappVersion;//! irapp version number, 
-    //key KIRID
-    TBuf<KMaxLengthIrId> iIRID;//! ir-id supplied by isds. cannot change
-    // key KSilencePeriodStartTime
-    TBuf<KMaxLengthSilencePeriod> iSilencePeriodStartTime; //!Universal timestamp for the time of decline of an Update
-    //key KISDSBaseUrl
-    TBuf<KMaxLengthUrl> iISDSBaseUrl;//!the base url of isds
-    TBuf<KMaxLengthFileName> iPrivatePath;
-    TBuf<KMaxLengthUrl> iStationUrl;
-    TBuf<KMaxLengthFileName> iStationName;
-
-    TInt iResourceFileOffset;
-    };
-    
-#endif // C_CIRSETTINGS_H
--- a/internetradio2.0/settingsinc/irsettingsutility.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c)  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 IRSETTINGSUTILITY_H
-#define IRSETTINGSUTILITY_H
-
-#include <e32cmn.h>
-
-class CDictionaryStore;
-
-NONSHARABLE_CLASS( IRSettingsUtility )
-    {
-
-public:
-
-    static void WriteIntL( CDictionaryStore& aDictionary, TUid aUid, TInt aValue );
-    static void WriteInt64L( CDictionaryStore& aDictionary, TUid aUid, TInt64 aValue );
-    static void WriteUintL( CDictionaryStore& aDictionary, TUid aUid, TUint aValue );
-    static void WriteBoolL( CDictionaryStore& aDictionary, TUid aUid, TBool aValue );
-    static void WriteStringL( CDictionaryStore& aDictionary, TUid aUid, const TDesC& aValue );
-
-    static TInt ReadIntL( CDictionaryStore& aDictionary, TUid aUid );
-    static TInt64 ReadInt64L( CDictionaryStore& aDictionary, TUid aUid );
-    static TUint ReadUintL( CDictionaryStore& aDictionary, TUid aUid );
-    static TBool ReadBoolL(  CDictionaryStore& aDictionary, TUid aUid );
-    static HBufC* ReadStringL( CDictionaryStore& aDictionary, TUid aUid );
-
-    };
-
-#endif // IRSETTINGSUTILITY_H
--- a/internetradio2.0/settingssrc/ircodecmanager.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Maintains the set of supported codecs
-*
-*/
-
-#include <e32base.h>
-
-#include <eikenv.h>
-#include <f32file.h>
-
-
-#include "ircodecmanager.h"
-#include "irdebug.h"
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::NewL
-// ---------------------------------------------------------------------------
-//
-CIRCodecManager* CIRCodecManager::NewL()
-    {
-    CIRCodecManager* self = CIRCodecManager::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::NewLC
-// ---------------------------------------------------------------------------
-//
-CIRCodecManager* CIRCodecManager::NewLC()
-    {
-    CIRCodecManager* self = new (ELeave) CIRCodecManager();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::CIRCodecManager
-// ---------------------------------------------------------------------------
-//
-CIRCodecManager::CIRCodecManager()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::~CIRCodecManager
-// ---------------------------------------------------------------------------
-//
-CIRCodecManager::~CIRCodecManager()
-    {
-    iSupportedDataTypes.Reset();
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRCodecManager::ConstructL" );
-    LoadSupportedCodecsL();
-    IRLOG_DEBUG( "CIRCodecManager::ConstructL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::IsSupportedCodec
-// ---------------------------------------------------------------------------
-//
-TBool CIRCodecManager::IsSupportedCodec( TFourCC aCodec ) const
-    {
-    IRLOG_DEBUG( "CIRCodecManager::::IsSupportedCodec" );
-    TBool supported( EFalse );
-    if ( iSupportedDataTypes.Find( aCodec ) != KErrNotFound )
-        {
-        supported = ETrue;
-        }
-    IRLOG_INFO3( "CIRCodecManager::IsSupportedCodec - Returning %d for codec %d",
-                  supported, aCodec.FourCC() );
-    return supported;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::InitializeComplete
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::InitializeComplete(TInt /* aError */)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::ToneFinished
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::ToneFinished(TInt /* aError */)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::BufferToBeFilled
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::BufferToBeFilled(CMMFBuffer* /* aBuffer */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::PlayError
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::PlayError(TInt /* aError */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::BufferToBeEmptied
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::BufferToBeEmptied(CMMFBuffer* /* aBuffer */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::RecordError
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::RecordError(TInt /* aError */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::ConvertError
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::ConvertError(TInt /* aError */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::DeviceMessage
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::DeviceMessage(TUid /* aMessageType */, const TDesC8& /* aMsg */ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::LoadSupportedCodecsL
-// ---------------------------------------------------------------------------
-//
-void CIRCodecManager::LoadSupportedCodecsL()
-    {
-    IRLOG_DEBUG( "CIRCodecManager::LoadSupportedCodecsL" );
-    CMMFDevSound* devSound = CMMFDevSound::NewL();
-    CleanupStack::PushL( devSound );
-    TMMFPrioritySettings prioritySettings;
-
-    prioritySettings.iPriority = 0;
-    prioritySettings.iPref = EMdaPriorityPreferenceNone;
-    prioritySettings.iState = EMMFStatePlaying;
-
-    devSound->GetSupportedInputDataTypesL( iSupportedDataTypes, prioritySettings );
-    CleanupStack::PopAndDestroy( devSound );
-
-    // CMMFDevSound returns also other codecs than those supported by IR.
-    TInt tempCount = iSupportedDataTypes.Count();
-    IRRDEBUG2("CIRCodecManager::LoadSupportedCodecsL() - codecs count = %d",tempCount);
-    for ( TInt i = iSupportedDataTypes.Count() - 1; i >= 0; i-- )
-        {
-        if ( !VerifySupportL( iSupportedDataTypes[i] ) )
-            {
-            IRLOG_DEBUG2( "CIRCodecManager::LoadSupportedCodecsL - %x not supported.",
-                        iSupportedDataTypes[i].FourCC() );
-            iSupportedDataTypes.Remove( i );
-            }
-        else
-            {
-            IRLOG_INFO2( "CIRCodecManager::LoadSupportedCodecsL - %x supported.",
-                        iSupportedDataTypes[i].FourCC() );
-            }
-        }
-
-#ifdef __WINS__
-    // In emulator there is typically only 16 bit PCM supported.
-    if ( iSupportedDataTypes.Count() == 0 )
-        {
-        TFourCC codec( KMMFFourCCCodeMP3 );
-        iSupportedDataTypes.Append( codec );
-        }
-#endif
-
-
-    IRLOG_DEBUG( "CIRCodecManager::LoadSupportedCodecsL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCodecManager::VerifySupportL
-// ---------------------------------------------------------------------------
-//
-TBool CIRCodecManager::VerifySupportL( TFourCC aCodec )
-    {
-    IRLOG_DEBUG2( "CIRCodecManager::VefifySupportL - aCodec=%x", aCodec.FourCC() );
-    TInt supported( EFalse );
-    switch( aCodec.FourCC() )
-        {
-#ifndef __SERIES60_30__
-        case KMMFFourCCCodeWMA: // fall through
-#endif
-        case KMMFFourCCCodeAAC: // fall through
-        case KMMFFourCCCodeMP3:
-            supported = ETrue;
-            break;
-        default:
-            break;
-        }
-    if ( supported )
-        {
-        // Test initialisation to see that the codec really is supported.
-        CMMFDevSound* devSound = CMMFDevSound::NewL();
-        CleanupStack::PushL( devSound );
-
-        TMMFState mmfState( EMMFStatePlaying );
-        TRAPD( err, devSound->InitializeL( *this, aCodec, mmfState ) );
-        if ( err != KErrNone )
-            {
-            supported = EFalse;
-            }
-        CleanupStack::PopAndDestroy( devSound );
-        }
-    IRLOG_DEBUG( "CIRCodecManager::VefifySupportL" );
-    return supported;
-    }
-
-
--- a/internetradio2.0/settingssrc/irsettings.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include <barsc.h>
-#include <bautils.h>
-#include <coemain.h>
-#include <data_caging_path_literals.hrh>
-#include <irsettings.rsg>
-#include <pathinfo.h>
-#include <s32file.h>
-#include <centralrepository.h>
-
-#include "irdebug.h"
-#include "irsettings.h"
-#include "irinternalcrkeys.h"
-
-// Constants
-_LIT( KIRSettingsResourceFileName, "irsettings.rsc" );
-const TInt KSix = 6;
-const TInt KFifty = 50;
-const TInt KTimeSize = 60000000 ;
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSettings* CIRSettings::OpenL()
-    {
-    IRLOG_DEBUG( "CIRSettings::OpenL() - Entering" );
-    CIRSettings* self = static_cast<CIRSettings*>( Dll::Tls() );
-
-    if ( self )
-        {
-        User::LeaveIfError( self->Open() );
-        }
-    else
-        {
-        self = new ( ELeave ) CIRSettings;
-        CleanupClosePushL( *self );
-        self->ConstructL();
-        CleanupStack::Pop( self );
-        }
-    IRLOG_DEBUG( "CIRSettings::OpenL() - Exiting" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-CIRSettings::CIRSettings()
-    : iResourceFileOffset( KErrNotFound )
-    {
-    IRLOG_DEBUG( "CIRSettings::CIRSettings" );
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-void CIRSettings::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRSettings::ConstructL() - Enter" );
-
-	iRepository = CRepository::NewL(KCRUidInternetRadio);
-		
-    User::LeaveIfError( iFs.Connect() );
-
-    TParse parse;
-
-    // Parses out the resource file name and path to it.
-
-    TFileName resourceFileNameAndPath;
-    Dll::FileName( resourceFileNameAndPath );
-
-    parse.Set( KIRSettingsResourceFileName, &KDC_RESOURCE_FILES_DIR, &resourceFileNameAndPath );
-    resourceFileNameAndPath = parse.FullName();
-
-    BaflUtils::NearestLanguageFile( iFs, resourceFileNameAndPath );
-
-    IRLOG_DEBUG2("CIRSettings::ConstructL - resourceFileNameAndPath = %S", &resourceFileNameAndPath );
-    
-    iResourceFileOffset = CCoeEnv::Static()->AddResourceFileL( resourceFileNameAndPath );
-
-    // Parses out the private path of the running process.
-	
-    User::LeaveIfError( iFs.PrivatePath( iPrivatePath ) );
-    
-    TParsePtrC phoneMemoryRootPath( PathInfo::PhoneMemoryRootPath() );
-    TPtrC drive( phoneMemoryRootPath.Drive() );
-    User::LeaveIfError( parse.Set( iPrivatePath, &drive, NULL ) );
-    iPrivatePath = parse.FullName();
-
-    BaflUtils::EnsurePathExistsL( iFs, parse.FullName() );
-
-    IRLOG_DEBUG2("CIRSettings::ConstructL - iPrivatePath = %S", &iPrivatePath );
-    
-    User::LeaveIfError( Dll::SetTls( this ) );
-    
-    IRLOG_DEBUG( "CIRSettings::ConstructL() - Exit" );
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-CIRSettings::~CIRSettings()
-    {
-    IRLOG_DEBUG( "CIRSettings::~CIRSettings() - Entering" );
-	delete iRepository;
-    iFs.Close();
-
-    if ( iResourceFileOffset != KErrNotFound )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
-        }
-    
-    Dll::FreeTls();
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRSettings::IsFlagTermsAndConditionsL()
-    {
-       IRLOG_DEBUG( "CIRSettings::IsFlagTermsAndConditionsL() - Entering" );
-       TInt value = 0;
-       User::LeaveIfError( iRepository->Get(KIRTermsAndConditionsFlag, value) );
-       IRLOG_DEBUG( "CIRSettings::IsFlagTermsAndConditionsL() - Exiting" );
-       return value == 1 ? ETrue : EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetFlagTermsAndConditionsL()
-    {
-       IRLOG_DEBUG( "CIRSettings::SetFlagTermsAndConditionsL() - Entering" );
-       User::LeaveIfError ( iRepository->Set(KIRTermsAndConditionsFlag, 1));
-       IRLOG_DEBUG( "CIRSettings::SetFlagTermsAndConditionsL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::ReSetFlagTermsAndConditionsL()
-    {
-    	IRLOG_DEBUG( "CIRSettings::ReSetFlagTermsAndConditionsL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRTermsAndConditionsFlag, 0));
-        IRLOG_DEBUG( "CIRSettings::ReSetFlagTermsAndConditionsL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRSettings::GetIrappVersionL() const
-    {
-    		IRLOG_DEBUG( "CIRSettings::GetIrappVersionL() - Entering" );
-    		User::LeaveIfError( iRepository->Get(KIRIrappVer, (TDes&)iIrappVersion) );
-    		IRLOG_DEBUG( "CIRSettings::GetIrappVersionL() - Exiting" );
-    		return iIrappVersion;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetIRIDL(const TDesC& aIrid)
-    {
-    		IRLOG_DEBUG( "CIRSettings::SetIRIDL() - Entering" );
-            User::LeaveIfError ( iRepository->Set(KIRDefaultIrId, aIrid) );
-            IRLOG_DEBUG( "CIRSettings::SetIRIDL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRSettings::GetIRIDL() const
-    {
-    		IRLOG_DEBUG( "CIRSettings::GetIRIDL() - Entering" );
-    		User::LeaveIfError( iRepository->Get(KIRDefaultIrId, (TDes&)iIRID) );
-    		IRLOG_DEBUG( "CIRSettings::GetIRIDL() - Exiting" );
-    		return iIRID;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const  TDesC& CIRSettings::GetISDSBaseUrlL() const
-    {
-    	IRLOG_DEBUG( "CIRSettings::GetISDSBaseUrlL() - Entering" );
-    	User::LeaveIfError( iRepository->Get(KIRDefaultIsdsUrl, (TDes&)iISDSBaseUrl) );
-    	IRLOG_DEBUG( "CIRSettings::GetISDSBaseUrlL() - Exiting" );
-       	return iISDSBaseUrl;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetISDSBaseUrlL(const TDesC& aIsdsUrl)
-    {
-    	IRLOG_DEBUG( "CIRSettings::SetISDSBaseUrlL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRDefaultIsdsUrl, aIsdsUrl) );
-        IRLOG_DEBUG( "CIRSettings::SetISDSBaseUrlL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::GetVolumeSetting() const
-    {
-    IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Entering" );
-    TInt value = KSix;
-    TInt err = iRepository->Get(KIRDefaultPlayVolume, value);
-    if(err)
-	    {
-        IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Error" );
-	    }
- 
-    IRLOG_DEBUG( "CIRSettings::GetVolumeSetting() - Exiting" );
-    return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetVolumeSettingL(TInt aPlayVolume)
-    {
-      IRLOG_DEBUG( "CIRSettings::SetVolumeSettingL() - Entering" );
-      User::LeaveIfError ( iRepository->Set(KIRDefaultPlayVolume, aPlayVolume));
-      IRLOG_DEBUG( "CIRSettings::SetVolumeSettingL() - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRSettings::IsUpdateAvailableL()
-    {
-    	IRLOG_DEBUG( "CIRSettings::IsUpdateAvailableL() - Entering" );
-       TBool value = ETrue;
-       User::LeaveIfError( iRepository->Get(KIRUpdateAvailablity, value) );
-       IRLOG_DEBUG( "CIRSettings::IsUpdateAvailableL() - Exiting" );
-       return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetUpdateAvailableL()
-    {
-    	IRLOG_DEBUG( "CIRSettings::SetUpdateAvailableL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRUpdateAvailablity, 1));
-        IRLOG_DEBUG( "CIRSettings::SetUpdateAvailableL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::ReSetUpdateAvailableL()
-    {
-    	IRLOG_DEBUG( "CIRSettings::ReSetUpdateAvailableL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRUpdateAvailablity, 0));
-        IRLOG_DEBUG( "CIRSettings::ReSetUpdateAvailableL() - Exiting" );
-    }
-    
- 
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::GetLogRunningNo() const
-    {
-		IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Entering" );
-        TInt value = 1;
-        TInt err = iRepository->Get(KIRUserDefinedLogRunningNumber, value);
-        if(err)
-	        {
-    	    IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Error" );
-    	    }
-    	IRLOG_DEBUG( "CIRSettings::GetLogRunningNo() - Exiting" );
-    	return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetLogRunningNoL()
-    {
-    IRLOG_DEBUG( "CIRSettings::SetLogRunningNoL() - Entering" );
-    TInt value = GetLogRunningNo();
-    value++;
-    User::LeaveIfError ( iRepository->Set(KIRUserDefinedLogRunningNumber,value));
-    IRLOG_DEBUG( "CIRSettings::SetLogRunningNoL() - Exiting" );
-    }
-    
-  
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetTimeOutL(TInt aTimeOut)
-    {
-       IRLOG_DEBUG( "CIRSettings::SetTimeOutL() - Entering" );
-       User::LeaveIfError ( iRepository->Set(KIRTimeOutDuration, aTimeOut) );
-       IRLOG_DEBUG( "CIRSettings::SetTimeOutL() - Exiting" );
-       }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::GetTimeOut() const
-    {
-    IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Entering" );
-    TInt value = KTimeSize;
-    TInt err = iRepository->Get(KIRTimeOutDuration, value) ;
-    if(err)
-	    {
-        IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Error" );
-	    }
-
-    IRLOG_DEBUG( "CIRSettings::GetTimeOut() - Exiting" );
-    return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetSilencePeriodL(TUint aSilencePeriod)
-    {
-    	IRLOG_DEBUG( "CIRSettings::SetSilencePeriodL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRSilencePeriodDuration, (TInt)aSilencePeriod) );
-        IRLOG_DEBUG( "CIRSettings::SetSilencePeriodL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint CIRSettings::GetSilencePeriodL() const
-    {
-    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodL() - Entering" );
-    	TInt value =0;
-    	User::LeaveIfError( iRepository->Get(KIRSilencePeriodDuration, value) );
-    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodL() - Exiting" );
-    	return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetSilencePeriodStartL(const TDesC& aSilencePeriodStart)
-    {
-    	IRLOG_DEBUG( "CIRSettings::SetSilencePeriodStartL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRSilencePeriodStartingTime, aSilencePeriodStart) );
-        IRLOG_DEBUG( "CIRSettings::SetSilencePeriodStartL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRSettings::GetSilencePeriodStartL() const
-    {
-    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodStartL() - Entering" );
-    	User::LeaveIfError( iRepository->Get(KIRSilencePeriodStartingTime,
-    					  (TDes&)iSilencePeriodStartTime) );
-    	IRLOG_DEBUG( "CIRSettings::GetSilencePeriodStartL() - Exiting" );
-        return iSilencePeriodStartTime;
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetPreferredQualityL(TInt aQualityValue)
-    {
-    IRLOG_DEBUG( "CIRSettings::SetPreferredQualityL() - Entering" );
-    User::LeaveIfError ( iRepository->Set(KIRPreferredQuality, aQualityValue) );
-    IRLOG_DEBUG( "CIRSettings::SetPreferredQualityL() - Exiting" );
-    }
-
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::GetPreferredQuality() const
-    {
-    	IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Entering" );
-    	TInt value = 0;
-    	TInt err = iRepository->Get(KIRPreferredQuality, value);
-    	if(err)
-	    	{
-	        IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Error" );
-	    	}
-
-	    IRLOG_DEBUG( "CIRSettings::GetPreferredQuality() - Exiting" );
-    	return value;
-    }
-
-EXPORT_C TInt CIRSettings::GetSongHistoryShow() const
-{
-    IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Entering" );
-    TInt value = 0;
-    TInt err = iRepository->Get(KIRSongHistoryShow, value);
-    if(err)
-        {
-        IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Error" );
-        }
-
-    IRLOG_DEBUG( "CIRSettings::GetSongHistoryShow() - Exiting" );
-    return value;
-}
-
-EXPORT_C void CIRSettings::SetSongHisotryShowL(TInt aShowFlag)
-{
-    IRLOG_DEBUG( "CIRSettings::SetSongHisotryShow() - Entering" );
-    User::LeaveIfError(iRepository->Set(KIRSongHistoryShow, aShowFlag));
-    IRLOG_DEBUG( "CIRSettings::SetSongHisotryShow() - Exiting" );
-}
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetMaxPresetCountL(TInt aMaxCount)
-    {
-    IRLOG_DEBUG( "CIRSettings::SetMaxPresetCountL() - Entering" );
-    User::LeaveIfError ( iRepository->Set(KIRDefaultMaxPresetCount, aMaxCount) );
-    IRLOG_DEBUG( "CIRSettings::SetMaxPresetCountL() - Exiting" );    
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::MaxPresetCount()
-    {
-    	IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Entering" );
-    	TInt value = KFifty;
-    	TInt err = iRepository->Get(KIRDefaultMaxPresetCount, value) ;
-    	if(err)
-	    	{
-	        IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Error" );
-	    	}
-
-	    IRLOG_DEBUG( "CIRSettings::MaxPresetCount() - Exiting" );
-    	return value;
-    }
-    
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetTimeCorrectionL(TInt aCorrection)
-    {
-    	IRLOG_DEBUG( "CIRSettings::SetTimeCorrectionL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRDefaultTimeCorrection, aCorrection) );
-        IRLOG_DEBUG( "CIRSettings::SetTimeCorrectionL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSettings::TimeCorrection() const
-    {
-    	IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Entering" );
-        TInt value = 0;
-        TInt err = iRepository->Get(KIRDefaultTimeCorrection, value) ;
-        if(err)
-	        {
-	        IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Error" );
-	        }
-
-	    IRLOG_DEBUG( "CIRSettings::TimeCorrection() - Exiting" );
-    	return value;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CIRSettings::PrivatePath() const
-    {
-    IRLOG_DEBUG( "CIRSettings::PrivatePath" );
-    return iPrivatePath;
-    }
-
-// ---------------------------------------------------------------------------
-// SetStartingViewIdL()
-// Sets the starting view Id in cenrep
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetStartingViewIdL(TUint32 aStartingViewId)
-    {
-    IRLOG_DEBUG( "CIRSettings::SetStartingViewIdL() - Entering" );
-    User::LeaveIfError ( iRepository->Set(KIRStartingViewId, (TInt)aStartingViewId) );
-    IRLOG_DEBUG( "CIRSettings::SetStartingViewIdL() - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// GetStartingViewIdL()
-// Gets the starting view Id from cenrep
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CIRSettings::GetStartingViewIdL() const
-    {
-    IRLOG_DEBUG( "CIRSettings::GetStartingViewIdL() - Entering" );
-    TInt value = 0;
-    User::LeaveIfError( iRepository->Get(KIRStartingViewId, value) );
-    IRLOG_DEBUG( "CIRSettings::GetStartingViewIdL() - Exiting" );
-    return value;
-    } 
-
-// ---------------------------------------------------------------------------
-// GetGlobalAdvFlagL()
-// Gets the global advertisement flag from cenrep
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRSettings::GetGlobalAdvFlagL()
-{
-  IRLOG_DEBUG( "CIRSettings::GetGlobalAdvFlagL() - Entering" );
-  TBool value = ETrue;
-  User::LeaveIfError( iRepository->Get(KIRGlobalAdvFlag, value) );
-  IRLOG_DEBUG( "CIRSettings::GetGlobalAdvFlagL() - Exiting" );
-  return value;
-}
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const  TDesC& CIRSettings::GetManuallyInputtedStationUrlL() const
-    {
-        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationUrlL() - Entering" );
-        User::LeaveIfError( iRepository->Get(KIRStationUrl, (TDes&)iStationUrl) );
-        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationUrlL() - Exiting" );
-        return iStationUrl;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetManuallyInputtedStationUrlL(const TDesC& aUrl)
-    {
-        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationUrlL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRStationUrl, aUrl) );
-        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationUrlL() - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const  TDesC& CIRSettings::GetManuallyInputtedStationNameL() const
-    {
-        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationNameL() - Entering" );
-        User::LeaveIfError( iRepository->Get(KIRStationName, (TDes&)iStationName) );
-        IRLOG_DEBUG( "CIRSettings::GetManuallyInputtedStationNameL() - Exiting" );
-        return iStationName;
-    }
-    
-// ---------------------------------------------------------------------------
-// description_if_needed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettings::SetManuallyInputtedStationNameL(const TDesC& aName)
-    {
-        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationNameL() - Entering" );
-        User::LeaveIfError ( iRepository->Set(KIRStationName, aName) );
-        IRLOG_DEBUG( "CIRSettings::SetManuallyInputtedStationNameL() - Exiting" );
-    }
--- a/internetradio2.0/settingsviewinc/ircommonsettingscontainer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Container class for the settings UI
-*
-*/
-
-
-#ifndef C_CIRCOMMONSETTINGSCONTAINER_H
-#define C_CIRCOMMONSETTINGSCONTAINER_H
-
-#include <aknsettingitemlist.h>
-#include "irsettings.h"
-class CIRNetworkController;
-
-
-//Added for ALR/SNAP
-enum TUserSelection
-   {
-    EUserSelectionAlwaysAsk = 0,
-    EUserSelectionDefaultConnection,
-    EUserSelectionDestination,
-    EUserSelectionConnectionMethod
-    };
-
-/**
- * The container that holds all the setting items.
- */
-class CIRCommonSettingsContainer : public CAknSettingItemList
-    {
-public:  // Methods
-
-    /**
-     * Two-phased constructor.
-     *
-     * @param   aModel          The model that provides writing and reading of the settings.
-     */
-    IMPORT_C static CIRCommonSettingsContainer* NewL( );
-
-    /**
-     * Destructor.
-     */
-    IMPORT_C ~CIRCommonSettingsContainer();
-
-    /**
-     * Starts editing the item at the current index.
-     */
-    void EditCurrentItemL( TBool aCalledFromMenu );
-    
-    /**
-     * GetCurrentSelection()
-     * Getter function for the currently selected item in the list
-     */    
-    TInt GetCurrentSelection();
-    
-    /**
-     * UpdateStatusL()
-     * Fetches the new settings values from iIRSettings and updates the list
-     */  
-    void UpdateStatusL();
-    
-    /**
-     * GetUserSelectionL()
-     * Queries the Settings and returns the user selected IAP/SNAP
-     */
-    
-    /**
-     * SetAccessPointDetailsL()
-     * Sets the details of the chosen IAP in cenrep
-     */
-    void SetAccessPointDetailsL(TUint aId);
-    
-    /**
-     * SetListBoxTextL()
-     * Sets the text of the Network Selection in the Settings UI
-     */
-    void SetListBoxTextL();
-
-protected:
-
-    /**
-     * Constructor.
-     *
-     * @param   aModel      The model that provides writing and reading of the settings.
-     */
-    IMPORT_C CIRCommonSettingsContainer();
-
-    /**
-     * Second-phase constructor.
-     */
-    IMPORT_C void BaseConstructL();
-
-// from base class CAknSettingItemList.
-
-	/**
-     * CreateSettingItemL()
-     * Creates a setting item based upon the user id aSettingId
-     */
-    IMPORT_C virtual CAknSettingItem* CreateSettingItemL( TInt aSettingId );
-    
-    /**
-     * EditItemL()
-     * Launches the setting page for the current item 
-     */
-    IMPORT_C virtual void EditItemL( TInt aIndex, TBool aCalledFromMenu );
-
-// from base class CCoeControl
-
-	/**
-     * GetHelpContext()
-     * Gets the control's help context
-     */
-    IMPORT_C void GetHelpContext( TCoeHelpContext& aContext ) const;
-    
-    /**
-     * SizeChanged()
-     * Responds to changes to the size and position of the contents of this control.
-     */
-    IMPORT_C void SizeChanged();
-    
-    
-    /**
-     * ShowConnectionSettingsUiL()
-     * Displays the connection settings ui
-     */
-    void ShowConnectionSettingsUiL();
-
-private:
-
-    /**
-     * iIRSettings
-     * An instance of the CIRSettings class
-     */
-    CIRSettings* iIRSettings;
-    
-    /**
-     * iAccessPointIndex
-     * Index of the AccessPoint setting
-     */
-    TInt iAccessPointIndex;
-    
-    /**
-     * iWifiBitRateIndex
-     * Index of the WifiBitRate setting
-     */
-    TInt iWifiBitRateIndex;
-    
-    /**
-     * i3GBitRateIndex
-     * Index of the 3GBitRate setting
-     */
-    TInt i3GBitRateIndex;
-    
-    /**
-     * iGprsBitRateIndex
-     * Index of the GprsBitRate setting
-     */
-    TInt iGprsBitRateIndex;
-    
-    /**
-     * iNetworkController
-     * An instance of the CIRNetworkController class
-     */
-	CIRNetworkController* iNetworkController;
-	
-	/** 
-	 * iIapArray
-	 * An array of Available IAP IDs 
-	 */
-	const CDesCArray* iIapArray;
-
-	/** 
-	 * iDestinationSelected
-	 * A Boolean value to indicate if the selection is a Destination
-	 */
-	TBool iDestinationSelected;
-    };
-
-#endif // C_CIRCOMMONSETTINGSCONTAINER_H
--- a/internetradio2.0/settingsviewinc/irsettingsviewbase.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Base class for the Settings View
-*
-*/
-
-
-#ifndef C_CIRSETTINGSVIEWBASE_H
-#define C_CIRSETTINGSVIEWBASE_H
-
-#include <coneresloader.h>
-#include <gsplugininterface.h>
-
-
-class CIRCommonSettingsContainer;
-
-/**
- * Implements the common settings view for internet Radio.
- * Inherited from the general settings plugin interface so that 
- * common behaviour can be shared between General Settings View and 
- * internet Radio's own settings view.
- */
-
-  class CIRSettingsViewBase : public CGSPluginInterface
-    {
-
-public:
-
-    /**
-     * Destructor.
-     */
-    IMPORT_C virtual ~CIRSettingsViewBase();
-    
-    /**
-     * ResolveDriveL()
-     * Static version of ResolveDriveL.
-     */
-    IMPORT_C void ResolveDriveL( const RFs& aFs, TFileName& aFileName );
-        
-     /**
-     * SetTitleL()
-     * Sets the Title of the View
-     */
-
-    IMPORT_C void SetTitleL( TInt aResourceId );
-    
-        
-     /**
-     * HandleForegroundEventL()
-     * Handles changes in keyboard focus when an application switches to 
-     * foreground
-     */
-
-    IMPORT_C void HandleForegroundEventL( TBool aForeground );
-
-protected:
-
-    /**
-     * Constructor.
-     */
-    IMPORT_C CIRSettingsViewBase();
-
-    /**
-     * Second-phase constructor.
-     */
-    IMPORT_C void BaseConstructL();
-
-    /**
-     * Loads resource file with given resource loader
-     *
-     * @param aResourceLoader A reference to resource loader
-     * @param aFileName The resource file to be opened, no path included
-     */
-    IMPORT_C void LoadResourcesL( RConeResourceLoader& aResourceLoader, const TDesC& aFileName );
-    
-// from base class CAknView
-
-    
-     /**
-     * DoActivateL()
-     * View activation
-     */
-
-    IMPORT_C virtual void DoActivateL( const TVwsViewId& aPrevViewId,
-    		 TUid aCustomMessageId, const TDesC8& aCustomMessage );
-    		 
-    		     
-     /**
-     * DoDeactivate()
-     * View Deactivation
-     */
-
-    IMPORT_C virtual void DoDeactivate();
-    
-        
-     /**
-     * HandleCommandL()
-     * Command Handler
-     */
-
-    IMPORT_C virtual void HandleCommandL( TInt aCommand );
-    
-    // from base class CGSPluginInterface
-    
-        
-     /**
-     * GetCaptionL()
-     * Gets the caption
-     */
-
-    IMPORT_C virtual void GetCaptionL( TDes& aCaption ) const;
-
-   
-private:
-
-    /**
-     * DeleteContainer()
-     * Deletes the container and removes it from the view stack.
-     */
-    void DeleteContainer();
-
-    /**
-     * CreateContainerL()
-     * Constructs new container
-     */
-    virtual void CreateContainerL() = 0;
-    
-    
-
-protected:
-
-    
-     /**
-     * iContainer
-     * Static version of ResolveDriveL.
-     */
-
-	CIRCommonSettingsContainer* iContainer;
-    
-private:
-
-   
-    /** 
-     * iSettingsBaseResourceLoader
-     * The resource loader for the resource file.
-     */
-    RConeResourceLoader iSettingsBaseResourceLoader;
-
-	/** 
-	 * iPrevViewUid
-	 * The UID of the view that activated this one. 
-	 */
-    TUid iPrevViewUid;
-    };
-
-#endif // C_CIRSETTINGSVIEWBASE_H 
--- a/internetradio2.0/settingsviewsrc/ircommonsettingscontainer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,341 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Container class for the settings UI
-*
-*/
-
-
-#include <aknnotewrappers.h>
-#include <e32property.h>
-#include <stringloader.h>
-#include <akntitle.h> 
-#include <cmmanager.h>
-#include <cmdestination.h>
-#include "ircommonsettingscontainer.h"
-#include "ir.hrh"
-#include "irnetworkcontroller.h"
-#include "iraap.hlp.hrh"
-#include "irdebug.h" //  PC-Lint comments :: SPP
-
-#define KUIDIRAPP 0x2000B499
-const TUid KIRMCVUid = {KUIDIRAPP};
-
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// NewL()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCommonSettingsContainer* CIRCommonSettingsContainer::NewL()
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::NewL - Entering" );
-    CIRCommonSettingsContainer* self = new ( ELeave ) CIRCommonSettingsContainer(/*aAccessPointList, aDefaultAccessPoint*/);
-    CleanupStack::PushL( self );
-    self->BaseConstructL();
-    CleanupStack::Pop( self );
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::NewL - Exiting" );
-    return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCommonSettingsContainer::CIRCommonSettingsContainer( ) 
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::CIRCommonSettingsContainer" );
-    }
-
-// ---------------------------------------------------------------------------
-// BaseConstructL()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCommonSettingsContainer::BaseConstructL()
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::BaseConstructL - Entering" );
-    iNetworkController = CIRNetworkController::OpenL();
-    iIRSettings = CIRSettings::OpenL();
-    iDestinationSelected = EFalse;
-    SetListBoxTextL() ;
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::BaseConstructL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRCommonSettingsContainer::~CIRCommonSettingsContainer()
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::~CIRCommonSettingsContainer - Entering" );
-	if(iIRSettings) 
-		{
-		iIRSettings->Close();
-		iIRSettings = NULL;
-		}
-	if(iNetworkController) 
-		{
-		iNetworkController->Close();
-		iNetworkController = NULL;	
-		}
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::~CIRCommonSettingsContainer - Exiting" );
-    }
-    
-// ---------------------------------------------------------------------------
-// EditCurrentItemL()
-// Starts editing of the current item.
-// ---------------------------------------------------------------------------
-//
-void CIRCommonSettingsContainer::EditCurrentItemL( TBool aCalledFromMenu )
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::EditCurrentItemL - Entering" );
-    EditItemL( ListBox()->CurrentItemIndex(), aCalledFromMenu );
-    DrawDeferred();
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::EditCurrentItemL - Exiting" );
-    }
- 
-TInt CIRCommonSettingsContainer::GetCurrentSelection()
-	{
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::GetCurrentSelection - Entering" );
-	TInt current = ListBox()->CurrentItemIndex();
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::GetCurrentSelection - Exiting" );
-	if((current >= 0) && (current < SettingItemArray()->Count()))
-		{
-		return SettingItemArray()->At( current )->Identifier();
-		}
-	else 
-		{
-		return 0;
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CreateSettingItemL()
-// From CAknSettingItemList.
-// Creates a setting item based upon the user id aSettingId
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknSettingItem* CIRCommonSettingsContainer::CreateSettingItemL( TInt aSettingId )
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::CreateSettingItemL - Entering" );
-    CAknSettingItem* item = NULL;
- 
-    switch ( aSettingId )
-        {
-        case EIRSettingItemSnapSelectionID:
-			{
-			iAccessPointIndex = 0;
-			// Need to use this class later
-			item = new (ELeave) CAknEnumeratedTextPopupSettingItem(aSettingId, 
-													iAccessPointIndex);
-			}
-        break;
-            
-        case EIRSettingItemGprsConnBitRateID:
-			{
-			iGprsBitRateIndex = 0;
-			item = new (ELeave) CAknEnumeratedTextPopupSettingItem(aSettingId, 
-															iGprsBitRateIndex);
-			iGprsBitRateIndex = iIRSettings->GetGPRSBitrateQuality();
-			}
-		break;
-	           
-        case EIRSettingItem3GConnBitRateID:
-			{
-			i3GBitRateIndex = 0;
-			item = new (ELeave) CAknEnumeratedTextPopupSettingItem(aSettingId, 
-															i3GBitRateIndex);                
-			i3GBitRateIndex = iIRSettings->Get3GBitrateQuality();
-			}
-        break;
-               
-        case EIRSettingItemWiFiConnBitRateID:
-			{
-			iWifiBitRateIndex = 0;
-			item = new (ELeave) CAknEnumeratedTextPopupSettingItem(aSettingId, 
-														iWifiBitRateIndex);                
-			iWifiBitRateIndex = iIRSettings->GetWiFiBitrateQuality();
-			}
-        break;
-        
-        default:
-            break;
-        }
-     
-    LoadSettingsL();
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::CreateSettingItemL - Exiting" );
-    return item;
-
-    }
-
-// ---------------------------------------------------------------------------
-// EditItemL()
-// Called when an item is being edited.
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRCommonSettingsContainer::EditItemL( TInt aIndex, TBool aCalledFromMenu )
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::EditItemL - Entering" );
-	if((aIndex >= 0) && (aIndex < SettingItemArray()->Count()))
-    {
-	    TInt settingId = SettingItemArray()->At( aIndex )->Identifier();
-	    
-	    switch ( settingId )
-	        {
-	        case EIRSettingItemGprsConnBitRateID:
-	        	{
-	           	CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu );
-	        	SettingItemArray()->At( aIndex )->StoreL();
-            iIRSettings->SetGPRSBitrateQualityL(iGprsBitRateIndex);
-	            break;
-	        	}
-	        case EIRSettingItem3GConnBitRateID:
-	        	{
-	        	CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu );
-	  	   		SettingItemArray()->At( aIndex )->StoreL();
-            iIRSettings->Set3GBitrateQualityL(i3GBitRateIndex);
-	            break;
-	        	}
-	        case EIRSettingItemWiFiConnBitRateID:
-	        	{
-	        	CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu );
-	  			SettingItemArray()->At( aIndex )->StoreL();
-            iIRSettings->SetWiFiBitrateQualityL(iWifiBitRateIndex);
-	            break;
-	        	}
-	        case EIRSettingItemSnapSelectionID:
-	        	{
-	           	ShowConnectionSettingsUiL();
-	        	break;
-	        	}
-	        default:
-	            break;
-	        }
-	    IRLOG_DEBUG( "CIRCommonSettingsContainer::EditItemL - Exiting" );
-	    }
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the help context.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRCommonSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::GetHelpContext - Entering" );
-    aContext = TCoeHelpContext( KIRMCVUid, KIR_HELP_SETTINGS );
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::GetHelpContext - Exiting" );
-    }
-  
-// -----------------------------------------------------------------------------
-// CIRCommonSettingsContainer::SizeChanged
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CIRCommonSettingsContainer::SizeChanged()
-    {
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::SizeChanged - Entering" );
-    CAknSettingItemList::SizeChanged();
-    CEikListBox* lb = ListBox();
-    if( lb )
-        {
-        lb->SetRect( Rect() );  // Needed to update listbox after portrait-landscape change
-        }
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::SizeChanged - Exiting" );
-    }
-
-
-// ---------------------------------------------------------------------------
-// ShowConnectionSettingsUiL
-// Displays the connection settings ui
-// ---------------------------------------------------------------------------
-//
-void CIRCommonSettingsContainer::ShowConnectionSettingsUiL()
-	{
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::ShowConnectionSettingsUiL - Entering" );
-		SetListBoxTextL();
-		IRLOG_DEBUG( "CIRCommonSettingsContainer::ShowConnectionSettingsUiL - Exiting" );
-	}
-
-
-
-
-    
-// ---------------------------------------------------------------------------
-// UpdateStatusL()
-// Fetches the new settings values from iIRSettings and updates the list
-// ---------------------------------------------------------------------------
-//
-void CIRCommonSettingsContainer::UpdateStatusL()
-	{	
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::UpdateStatusL - Entering" );
-	iGprsBitRateIndex = iIRSettings->GetGPRSBitrateQuality();
-    i3GBitRateIndex = iIRSettings->Get3GBitrateQuality();
-    iWifiBitRateIndex = iIRSettings->GetWiFiBitrateQuality();
-    LoadSettingsL();
-    SetListBoxTextL();
-    IRLOG_DEBUG( "CIRCommonSettingsContainer::UpdateStatusL - Exiting" );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// SetAccessPointDetailsL()
-// Sets the details of the chosen IAP in cenrep
-// ---------------------------------------------------------------------------
-//
-void CIRCommonSettingsContainer::SetAccessPointDetailsL(TUint aId)
-	{
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::SetAccessPointDetailsL - Entering" );
-	//Get All the bearer IDs(RArray)
-	const RArray<TUint32>& bearerIDArray = iNetworkController->GetBearerList();
-	const RArray<TUint32>& networkIDArray = iNetworkController->GetNetworkList();
-	const RArray<TUint32>& accessPointIDArray = iNetworkController->GetApList();
-	
-	TInt index =0;
-	//Get access point index, that matches the access point stored in 
-	// settings previously
-	for(TInt i=0; i<accessPointIDArray.Count(); i++ )
-		{
-		if(accessPointIDArray[i] == aId )	
-			{
-			index = i;	
-			}
-		}	
-
-	TUint32 bearerId = bearerIDArray[index];
-	TUint32 networkId = networkIDArray[index];
-	TUint32 accessPointId = accessPointIDArray[index];
-
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::SetAccessPointDetailsL - Exiting" );
-	}
-	
-// ---------------------------------------------------------------------------
-// SetListBoxTextL()
-// Sets the text of the Network Selection in the Settings UI
-// ---------------------------------------------------------------------------
-//	
-void CIRCommonSettingsContainer::SetListBoxTextL()
-	{
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::SetListBoxTextL - Entering" );
-
-	IRLOG_DEBUG( "CIRCommonSettingsContainer::SetListBoxTextL - Exiting" );
-	}
-
-
-
-// ======== GLOBAL FUNCTIONS ========
-
--- a/internetradio2.0/settingsviewsrc/irsettingsviewbase.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Base class for the Settings View
-*
-*/
-
-
-#include <bldvariant.hrh>
-#include <featmgr.h>
-#include <hlplch.h>
-#include <pathinfo.h>
-#include <stringloader.h>
-#include <bautils.h>
-#include "ir.hrh"
-#include "ircommonsettingscontainer.h"
-#include "irsettingsviewbase.h"
-#include "irdebug.h"
-#include <aknappui.h>
-#include <akntitle.h> 
-
-
-
-
-// Settings view resource file.
-_LIT( KIRSettingsViewResourceFile, "apps\\internetradio.rsc" );
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-    
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSettingsViewBase::CIRSettingsViewBase()
-    : iSettingsBaseResourceLoader( *iCoeEnv )
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::CIRSettingsViewBase " );
-    }
-    
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::BaseConstructL()
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::BaseConstructL - Entering " );
-    FeatureManager::InitializeLibL();
-    LoadResourcesL( iSettingsBaseResourceLoader, KIRSettingsViewResourceFile );
-    IRLOG_DEBUG( "CIRSettingsViewBase::BaseConstructL - Exiting " );
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSettingsViewBase::~CIRSettingsViewBase()
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::~CIRSettingsViewBase - Entering " );
-	DeleteContainer();
-    FeatureManager::UnInitializeLib();
-    iSettingsBaseResourceLoader.Close();
-    IRLOG_DEBUG( "CIRSettingsViewBase::~CIRSettingsViewBase - Exiting " );
-    }
-
-// ---------------------------------------------------------------------------
-// LoadResourcesL()
-// Loads the required resources.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::LoadResourcesL( RConeResourceLoader& aResourceLoader, 
-                                                   const TDesC& aFileName )
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::LoadResourcesL - Entering " );
-    TFileName resourceFileName( KDC_RESOURCE_FILES_DIR );
-    resourceFileName.Append(aFileName);
-	   
-    ResolveDriveL( iCoeEnv->FsSession(), resourceFileName );
-
-    aResourceLoader.OpenL( resourceFileName );
-    IRLOG_DEBUG( "CIRSettingsViewBase::LoadResourcesL - Exiting " );
-    }
-
-// ---------------------------------------------------------------------------
-// DoActivateL()
-// View activation
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::DoActivateL( const TVwsViewId& aPrevViewId,
-				 TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::DoActivateL - Entering." );
-    
-    CreateContainerL();
-    
-    StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL);
-    
-    iContainer->SetMopParent( this );
-    AppUi()->AddToViewStackL( *this, iContainer );
-    iContainer->ActivateL();
-    iContainer->MakeVisible( ETrue );
-    
-    iPrevViewUid = aPrevViewId.iViewUid;
-    IRLOG_DEBUG( "CIRSettingsViewBase::DoActivateL - Exiting " );
-    
-	}
-
-// ---------------------------------------------------------------------------
-// DoDeactivate()
-// View deactivation
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::DoDeactivate()
-    {
-	IRLOG_DEBUG( "CIRSettingsViewBase::DoDeactivate - Entering " );
-    DeleteContainer();
-    IRLOG_DEBUG( "CIRSettingsViewBase::DoDeactivate - Exiting " );
-    }
-
-// ---------------------------------------------------------------------------
-// HandleCommandL()
-// Command handler.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::HandleCommandL( TInt aCommand )
-    {
-    IRRDEBUG2( " *** Internet Radio -- CIRSettingsViewBase::HandleCommandL(%d)", aCommand );
-    switch ( aCommand )
-        {
-		case EIRCmdChangeSetting: //Falls through
-		case EAknSoftkeyChange:
-			{
-			TBool calledFromMenu = ( aCommand == EIRCmdChangeSetting);
-			iContainer->EditCurrentItemL( calledFromMenu );
-			break;
-        	}
-          
-        case EHelpCmd:
-        	{
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-            				 AppUi()->AppHelpContextL() );
-        	}
-            break;
-            
-        //Only if invoked from settings plugin
-        case EAknSoftkeyBack:
-		case EIRBack:
-			{
-			AppUi()->ActivateLocalViewL( iPrevViewUid );	
-			}
-			break;
-		
-		case EEikCmdExit:
-		case EExitCmd:  //lint -fallthrough
-        case EIRExit:
-		case EAknSoftkeyExit:
-			{
-			AppUi()->HandleCommandL(aCommand);
-			}
-		
-		break;
-		
-        default:
-        	AppUi()->HandleCommandL(aCommand);
-        break;
-        }
-	    IRLOG_DEBUG( "CIRSettingsViewBase::HandleCommandL - Exiting " );
-    }
- 
-// ---------------------------------------------------------------------------
-// HandleForegroundEventL()
-// Handles changes in keyboard focus when an application switches to foreground
-// ---------------------------------------------------------------------------
-// 
- 
- EXPORT_C void CIRSettingsViewBase::HandleForegroundEventL( TBool aForeground )
-	 {
-	 IRLOG_DEBUG( "CIRSettingsViewBase::HandleForegroundEventL - Entering " );
-	 	if(aForeground)
-	 		{
-	 		iContainer->UpdateStatusL();
-	 		}
-	 	IRLOG_DEBUG( "CIRSettingsViewBase::HandleForegroundEventL - Exiting " );
-	 }
- 
- 
-// ---------------------------------------------------------------------------
-// SetTitleL()
-// Sets the Title of the View
-// ---------------------------------------------------------------------------
-// 
- 
- EXPORT_C void CIRSettingsViewBase::SetTitleL( TInt aResourceId )
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::SetTitleL - Entering " );
-    HBufC* title = StringLoader::LoadLC(aResourceId);
-    static_cast<CAknTitlePane*>( StatusPane()->ControlL(
-    			 TUid::Uid( EEikStatusPaneUidTitle ) ) )->SetTextL( *title );
-    CleanupStack::PopAndDestroy( title );
-    IRLOG_DEBUG( "CIRSettingsViewBase::SetTitleL - Exiting " );
-    }
-
-// ---------------------------------------------------------------------------
-// DeleteContainer()
-// Deletes container
-// ---------------------------------------------------------------------------
-//
-void CIRSettingsViewBase::DeleteContainer()
-    {
-	IRLOG_DEBUG( "CIRSettingsViewBase::DeleteContainer - Entering " );
-    if ( iContainer )
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-    	}
-    IRLOG_DEBUG( "CIRSettingsViewBase::DeleteContainer - Exiting " );
-    }
-    
-// ---------------------------------------------------------------------------
-// Static version of ResolveDriveL.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRSettingsViewBase::ResolveDriveL( const RFs& aFs, TFileName& aFileName ) 
-    {
-    IRRDEBUG2( "CIRSettingsViewBase::ResolveDriveL( aFileName = %S )", &aFileName );
-
-    _LIT( resourceFileExt, ".rsc" );
-    
-    TParsePtrC romDrive( PathInfo::RomRootPath() );
-    TParsePtrC phoneDrive( PathInfo::PhoneMemoryRootPath() );
-    TParsePtrC mmcDrive( PathInfo::MemoryCardRootPath() );
-    
-    TParse parse;
-    User::LeaveIfError( parse.Set( mmcDrive.Drive(), NULL, &aFileName ) );
-    
-    TBool isResourceFile = (parse.Ext() == resourceFileExt());
-    
-    aFileName = parse.FullName();
-    
-    if ( isResourceFile )
-        {
-        BaflUtils::NearestLanguageFile( aFs, aFileName );
-        }
-    
-    if ( !BaflUtils::FileExists( aFs, aFileName ) )
-        { 
-        User::LeaveIfError( parse.Set( phoneDrive.Drive(), NULL, &aFileName ) );
-        aFileName = parse.FullName();
-        
-        if ( isResourceFile )
-            {
-            BaflUtils::NearestLanguageFile( aFs, aFileName );
-            }
-        
-        if ( !BaflUtils::FileExists( aFs, aFileName ) )
-            {
-            User::LeaveIfError( parse.Set( romDrive.Drive(), NULL, &aFileName ) );
-            aFileName = parse.FullName();
-            
-            if ( isResourceFile )
-                {
-                BaflUtils::NearestLanguageFile( aFs, aFileName );
-                }
-            
-            if ( !BaflUtils::FileExists( aFs, aFileName ) )
-                {
-                IRRDEBUG2( "CVRSettings::ResolveDriveL - File %S not found!", &aFileName );
-                User::Leave( KErrNotFound );
-                }
-            }
-        }
-
-    IRRDEBUG2( "CIRSettingsViewBase::ResolveDriveL( aFileName = %S )", &aFileName );
-    }
-    
-    
-// ---------------------------------------------------------------------------
-// GetCaptionL()
-// Gets the caption
-// ---------------------------------------------------------------------------
-//    
-
-EXPORT_C void CIRSettingsViewBase::GetCaptionL( TDes& aCaption ) const
-    {
-    IRLOG_DEBUG( "CIRSettingsViewBase::GetCaptionL - Entering " );
-    aCaption.Zero();
-    IRLOG_DEBUG( "CIRSettingsViewBase::GetCaptionL - Exiting " );
-	return;
-    }
-// ======== GLOBAL FUNCTIONS ========
--- a/internetradio2.0/songhistoryinc/irsonghistorydb.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Song History database used for stroing song history entries.
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#ifndef CIRSONGHISTORYDB_H
-#define CIRSONGHISTORYDB_H
-
-#include <d32dbms.h>
-#include "irsettings.h"
-
-class CIRSongHistoryInfo;
-class CIRSettings;
- 
-
-// Maximum no of entries to be stored in the history list.
-const TInt KMaxNoChannelHistoryDbEntries = 30;
-const TInt KMaxNoSongHistoryDbEntries = 100;
-
-// Maximum length of Dbms field string
-const TInt KIRDbMaxStrLen = 255;
-
-const TInt KIRDbMaxChType = 2;
-
-
-
-NONSHARABLE_CLASS(CIRSongHistoryDb) : public RDbNamedDatabase
-	{
-//member functions
-public:
-
-	/**
-	* Function : NewL()
-	* Two phased construction
-	* @return instance of CIRSongHistoryDb
-	*/
-		static CIRSongHistoryDb* NewL();
-
-	/**
-	* Function : NewLC()
-	* Two phased construction
-	* @return instance of CIRSongHistoryDb
-	*/
-		static CIRSongHistoryDb* NewLC();
-
-	/**
-	* Function : ~CIRSongHistoryDb()
-	* default destructor
-	*/
-		~CIRSongHistoryDb();
-
-
-
-    /**
-    * Function : AddToSongHistoryDbL()
-    * adds the song history entry into data base
-    * @param various channel information 
-    */
-    TBool AddToSongHistoryDbL( const TDesC& aSongName,
-                                const TDesC& aArtistName, 
-                                const TDesC& aChannelName, 
-                                const TDesC& aChannelUrl,
-                                RBuf& aDelSongName, 
-                                RBuf& aDelArtistname, 
-                                RBuf& aDelChannelName, 
-                                RBuf& aDelChannelUrl,
-                                TInt  aChannelType,
-                                TInt aChannelId,
-                                TInt aBitrate,
-                                const TDesC& aChannelDesc,
-                                const TDesC& aImageUrl,
-                                const TDesC& aGenreName,
-                                const TDesC& aCountryName,
-                                const TDesC& aLanguageName,
-                                const TDesC& aMusicFlag);
-	 /**
-	 * Function : AddToSongHistoryDb2L()
-	 * adds the song history entry into data base
-	 * @param various song information 
-	 */
-	 TBool AddToSongHistoryDb2L( const TDesC& aSongName,
-	                             const TDesC& aArtistName, 	                                
-                                 const TDesC& aChannelName,
-	                             const TDesC& aMusicFlag);
-
-
-	/**
-	* CIRSongHistoryDb::GetAllSongHistoryListL()
-	* gets all the song history entries  into an array
-	* @param aSongHistoryEntries is the array which is to be filled by the SongHistoryDb. 
-	*/
-
-		void GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aSongHistoryEntries);
-    /**
-	* CIRSongHistoryDb::GetAllSongHistoryList2L()
-	* gets all the song history entries  into an array
-	* @param aSongEntries is the array which is to be filled by the SongHistoryDb. 
-	*/
-		void GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries);
-	/**
-	* Function : ClearAllSongHistoryFromDb
-	* delete all the song entries from the database.
-	*/
-
-		TInt ClearAllSongHistoryFromDb();
-		
-	/**
-	* Function : ClearAllSongHistoryFromDb2
-	* delete all the song entries from the database.
-	*/
-		TInt ClearAllSongHistoryFromDb2();
-
-	/**
-	* Function : CountSongHistoryDb()
-	* count the database entries
-	*/
-
-		TInt CountSongHistoryDb();
-		
-	/**
-	* Function : CountSongHistoryDb2()
-	* count the database entries
-	*/
-		TInt CountSongHistoryDb2();
-
-	/**
-	* Function : GetLastHistoryItemL()
-	* Gives the last added entry in the database
-	* @param Channel data to be filled .
-	*/
-	void GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
-					 RBuf& aChannelName, RBuf& aChannelUrl);
-
-	/**
-	* Function : GetChannelSongsCount()
-	* Returns SongsCount for given channel
-	*/
-	TUint GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl );
-	
-	/**
-	* Function : GetChannelSongsCount()
-	* Updates the song history DB when there is a channel removed in the isds.
-	*/
-    void SyncSongHistoryDbL(TInt aChannelId) ;
-    
-	/**
-	* Function : GetIdPresentInDb()
-	* Gets whether the particular channel ID is present in history DB or not. 
-	*/
-    TBool GetIdPresentInDbL(TInt aChannelId) ;
-    
-	/**
-	* Function : UpdateSongHistoryDb()
-	* Updates the song history DB when there is a channel change in the isds.
-	*/
-    TInt UpdateSongHistoryDbL( TInt aChannelId,
-						      const TDesC& aChannelUrl,
-						      const TDesC& aImageUrl,
-                              const TDesC& aGenreName,
-                              const TDesC& aCountryName,
-                              const TDesC& aLanguageName,						      
-							  const TDesC& aMusicFlag);
-
-    /*
-     * search if a record already exists in database. If yes, delete it.
-     */
-    void SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                TInt aChannelType, TInt aPresetId);
-    
-    /*
-     * delete a recorder by the index, for station history database
-     * */
-    TInt DeleteOneHistory(TInt aIndex);
-    
-    /*
-     * delete a recorder by the index, for songhistory database
-     * */
-    TInt DeleteOneSongHistory(TInt aIndex);
-
-private:
-
-	/**
-	* Function : ConstructL()
-	* two phase construction
-	*/
-    void ConstructL();
-
-    /**
-	* Function : CloseSongHistoryDb()
-	* Closes the database
-	*/
-	void CloseSongHistoryDb();
-
-	/**
-	* Function : CreateSongHistoryTablesL()
-	* creates songhistory table with three columns
-	* log data
-	* ---------------------------------------------------------------------------
-	* SongHistoryTable
-	*---------------------------
-	*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
-	*---------------------------
-	*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
-	*----------------------------------------------------------------------------
-	*/
-	void CreateSongHistoryTablesL();
-	
-    /**
-	* Function : CreateSongHistoryTables2L()
-	* creates songhistory table with three columns
-	* log data
-	* ---------------------------------------------------------------------------
-	* SongHistoryTable
-	*---------------------------
-	*| SongName | ArtistName | ChannelName | MusicStatusFlag
-	*---------------------------
-	*|EDbColText| EDbColText | EDbColText  | EDbColText |
-	*----------------------------------------------------------------------------
-	*/
-	void CreateSongHistoryTables2L();
-
-   /**
-	* Function : CreateDbCondition()
-	* Creates  the dbms file conditionally(only if not yet created)
-	* @param aSongHistoryDbFile the Database file name
-	*/
-	void CreateDbCondition(const TFileName& aSongHistoryDbFile);
-
-
-	/**
-	* Function : OpenSongHistoryDbL()
-	* @param aSongHistoryDbFile the Database file name
-	* opening the data base
-	*/
-	void OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile);
-
-	/**
-	* Function : CreateSongHistoryDb()
-	* creates the dbms files
-	* @param aSongHistoryDbFile database filename
-	*/
-	TInt CreateSongHistoryDb(const TFileName& aSongHistoryDbFile);
-	
-	/**
-	 * to wrapper the delete leaving
-	 */
-	TInt DeleteOneHistoryL(TInt aIndex);
-
-    /**
-     * to wrapper the delete leaving
-     */
-    TInt DeleteOneSongHistoryL(TInt aIndex);
-
-	/**
-	* Data-structure to hold unique channel info
-	*/
-	class CIRChannelInfo : public CBase
-	{
-	public:
-		~CIRChannelInfo()
-		{
-			iChannelUrl.Close();
-			iChannelName.Close();
-		}
-		RBuf iChannelUrl;
-		RBuf iChannelName;
-		TInt iChannelType;
-	};
-	
-
-
-	/**
-	* Comparer function to compare two CIRChannelInfo's
-	*/
-	static TBool CompareChannelInfos(const CIRChannelInfo& aFirst, const CIRChannelInfo& aSecond);
-	 
-//data members
-
-private:
-
-	//	File session
-
-    RFs iFsSession;
-
-
-     //	Table which stores History information
-
-    RDbTable iSongHistoryTable;
-
-    // only save the song info for the song history view.
-	RDbTable iSongHistoryTable2;
-
-    };
-
-#endif  //CIRSONGHISTORYDB_H
-
-
-
-
-
-
-
-
--- a/internetradio2.0/songhistoryinc/irsonghistoryengine.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +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:  Engine class to notify channel name/metadata changes to SongHistoryDb and UI
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-
-#ifndef CIRSONGHISTORYENGINE_H
-#define CIRSONGHISTORYENGINE_H
-
-#include "irsonghistoryengpubsubnotifyhandler.h"
-#include "irsonghistorydb.h"
-
-
-class CIRSongHistoryEngPubSub;
-class MSongHistoryUINotifyHandler;
-class CIRMetaData;
-class CIRSongHistoryInfo;
-class RSongHistoryDb;
-class MIRSongHistoryEngPubSubNotifyHandler;
-
-
-enum TSongHistoryItemChange
-{
-	ENOCHANGE = 0,
-	ECHANNELCHANGED,
-	EMETADATACHANGED,
-	EBLANKENTRIES
-};
-
-/**
-* Engine component for Internet Radio SongHistory.
-* This class is responsible for listening to relevant P&S keys and notifying the UI code whenever the listened keys change.
-*/
-NONSHARABLE_CLASS(CIRSongHistoryEngine) : public CBase,public MIRSongHistoryEngPubSubNotifyHandler
-    {
-    public:
-
-    /**
-    * Static constructor.
-    * @param    aUiObserver   The observer to be notified of the changes in the keys.
-    * @return   The newly created CIRSongHistoryEngine object.
-    */
-    	IMPORT_C static CIRSongHistoryEngine* NewL( MSongHistoryUINotifyHandler& aUiObserver );
-
-    /**
-    * Static constructor.
-    * @param    aUiObserver   The observer to be notified of the changes in the keys.
-    * @return   The newly created CIRSongHistoryEngine object.
-    */
-
-    	IMPORT_C static CIRSongHistoryEngine* NewLC( MSongHistoryUINotifyHandler& aUiObserver );
-
-    /**
-    * Destructor.
-    */
- 	   IMPORT_C ~CIRSongHistoryEngine();
-
-    /**
-    * Construction finalizer.
-    * Must be called after CIRSongHistoryEngine::NewL.
-    */
-	   void ConstructL();
-
-
-	//APIs to serve UI request
-
-    /**
-    * Invoked when UI request.
-    * @param    aArray<CIRSongHistoryInfo>
-    */
-    	IMPORT_C void GetAllHistoryL( RPointerArray<CIRSongHistoryInfo>& aSongHistoryInfo );
-
-    /**
-    * Invoked when UI request.
-    */
-    	IMPORT_C TInt ClearAllHistory( );
-
-    /**
-    * Invoked when UI request.
-    */
-    	IMPORT_C TInt GetHistoryCount( );
-    	
-    /**
-    * Called by the UI when a particular channel has been removed from the ISDS.
-    */
-        IMPORT_C TInt SyncHistory(TInt aChannelId);
-        
-    /**
-    * Called by the UI when a particular channel has been changed in the ISDS.
-    */
-        
-        IMPORT_C void UpdateSongHistoryDb( TInt aChannelId,
-    	                          const TDesC& aChannelName, 
-						          const TDesC& aChannelUrl,
-							      const TDesC& aMusicFlag);
-        
-        /* called by the UI when delete a particular channel
-         * */
-        IMPORT_C TInt DeleteOneHistory(TInt aIndex);
-
-
-  public:
-  //this function made public for our internal testing. Has to be private without IMPORT_C
-		/**
-		* Invoked when the listened key is changed.
-		* @param    aCategory   The category of the key that changed.
-		* @param    aKey        The key that changed.
-		* @param    aText       The new value of the key.
-		*/
-
-			IMPORT_C void HandleMetaDataReceivedL( const CIRMetaData& aMetaData );
-
-	private:
-
-		/**
-		* Invoked when the listened key is changed.
-		* @param    aCategory   The category of the key that changed.
-		* @param    aKey        The key that changed.
-		* @param    aText       The new value of the key.
-		* Single wrapper function to be implemented in the engine class instead of two.
-		*/
-			void HandlePropertyChangeL( const TUid& aCategory, TUint aKey,
-											   const TDesC8& aText ) ;
-
-
-		/**
-		* Invoked when the listened key is changed.
-		* @param    aCategory   The category of the key that changed.
-		* @param    aKey        The key that changed.
-		* @param    aError      The error value.
-		*/
-			void HandlePropertyChangeErrorL( const TUid& aCategory, TUint aKey,
-										 TInt aError );
-
-		/**
-		 * Invoked when data needs to be added
-		 * @param	aMetaData	MetaData that needs to be added
-		 * @param	aChannelName Channel name that needs to be added
-		 */
-		TSongHistoryItemChange DetectSongHistoryItemChangesL(const CIRMetaData& aMetaData,
-					 const RBuf& aChannelName, const RBuf& aChannelUrl);
-
-	private:
-
-		/**
-		* Constructor.
-		* @param    aObserver   The observer to be notified of the changes
-		* in the keys.
-		*/
-			CIRSongHistoryEngine( MSongHistoryUINotifyHandler & aUiObserver );
-
-
-    private:
-
-		/** An instance of songhistory database. */
-		CIRSongHistoryDb* iSongHistoryDb;
-
-
-        /** The observer to be notified of the database changes to the UI */
-		MSongHistoryUINotifyHandler & iUiObserver;
-
-        /** CIRSongHistoryEngPubSub objects subscribing for propery change */
-        CIRSongHistoryEngPubSub *iChannelNameSub;
-        
-        CIRSongHistoryEngPubSub *iMetaDataSub;
-
-    };
-
-#endif//CIRSONGHISTORYENGINE_H
--- a/internetradio2.0/songhistoryinc/irsonghistoryengpubsub.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +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:  Active class notifying metada and channel name changes to SongHistoryDb engine
-*
-*/
-
-#ifndef CIRSONGHISTORYENGPUBSUB_H
-#define CIRSONGHISTORYENGPUBSUB_H
-
-#define KMAXLENGTH 250
-#include <e32base.h>
-#include <e32property.h>
-
-class MIRSongHistoryEngPubSubNotifyHandler;
-
-
-
-/**
-* Listens to one specified Publish & Subscribe key, notifying the observer whenever that key is changed.
-*/
-NONSHARABLE_CLASS(CIRSongHistoryEngPubSub) : public CActive
-    {
-    public:
-
-        /**
-        * Static constructor.
-        * @param    aObserver   The observer to be notified of the changes in the listened key.
-        * @param    aCategory   The category of the key.
-        * @param    aKey        The key to listen to.
-        */
-    static CIRSongHistoryEngPubSub* NewL( MIRSongHistoryEngPubSubNotifyHandler&
-    		aPubSubObserver, const TUid& aCategory, TUint aKey ,
-    		const RProperty::TType aPropertyType  );
-        /**
-        * Static constructor.
-        * @param    aObserver   The observer to be notified of the changes in the listened key.
-        * @param    aCategory   The category of the key.
-        * @param    aKey        The key to listen to.
-        */
-    static CIRSongHistoryEngPubSub* NewLC( MIRSongHistoryEngPubSubNotifyHandler&
-    		aPubSubObserver, const TUid& aCategory, TUint aKey ,
-    		const RProperty::TType aPropertyType  );
-        /**
-        * Destructor.
-        */
-        ~CIRSongHistoryEngPubSub();
-
-
-    protected: // From CActive
-
-        /**
-    *void RunL()
-    *The function is called by the active scheduler
-    *when a request completion event occurs,
-        */
-        void RunL();
-
-        /**
-    *void DoCancel()
-    *Invoked when the active object is cancelled.
-        */
-        void DoCancel();
-
-    private:
-
-        /**
-        * Constructor.
-        * @param    aObserver   The observer to be notified of the changes in the listened key.
-        * @param    aCategory   The category of the key.
-        * @param    aKey        The key to listen to.
-        */
-    CIRSongHistoryEngPubSub( MIRSongHistoryEngPubSubNotifyHandler& aPubSubObserver,
-    	const TUid& aCategory, TUint aKey, const RProperty::TType aPropertyType );
-
-        /**
-        * Second-phase constructor.
-        */
-        void ConstructL();
-
-    protected:
-
-        /** Handle to the property. */
-        RProperty iProperty;
-        RProperty::TType iPropertyType;
-
-        /** The observer to be notified of the changes in the listened key. */
-        MIRSongHistoryEngPubSubNotifyHandler& iPubSubObserver;
-
-        /** The category of the key to listen to. */
-        TUid iCategory;
-
-        /** The key to listen to. */
-        TUint iKey;
-
-        /** The cached value of the key. */
-        mutable TBuf8<KMAXLENGTH> iText;
-
-
-    };
-
-#endif//IR_SONGHISTORYENGPUBSUB
--- a/internetradio2.0/songhistoryinc/irsonghistoryengpubsubnotifyhandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +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:  Interface class to notify channelName/metadata changes CIRSongHistoryDbEngine
-*
-*/
-
-
-#ifndef CIRSONGHISTORYENGPUBSUBNOTIFYHANDLER_H
-#define CIRSONGHISTORYENGPUBSUBNOTIFYHANDLER_H
-
-#include <e32cmn.h>
-
-/**
-* Observer interface for CIRSongHistoryEngPubSub.
-* The observer is notified whenever the listened key is changed. If there was an error in getting the new value of the key,
-* the observer will be notified of it as well.
-*/
-NONSHARABLE_CLASS(MIRSongHistoryEngPubSubNotifyHandler)
-    {
-    public:
-
-        /**
-        * Invoked when the listened key is changed.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aValue      The new value of the key.
-        */
-    /*virtual void HandleChannelNameChangeL( const TUid& aCategory, TUint aKey,
-    									   const TDesC8& aText ) = 0; */
-
-        /**
-        * Invoked when the listened key is changed.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aText       The new value of the key.
-        */
-    /*virtual void HandleMetaDataChangeL( const TUid& aCategory, TUint aKey,
-    	 								const TDesC8& aText ) = 0; */
-
-         /**
-        * Invoked when the listened (property MetaData / ChannelName) key is changed.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aText       The new value of the key.
-        */
-    virtual void HandlePropertyChangeL( const TUid& aCategory, TUint aKey,
-    	 								const TDesC8& aText ) = 0;
-
-
-        /**
-        * Invoked when an error occurred while retrieving the new value of the key.
-        * @param    aCategory   The category of the key that changed.
-        * @param    aKey        The key that changed.
-        * @param    aError      The error code.
-        */
-    virtual void HandlePropertyChangeErrorL( const TUid& aCategory,TUint aKey,
-    										 TInt aError ) = 0;
-    };
-
-#endif//IR_SONGHISTORYDBENGPUBSUBNOTIFYHANDLER
\ No newline at end of file
--- a/internetradio2.0/songhistoryinc/irsonghistoryinfo.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  header for the songhistory information class
-*
-*/
-
-
-#ifndef C_CIRSONGHISTORYINFO_H
-#define C_CIRSONGHISTORYINFO_H
-
-#include <s32mem.h>
-
-/**
- * SongHistory meta data information wrapper.
- */
-NONSHARABLE_CLASS( CIRSongHistoryInfo ) : public CBase
-    {
-
-public:
-
-	/**
-	*Function : NewL
-	*Function returns an instance of CIRSongHistoryInfo
-	*Two phase constructor
-	*@return instance of CIRSongHistoryInfo
-	*/
-    	IMPORT_C static CIRSongHistoryInfo * NewL();
-
-	/**
-	*CIRSongHistoryInfo::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRSongHistoryInfo
-	*/
-		IMPORT_C static CIRSongHistoryInfo* NewLC();
-
-	/**
-	*CIRSongHistoryInfo::~CIRSongHistoryInfo()
-	*standard C++ destructor
-	*/
-		IMPORT_C ~CIRSongHistoryInfo();
-
-	/**
-	*CIRSongHistoryInfo::SetHistoryInfoL()
-	*Function to set songhistory ingo from a RBuf
-	*/
-
-		IMPORT_C void SetHistoryInfo(RBuf& aSongName,
-									 RBuf& aArtist, 
-									 RBuf& aStreamUrl, 
-									 RBuf& aChannelName,
-									 TInt aChannelType , 
-									 TInt aChannelId,
-									 TInt aBitrate,
-									 RBuf& aChannelDesc,
-									 RBuf& aImageUrl,
-                                     RBuf& aGenreName,
-                                     RBuf& aCountryName,
-                                     RBuf& aLanguageName,									 
-									 RBuf& aMusicStoreStatus );
-
-	/**
-	*CIRSongHistoryInfo::SetChannelName()
-	*Function to set channel name from a RBuf
-	*@param RBuf aChannelName
-	*/
-
-		void SetChannelName(RBuf& aChannelName);
-
-	/**
-	*CIRSongHistoryInfo::SetArtist()
-	*Function to set artist name from a RBuf
-	*@param RBuf aArtist
-	*/
-
-		void SetArtist(RBuf& aArtist);
-
-	/**
-	*CIRSongHistoryInfo::SetSongName()
-	*Function to set song name from a RBuf
-	*@param RBuf aSongName
-	*/
-
-  		void SetSongName (RBuf& aSongName);
-
-	/**
-	*CIRSongHistoryInfo::SetStreamUrl()
-	*Function to set stream url from a RBuf
-	*@param RBuf aStreamUrl
-	*/
-
-		void SetStreamUrl(RBuf& aStreamUrl);
-
-	/**
-	*CIRSongHistoryInfo::GetSongInfo()
-	*Function to get song name from a TDesC
-	*@return RBuf& instance 
-	*/
-
-		IMPORT_C const RBuf& GetSongInfo() const;
-
-	/**
-	*CIRSongHistoryInfo::GetArtistName()
-	*Function to get artist name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		IMPORT_C const RBuf& GetArtistInfo() const;
-
-	/**
-	*CIRSongHistoryInfo::GetStreamUrl()
-	*Function to get url name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		 IMPORT_C const RBuf& GetStreamUrl() const;
-
-	/**
-	*CIRSongHistoryInfo::GetChannelName()
-	*Function to get channel name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		IMPORT_C const RBuf& GetChannelName() const;
-		
-	/**
-	*CIRSongHistoryInfo::GetChannelType()
-	*Function to get channel Type
-	*@return TInt channeltype
-	*/
-	    IMPORT_C  TInt GetChannelType() const;
-	    
-	/**
-	*CIRSongHistoryInfo::SetChannelType()
-	*Function to set channel Type
-	*@param TInt aChannelImgUrl
-	*/
-	    void SetChannelType(TInt aChannelImgUrl);
-	/**
-	*CIRSongHistoryInfo::SetChannelId()
-	*Function to set channel Id
-	*@param TInt aChannelId
-	*/
-	    void SetChannelId(TInt aChannelId);
-	/**
-	*CIRSongHistoryInfo::GetChannelId()
-	*Function to get channel Id
-	*@return TInt channelId
-	*/
-	    IMPORT_C  TInt GetChannelId() const;
-	/**
-	*CIRSongHistoryInfo::SetBitrate()
-	*Function to set bitrate
-	*@param TInt aBitrate
-	*/
-        void SetBitrate(TInt aBitrate);
-    /**
-    *CIRSongHistoryInfo::GetBitrate()
-    *Function to get bitrate
-    *@return TInt aBitrate
-    */
-        IMPORT_C  TInt GetBitrate() const;
-	/**
-	*CIRSongHistoryInfo::GetChannelDesc()
-	*Function to get channel Description
-	*@return RBuf& instance
-	*/
-        IMPORT_C const RBuf& GetChannelDesc() const ;
-	/**
-	*CIRSongHistoryInfo::SetChannelDesc()
-	*Function to set channel Description
-	* @param RBuf aChannelDesc
-	*/
-        void SetChannelDesc(RBuf& aChannelDesc) ;
-    /**
-    *CIRSongHistoryInfo::GetImageUrl()
-    *Function to get channel image Url
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetImageUrl() const ;
-    /**
-    *CIRSongHistoryInfo::SetImageUrl()
-    *Function to set channel image Url
-    * @param RBuf aImageUrl
-    */        
-        void SetImageUrl(RBuf& aImageUrl) ;
-    /**
-    *IRQSongHistoryInfo::GetGenreName()
-    *Function to get channel genre name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetGenreName() const;
-    /**
-    *CIRSongHistoryInfo::SetGenreName()
-    *Function to set channel genre name
-    * @param RBuf aGenreName
-    */        
-        void SetGenreName(const RBuf& aGenreName);
-    /**
-    *IRQSongHistoryInfo::GetCountryName()
-    *Function to get channel country name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetCountryName() const;
-    /**
-    *CIRSongHistoryInfo::SetCountryName()
-    *Function to set channel country name
-    * @param RBuf& aCountryName
-    */        
-        void SetCountryName(const RBuf& aCountryName);
-    /**
-    *IRQSongHistoryInfo::getLanguageName()
-    *Function to get channel language name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetLanguageName() const;
-    /**
-    *CIRSongHistoryInfo::SetLanguageName()
-    *Function to set channel language name
-    * @param RBuf aLanguageName
-    */        
-        void SetLanguageName(const RBuf& aLanguageName);        
-	/**
-	*CIRSongHistoryInfo::SetChannelMusicStatus()
-	*Function to set Channel MusicStoreStatus
-	*@param RBuf aChannelMusicStatus
-	*/
-        void SetChannelMusicStatus(RBuf& aChannelMusicStatus) ;
-	/**
-	*CIRSongHistoryInfo::GetChannelMusicStatus()
-	*Function to get channel MusicStoreStatus
-	*@return RBuf& instance
-	*/
-        IMPORT_C const RBuf& GetChannelMusicStatus() const ;
-private:
-
-    /**
-     * Default constructor.
-     */
-
-		CIRSongHistoryInfo();
-
-
-private: //data
-
-	/**
-     * The name of the artist.
-     */
-		RBuf iArtistInfo;
-
-    /**
-     * The name of the song.
-     */
-		RBuf iSongInfo;
-
-    /**
-     * The stream URL.
-	 */
-		RBuf iStreamUrlInfo;
-
-    /**
-     * Channel Name.
-     */
-		RBuf iChannelInfo;
-		
-    /**
-     * Channel Type.
-     */
-		TInt iChannelType;
-		
-		
-    /**
-     * Channel Description.
-     */
-		RBuf iChannelDescription;
-    /**
-	 * Channel Description.
-     */
-        RBuf iImageUrl;
-        RBuf iGenreName;
-        RBuf iCountryName;
-        RBuf iLanguageName;
-    /**
-     * Channel Id.
-     */
-		TInt iChannelId;
-
-	/**
-	 * Channel bitrate.
-	 */
-	TInt iBitrate;
-		
-    /**
-     * Channel's MusicStoreStatus.
-     */
-		RBuf iMusicStoreStatus;
-
-    };
-
-#endif // C_CIRSONGHISTORYINFO_H
--- a/internetradio2.0/songhistoryinc/uinotifyhandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +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:  Interface class to notify database changes to SongHistoryView
-*
-*/
-
-
-#ifndef IR_SONGHISTORYUINOTIFYHANDLER
-#define IR_SONGHISTORYUINOTIFYHANDLER
-
-#include <e32cmn.h>
-
-/**
-* Observer interface for CIRSongHistoryView.
-* Notifies the view when new data is received.
-*/
-class MSongHistoryUINotifyHandler
-    {
-		public:
-
-			/**
-			* Invoked from CIRSongHistoryDbEng when new entry is added to the database.
-			* @param    aSongName
-			* @param    aArtistName
-			* @param    aChannelName
-			* Parameters yet to be decided.
-			*/
-				virtual void NextSongReceivedL( const TDesC& aSongName, const TDesC& aArtistName,
-							 const TDesC& aChannelName, const TDesC& aChannelUrl ) = 0;
-
-				virtual void ChannelChangedL( const TDesC& aSongName, const TDesC& aArtistName,
-						 const TDesC& aChannelName, const TDesC& aChannelUrl ) = 0;
-
-			/**
-			* Invoked from CIRSongHistoryDbEng when new entry is added to the database which *would exceed 30 entries.
-			* @param    aSongName
-			* @param    aArtistName
-			* @param    aChannelName
-			*/
-				virtual TInt RemoveSongEntry( const TDesC& aSongName, const TDesC& aArtistName,
-						const TDesC& aChannelName, const TDesC& aChannelUrl ) = 0;
-
-				virtual TInt RemoveChannelEntry( const TDesC& aSongName, const TDesC& aArtistName,
-							const TDesC& aChannelName, const TDesC& aChannelUrl ) = 0;
-
-			/**
-			* Invoked when an error occurred while notifying to UI.
-			* @param    aError      The error code.
-			*/
-				virtual void NotifyDataChangeToUIError( TInt aError ) = 0;
-
-    };
-
-#endif //IR_SONGHISTORYUINOTIFYHANDLER
--- a/internetradio2.0/songhistorysrc/irsonghistorydb.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1309 +0,0 @@
-/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the songhistory database
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-* 
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include <bautils.h>
-#include <badesca.h>    // CDesCArrayFlat
-#include <s32file.h>    // CFileStore & CPermanentFileStore
-#include <bautils.h>    // file helpers
-#include <eikenv.h>
-
-#include "irsonghistorydb.h"
-#include "irsonghistoryinfo.h"
-#include "irdebug.h"
-#include "irsettings.h"
-
-
- 
-_LIT( KSongHistoryDBTable,              "ChannelHistoryTable"  );
-_LIT( KSongHistoryDBTable2,             "SongHistoryTable"  );
-_LIT( KSongHistoryDBSongNameColumn,     "SongName"	   );
-_LIT( KSongHistoryDBArtistNameColumn,   "ArtistName"   );
-_LIT( KSongHistoryDBChannelNameColumn,  "ChannelName"  );
-_LIT( KSongHistoryDBChannelUrlColumn,   "ChannelUrl"  );
-_LIT( KSongHistoryDBChannelTypeColumn,   "ChannelType"  );
-_LIT( KSongHistoryDBChannelIdColumn,   "ChannelId"  );
-_LIT( KSongHistoryDBBitrateColumn,   "Bitrate"  );
-_LIT( KSongHistoryDBChannelDescColumn,   "ChannelDescription"  );
-_LIT( KSongHistoryDBImageUrlColumn,   "ImageUrl"  );
-_LIT( KSongHistoryDBGenreNameColumn,   "GenreName"  );
-_LIT( KSongHistoryDBCountryNameColumn,   "CountryName"  );
-_LIT( KSongHistoryDBLanguageNameColumn,   "LanguageName"  );
-_LIT( KSongHistoryDBMusicStatusColumn,   "MusicStoreStatus"  );
-
-_LIT(KSongHistoryDbFile,"songhistoryDb.db");
-_LIT(KNo , "No") ;
-
-const TInt KMaxSize = 255;
-
-const TInt KMaxColumnLength = 255;
-TBool CIRSongHistoryDb::CompareChannelInfos(const CIRChannelInfo& aFirst,
-						 const CIRChannelInfo& aSecond)
-{
-   return ( aFirst.iChannelName == aSecond.iChannelName && 
-   					aFirst.iChannelUrl == aSecond.iChannelUrl &&
-   					aFirst.iChannelType == aSecond.iChannelType);
-}
-
- 
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewL()
-// two phased construction
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb* CIRSongHistoryDb::NewL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewL" );
-	CIRSongHistoryDb* self=CIRSongHistoryDb::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewL - Exiting." );
-	return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// Function : NewLC()
-// Two phased construction
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb* CIRSongHistoryDb::NewLC()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC" );
-	CIRSongHistoryDb *self=new(ELeave)CIRSongHistoryDb;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC - Exiting." );
-	return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::~CIRSongHistoryDb()
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb::~CIRSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb" );
-
-	CloseSongHistoryDb();
-	iFsSession.Close();
-	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CreateDbCondition()
-// Creates both the dbms files conditionally(only if not yet created)
-// calls CreateSongHistoryDb()
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::CreateDbCondition(const TFileName& aSongHistoryDbFile)
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition" );
-
-
-	if( !BaflUtils::FileExists(iFsSession, aSongHistoryDbFile) )
-	{
-		TInt error = CreateSongHistoryDb(aSongHistoryDbFile);
-		if( error )
-		{
-			IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (1)." );
-			
-		}
-	}
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (2)." );
-	
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb:AddToSongHistoryDbL()
-// adds the session log entry into data base
-// Returns ETure if songHistory count exceeds 30, else EFalse
-// ---------------------------------------------------------------------------
-//
-TBool CIRSongHistoryDb::AddToSongHistoryDbL(const TDesC& aSongName,
-                                            const TDesC& aArtistName, 
-                                            const TDesC& aChannelName, 
-                                            const TDesC& aChannelUrl,
-                                            RBuf& aDelSongName, 
-                                            RBuf& aDelArtistName, 
-                                            RBuf& aDelChannelName, 
-                                            RBuf& aDelChannelUrl,
-                                            TInt  aChannelType,
-                                            TInt aChannelId,
-                                            TInt aBitrate,
-                                            const TDesC& aChannelDesc,
-                                            const TDesC& aImageUrl,
-                                            const TDesC& aGenreName,
-                                            const TDesC& aCountryName,
-                                            const TDesC& aLanguageName,                                                
-                                            const TDesC& aMusicFlag
-                                            )
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL" );
-
-	TBool bRetval = EFalse;
-	TInt error= 0;
-
-	iSongHistoryTable.Reset();
-
-	//if song history entries are  greater than or equal to 30
-	if( iSongHistoryTable.CountL() >= KMaxNoChannelHistoryDbEntries )
-	{
-		//first row is selected
-		iSongHistoryTable.FirstL();
-
-		//the current row is selected
-		iSongHistoryTable.GetL();
-
-		//delete that entry
-		CDbColSet* columns = iSongHistoryTable.ColSetL();
-		TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-		TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-		TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-		TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-
-		delete columns;
-		columns = NULL;
-
-        aDelSongName.Create(iSongHistoryTable.ColDes( songColumn ));
-        aDelArtistName.Create(iSongHistoryTable.ColDes( artistColumn ));
-        aDelChannelName.Create(iSongHistoryTable.ColDes( channelColumn ));
-        aDelChannelUrl.Create(iSongHistoryTable.ColDes( channelUrlColumn ));
-        
-        iSongHistoryTable.DeleteL();
-        Compact();
-
-        bRetval = ETrue;
-	}
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    CleanupStack::PushL(columns);
-
-	const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
-	const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
-	const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
-	const TPtrC &channelUrl = aChannelUrl.Left(KIRDbMaxStrLen);
-    const TPtrC &channelDesc = aChannelDesc.Left(KIRDbMaxStrLen);
-    const TPtrC &imageUrl = aImageUrl.Left(KIRDbMaxStrLen);
-    const TPtrC &genreName = aGenreName.Left(KIRDbMaxStrLen);
-    const TPtrC &countryName = aCountryName.Left(KIRDbMaxStrLen);
-    const TPtrC &languageName = aLanguageName.Left(KIRDbMaxStrLen);
-	
-	TInt songLen = aSongName.Length();
-	TInt artistLen = aArtistName.Length();
-	if(  songLen + artistLen > KMaxSize )
-	{
-		IRLOG_DEBUG3( "CIRSongHistoryDb::AddSongHistoryStartL - LONG METADATA %d, %d", songLen, artistLen );
-	}
-	
-	TRAP(error,//trap start
-
-  		iSongHistoryTable.InsertL();
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelUrlColumn ), channelUrl);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelTypeColumn ), aChannelType);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelIdColumn ), aChannelId);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBBitrateColumn ), aBitrate);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelDescColumn ), channelDesc);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBImageUrlColumn ), imageUrl);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBGenreNameColumn ), genreName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBCountryNameColumn ), countryName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBLanguageNameColumn ), languageName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), aMusicFlag);
-		iSongHistoryTable.PutL();
-		);
-
- 	CleanupStack::PopAndDestroy(columns); 
- 	if( error!=KErrNone )
- 	{
-	 	User::LeaveIfError(error);
- 	}
-    
- 	iSongHistoryTable.Reset();
- 	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
-
-	return bRetval;
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb:AddToSongHistoryDb2L()
-// adds the history song into the db
-// Returns ETure if songHistory count exceeds 100, else EFalse
-// ---------------------------------------------------------------------------
-
-TBool CIRSongHistoryDb::AddToSongHistoryDb2L( const TDesC& aSongName,
-                                    const TDesC& aArtistName,                                   
-                                    const TDesC& aChannelName,
-                                    const TDesC& aMusicFlag)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::AddToSongHistoryDb2L" );
-
-    TBool bRetval = EFalse;
-    TInt error= 0;
-    TInt songCompareFlag = 0;
-    TInt artistCompareFlag = 0;    
-     
-
-    iSongHistoryTable2.Reset();    
-    
-    CDbColSet* columns = iSongHistoryTable2.ColSetL();
-    CleanupStack::PushL(columns);
-    
-    /* the following is to judge wether the song is already in the db */    
-    if ( iSongHistoryTable2.CountL() >= 1 )
-    {
-        TInt songNameColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-        TInt artistNameColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
-
-        for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
-        {
-            iSongHistoryTable2.GetL();
-            RBuf songName;
-            RBuf artistName;
-            
-            songName.Create(iSongHistoryTable2.ColDes( songNameColumn ));
-            songName.CleanupClosePushL();
-            
-            artistName.Create(iSongHistoryTable2.ColDes( artistNameColumn ));
-            artistName.CleanupClosePushL();    
-            
-            songCompareFlag = (songName).Compare(aSongName);
-            artistCompareFlag = (artistName).Compare(aArtistName);
-            
-            CleanupStack::PopAndDestroy(&artistName);       
-            CleanupStack::PopAndDestroy(&songName);
-            
-            if( 0 == songCompareFlag && 0 == artistCompareFlag )
-            {
-                CleanupStack::PopAndDestroy(columns); 
-                iSongHistoryTable2.Reset();
-                return bRetval;
-            }
-        }        
-    }
-	/* end  */
-    
-    //if song history entries are  greater than or equal to 100
-    if( iSongHistoryTable2.CountL() >= KMaxNoSongHistoryDbEntries )
-    {
-        //first row is selected
-        iSongHistoryTable2.FirstL();
-        //the current row is selected
-        iSongHistoryTable2.GetL();       
-        //delete the current row
-        iSongHistoryTable2.DeleteL();
-        Compact();     
-        bRetval = ETrue;   
-    }
-    
-    const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
-    const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
-    const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
-    const TPtrC &musicFlag = aMusicFlag.Left(KIRDbMaxStrLen);
-     
-    
-    TInt songLen = aSongName.Length();
-    TInt artistLen = aArtistName.Length();
-    if(  songLen + artistLen > KMaxSize || aChannelName.Length() > KMaxSize)
-    {
-        IRLOG_DEBUG3( "CIRSongHistoryDb::AddToSongHistoryDb2L - too long song info: %d or channel info: %d", songLen+artistLen, aChannelName.Length() );
-    }
-    
-    TRAP(error,//trap start
-
-        iSongHistoryTable2.InsertL();
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);        
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);        
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), musicFlag);
-        iSongHistoryTable2.PutL();
-        );
-
-    CleanupStack::PopAndDestroy(columns); 
-    if( error!=KErrNone )
-    {
-        User::LeaveIfError(error);
-    }
-    
-    iSongHistoryTable2.Reset();
-    IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
-
-    return bRetval;  
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetAllSongHistoryListL()
-//  gets all the song history entries  into an array
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aHistoryDataArr)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL" ); 	 
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL; 	 
-    
- 	TInt song = 0;
- 	
- 	
-    for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() ) 	 
-    {
-        iSongHistoryTable.GetL();
-        
-        RBuf songName;
-        RBuf artistName;
-        RBuf channelName;
-        RBuf channelUrl;
-        TInt channelType;
-        TInt channelId;
-        TInt bitrate;
-        RBuf channelDesc;
-        RBuf imageUrl;
-        RBuf genreName;
-        RBuf countryName;
-        RBuf languageName;
-        RBuf channelMusicStatus;
-        
-        songName.CreateL(iSongHistoryTable.ColDes( songColumn ));
-        songName.CleanupClosePushL();
-        
-        artistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
-        artistName.CleanupClosePushL();
-        
-        channelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
-        channelName.CleanupClosePushL();
-        
-        channelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
-        channelUrl.CleanupClosePushL();
-        
-        channelType=iSongHistoryTable.ColUint8( channelTypeColumn );
-        
-        channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-        
-        bitrate=iSongHistoryTable.ColUint16( bitrateColumn );
-        
-        channelDesc.CreateL(iSongHistoryTable.ColDes( channelDescColumn ));
-        channelDesc.CleanupClosePushL();
-
-        imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
-        imageUrl.CleanupClosePushL();
-
-        genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
-        genreName.CleanupClosePushL();
-
-        countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
-        countryName.CleanupClosePushL();
-
-        languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
-        languageName.CleanupClosePushL();
-
-        channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
-        channelMusicStatus.CleanupClosePushL();
- 
-        aHistoryDataArr[song]->SetHistoryInfo(songName, artistName, channelUrl,
-                         channelName,channelType,channelId,bitrate,channelDesc ,
-                         imageUrl, genreName, countryName, languageName, channelMusicStatus);
-        ++song;        
-        CleanupStack::PopAndDestroy(&channelMusicStatus);
-        CleanupStack::PopAndDestroy(&languageName);
-        CleanupStack::PopAndDestroy(&countryName);
-        CleanupStack::PopAndDestroy(&genreName);
-        CleanupStack::PopAndDestroy(&imageUrl);
-        CleanupStack::PopAndDestroy(&channelDesc);
-        CleanupStack::PopAndDestroy(&channelUrl);
-        CleanupStack::PopAndDestroy(&channelName);
-        CleanupStack::PopAndDestroy(&artistName);
-        CleanupStack::PopAndDestroy(&songName);
-    }        
- 
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetAllSongHistoryList2L()
-//  gets all the song history entries  into an array
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryList2L" );    
-
-    if(iSongHistoryTable2.CountL() < 1)
-    {
-        return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable2.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
-    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );     
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-    
-    TInt song = 0;
-    
-    for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
-    {
-        iSongHistoryTable2.GetL();
-         
-        RBuf songName;
-        RBuf artistInfo, channelName;
-        RBuf musicStatus;
-        
-        songName.Create(iSongHistoryTable2.ColDes( songColumn ));
-        songName.CleanupClosePushL();
-        
-        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);        
-    }
-     
-    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// Function : ClearAllSongHistoryFromDb
-// delete all the entries from the database.
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb(/*RPointerArray<CIRSongHistoryInfo>& aSongHistoryInfoArr*/)
-{
-
-	TInt error = KErrNone;
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Entering" );
-	TRAP(error, iSongHistoryTable.FirstL());
-	if(error != KErrNone)
-	{
-		return error;
-	}
-
-    while (iSongHistoryTable.AtRow())
-	{
-		TRAPD(error,
-		iSongHistoryTable.GetL();
-		iSongHistoryTable.DeleteL();
-		iSongHistoryTable.NextL(););
-		if(error)
-		{
-		    Compact();
-		    return error;
-		}
-	}
-	
-    Compact();
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
-	return KErrNone;
-
-}
-
-TInt CIRSongHistoryDb::DeleteOneHistory(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - Entering" );
-    
-    TInt retValue = 0;
-    TRAPD(error,(retValue = DeleteOneHistoryL(aIndex)));
-    
-    if( KErrNone != error )
-    {
-        return error;
-    }
-    
-    if( KErrNone != retValue)
-    {
-        return retValue;
-    }    
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - exiting" );    
-    return KErrNone;
-}
-
-TInt CIRSongHistoryDb::DeleteOneHistoryL(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - Entering" );
-    TInt totalCount = iSongHistoryTable.CountL();     
-    if (aIndex < 0 || aIndex >= totalCount)
-    {
-        return KErrArgument;
-    }
-	
-    iSongHistoryTable.LastL();
-    TInt tempIndex = 0;     
-    while (tempIndex < aIndex)
-    {
-        TRAPD(error,iSongHistoryTable.PreviousL());
-        if (KErrNone != error)
-        {
-            Compact();
-            return error;
-        }
-        tempIndex++;
-    }
-    
-    iSongHistoryTable.GetL();
-    iSongHistoryTable.DeleteL();
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - exiting" );   
-    return KErrNone;    
-}
-
-TInt CIRSongHistoryDb::DeleteOneSongHistory(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - Entering" );
-    
-    TInt retValue = 0;
-    TRAPD(error,(retValue = DeleteOneSongHistoryL(aIndex)));
-    
-    if( KErrNone != error )
-    {
-        return error;
-    }
-    
-    if( KErrNone != retValue)
-    {
-        return retValue;
-    }    
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - exiting" );    
-    return KErrNone;
-}
-
-TInt CIRSongHistoryDb::DeleteOneSongHistoryL(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - Entering" );
-    TInt totalCount = iSongHistoryTable2.CountL();     
-    if (aIndex < 0 || aIndex >= totalCount)
-    {
-        return KErrArgument;
-    }
-    
-    iSongHistoryTable2.LastL();
-    TInt tempIndex = 0;     
-    while (tempIndex < aIndex)
-    {
-        TRAPD(error,iSongHistoryTable2.PreviousL());
-        if (KErrNone != error)
-        {
-            Compact();
-            return error;
-        }
-        tempIndex++;
-    }
-    
-    iSongHistoryTable2.GetL();
-    iSongHistoryTable2.DeleteL();
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - exiting" );   
-    return KErrNone;    
-}
-
-// ---------------------------------------------------------------------------
-// Function : ClearAllSongHistoryFromDb2
-// delete all the entries from the database.
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb2()
-{
-
-    TInt error = KErrNone;
-
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb2 - Entering" );
-    TRAP(error, iSongHistoryTable2.FirstL());
-    if(error != KErrNone)
-    {
-        return error;
-    }
-
-    while (iSongHistoryTable2.AtRow())
-    {
-        TRAPD(error,
-        iSongHistoryTable2.GetL();
-        iSongHistoryTable2.DeleteL();
-        iSongHistoryTable2.NextL(););
-        if(error)
-        {
-            Compact();
-            return error;
-        }
-
-    }
-    Compact();
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
-    return KErrNone;
-
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::ConstructL()
-// Standard 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::ConstructL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL" );
-	User::LeaveIfError(iFsSession.Connect());
-
-	CIRSettings* settings = CIRSettings::OpenL();
-
-	TFileName songHistoryDbFile = settings->PrivatePath();
-	songHistoryDbFile.Append(KSongHistoryDbFile);
-
-	CreateDbCondition(songHistoryDbFile);
-	OpenSongHistoryDbL(songHistoryDbFile);
-
-	settings->Close();
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL- Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CloseSongHistoryDb()
-// Closes the database
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::CloseSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb" );
-	iSongHistoryTable.Close();
-	iSongHistoryTable2.Close();
-	Close();
-	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb - Exiting." );
-}
-
-
-/**
-* Function : CreateSongHistoryTablesL()
-* creates songhistory table with three columns
-* log data
-* ---------------------------------------------------------------------------
-* SongHistoryTable
-*---------------------------
-*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
-*---------------------------
-*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
-*----------------------------------------------------------------------------
-*/
-void CIRSongHistoryDb::CreateSongHistoryTablesL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    TRAPD( error,
-    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelUrlColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelTypeColumn, EDbColUint8 ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelIdColumn, EDbColUint16 ) );
-    columns->AddL( TDbCol( KSongHistoryDBBitrateColumn, EDbColUint16 ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelDescColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBImageUrlColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBGenreNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBCountryNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBLanguageNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
-    );
-	User::LeaveIfError( error );
-
-    User::LeaveIfError( CreateTable( KSongHistoryDBTable, *columns ) );
-
-    CleanupStack::PopAndDestroy( columns );
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
-}
-
-/**
-* Function : CreateSongHistoryTables2L()
-* creates songhistory table with three columns
-* log data
-* ---------------------------------------------------------------------------
-* SongHistoryTable
-*---------------------------
-*| SongName | ArtistName | ChannelName | MusicStatusFlag 
-*---------------------------
-*|EDbColText| EDbColText | EDbColText  | EDbColText 
-*----------------------------------------------------------------------------
-*/
-void CIRSongHistoryDb::CreateSongHistoryTables2L()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    TRAPD( error,
-    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
-    );
-	User::LeaveIfError( error );
-
-    User::LeaveIfError( CreateTable( KSongHistoryDBTable2, *columns ) );
-
-    CleanupStack::PopAndDestroy( columns );
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
-}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::OpenSongHistoryDbL()
-// opening the data base
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile)
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL" );
-	CloseSongHistoryDb(); //Ensure that the database is closed before trying to open it.
-
-	 
-    TInt error  = KErrNone;
- 
-	error = Open(iFsSession,aSongHistoryDbFile);
-	if( error!=KErrNone )
-	{
-		//if database is failed to open then
-		//function leaves
-		IRLOG_ERROR2( "CIRSongHistoryDb::OpenSongHistoryDbL - Opening session database failed (%d)", error );
-		User::LeaveIfError(error);
-	}
-	if( IsDamaged() || !InTransaction() )
-	{
-		//if data base is damaged then
-		//it tried to recover
-		//if recovery is not possible function leaves
-		error = Recover();
-		if ( KErrNone == error)
-			{
-			//if recovered data base is compacted
-			error = Compact();
-			}
-	    User::LeaveIfError(error);
-	}
-
-	//open the table
-	error = iSongHistoryTable.Open(*this, KSongHistoryDBTable, iSongHistoryTable.EUpdatable);
-	if( error )
-	{
-		User::LeaveIfError(error);
-	}
-
-	error = iSongHistoryTable2.Open(*this, KSongHistoryDBTable2, iSongHistoryTable2.EUpdatable);
-	if( error )
-	{
-	    iSongHistoryTable.Close();
-		User::LeaveIfError(error);
-	} 
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CreateSongHistoryDb()
-// @database filename
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::CreateSongHistoryDb(const TFileName& aSongHistoryDbFile )
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb" );
-
-
-	TInt error = Replace(iFsSession,aSongHistoryDbFile);
-	if ( error != KErrNone )
-    {
-	    IRLOG_ERROR2( "CIRSongHistoryDb::CreateSongHistoryDb - Creating history database failed (%d)", error );
-	    return error;
-    }
-
-	TRAPD(err1,CreateSongHistoryTablesL());
-	if(err1)
-	{
-	    return err1;
-	}
-
-	//if error, no handling 
-	TRAPD(err2, CreateSongHistoryTables2L());
-	if( err2 )
-	{
-	    return err2;	  
-	}	
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb - Exiting." );
-	return KErrNone;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CountSongHistoryDb()
-// count the database entries
-// ---------------------------------------------------------------------------
-//
-
-TInt CIRSongHistoryDb::CountSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
-	TInt historyCount = 0;
-	iSongHistoryTable.Reset();
-	TRAPD(error,historyCount= iSongHistoryTable.CountL());
-	if(error)
-	{
-		
-	}
-	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
- 	return historyCount;
-
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CountSongHistoryDb2()
-// count the database entries
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::CountSongHistoryDb2()
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
-    TInt historyCount = 0;
-    iSongHistoryTable2.Reset();
-    TRAPD(error,historyCount= iSongHistoryTable2.CountL());
-    if(error)
-    {
-        historyCount = -1;
-    }
-    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
-    return historyCount;
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetLastHistoryItemL()
-// Gets the last song history item
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
-				 RBuf& aChannelName, RBuf& aChannelUrl)
-{
-	if( iSongHistoryTable.IsEmptyL() || iSongHistoryTable.LastL() == EFalse)
-	{
-		return;
-	}
-
-	iSongHistoryTable.GetL();
-
-	CDbColSet* columns = iSongHistoryTable.ColSetL();
-	TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-	TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-	TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-	TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-
-	delete columns;
-    columns = NULL;
-
-    aSongName.Create(iSongHistoryTable.ColDes( songColumn ));
-    aArtistName.Create(iSongHistoryTable.ColDes( artistColumn ));
-    aChannelName.Create(iSongHistoryTable.ColDes( channelColumn ));
-    aChannelUrl.Create(iSongHistoryTable.ColDes( channelUrlColumn ));
-
-
-    iSongHistoryTable.Reset();
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetChannelSongsCountL()
-// Gets the channel's song count.
-// ---------------------------------------------------------------------------
-//
-
-TUint CIRSongHistoryDb::GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl )
-{
-	_LIT( strQuery, "Select SongName from SongHistoryTable where ChannelName='%S' AND ChannelUrl='%S'");
-
-	TBuf<KMaxSize>  bufQuery;
-	bufQuery.Format( strQuery, &aChannelName, &aChannelUrl );
-
-	TDbQuery	querySearchChannel( bufQuery );
-	RDbView		dbView;
-
-	TInt error = dbView.Prepare( *this, querySearchChannel );
-	User::LeaveIfError(error);
-
-	error = dbView.Evaluate();	// 0, evaluation is complete 
-	User::LeaveIfError(error);
-
-	TInt cRows = dbView.CountL();
-
-	dbView.Close();
-
-	return cRows;
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::SyncSongHistoryDb()
-// Synchronises the History DB with removed channel entry in the ISDS
-// ---------------------------------------------------------------------------
-//
-
-void CIRSongHistoryDb::SyncSongHistoryDbL(TInt aChannelId)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL" );
-
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-			// Extracting the values from the database.
-				TInt channelId;
-				RBuf imageUrl, genreName, countryName, languageName;
-                RBuf channelMusicStatus;
-                
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                imageUrl.Create(iSongHistoryTable.ColDes( imageUrlColumn ));
-                imageUrl.CleanupClosePushL();
-                genreName.Create(iSongHistoryTable.ColDes( genreNameColumn ));
-                genreName.CleanupClosePushL();
-                countryName.Create(iSongHistoryTable.ColDes( countryNameColumn ));
-                countryName.CleanupClosePushL();
-                languageName.Create(iSongHistoryTable.ColDes( languageNameColumn ));
-                languageName.CleanupClosePushL();
-				channelMusicStatus.Create(iSongHistoryTable.ColDes( musicStatusColumn ));
-                channelMusicStatus.CleanupClosePushL();
-
-                
-                if(aChannelId == channelId)
-	                {
-	                iSongHistoryTable.UpdateL();
-		            iSongHistoryTable.SetColL(channelTypeColumn, 0);
-		            iSongHistoryTable.SetColL(channelIdColumn, 0);
-                    iSongHistoryTable.SetColL(imageUrlColumn, KNo);
-                    iSongHistoryTable.SetColL(genreNameColumn, KNo);
-                    iSongHistoryTable.SetColL(countryNameColumn, KNo);
-                    iSongHistoryTable.SetColL(languageNameColumn, KNo);
-		            iSongHistoryTable.SetColL(musicStatusColumn, KNo);
-		            iSongHistoryTable.PutL();
-	                }
-                CleanupStack::PopAndDestroy(&channelMusicStatus);
-                CleanupStack::PopAndDestroy(&languageName);
-                CleanupStack::PopAndDestroy(&countryName);
-                CleanupStack::PopAndDestroy(&genreName);
-                CleanupStack::PopAndDestroy(&imageUrl);
-		}
-	iSongHistoryTable.Reset();
-		
-	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetIdPresentInDb()
-// Gets whether that particular channel id is present in Db or not.
-// ---------------------------------------------------------------------------
-//
-
-TBool CIRSongHistoryDb::GetIdPresentInDbL(TInt aChannelId)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL" );
-
- 	TBool value = EFalse;
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return value;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-				TInt channelId;
-				
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                if(aChannelId == channelId)
-	                {
-	                value = ETrue;
-	                }
-
-		}
-		
-	iSongHistoryTable.Reset();
-	
-	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL - Exiting." );
-	return value ;
-}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::UpdateSongHistoryDb()
-// Updates the song history DB when there is a channel change in the isds.
-// ---------------------------------------------------------------------------
-//
-
-TInt CIRSongHistoryDb::UpdateSongHistoryDbL(	TInt aChannelId,
-											const TDesC& aChannelUrl,
-                                            const TDesC& aImageUrl,
-                                            const TDesC& aGenreName,
-                                            const TDesC& aCountryName,
-                                            const TDesC& aLanguageName,
-											const TDesC& aMusicFlag)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL" );
-
- 	TBool channelChanged = EFalse ;
- 	TInt compFlagUrl ;
- 	TInt compFlagImageUrl, compFlagGenreName, compFlagCountryName, compFlagLanguageName;
- 	TInt compFlagMusic ;
- 	TInt compUrlChange ;
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return EFalse;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-	
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-			// Extracting the values from the database.
-				RBuf channelUrl;
-				RBuf imageUrl, genreName, countryName, languageName;
-				TInt channelId;
-                RBuf channelMusicStatus;
-				
-				channelUrl.Create(iSongHistoryTable.ColDes( channelUrlColumn ));
-				channelUrl.CleanupClosePushL();
-				
-				imageUrl.Create(iSongHistoryTable.ColDes( imageUrlColumn ));
-				imageUrl.CleanupClosePushL();
-                genreName.Create(iSongHistoryTable.ColDes( genreNameColumn ));
-                genreName.CleanupClosePushL();
-                countryName.Create(iSongHistoryTable.ColDes( countryNameColumn ));
-                countryName.CleanupClosePushL();
-                languageName.Create(iSongHistoryTable.ColDes( languageNameColumn ));
-                languageName.CleanupClosePushL();
-
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                
-                channelMusicStatus.Create(iSongHistoryTable.ColDes( musicStatusColumn ));
-                channelMusicStatus.CleanupClosePushL();
-                
-                if(aChannelId == channelId)
-	                {
-	                compFlagUrl =   (channelUrl).Compare(aChannelUrl);
-                    compFlagImageUrl = (imageUrl).Compare(aImageUrl);
-                    compFlagGenreName = (genreName).Compare(aGenreName);
-                    compFlagCountryName = (countryName).Compare(aCountryName);
-                    compFlagLanguageName = (languageName).Compare(aLanguageName);
-	                compFlagMusic = (channelMusicStatus).Compare(aMusicFlag);
-		            compUrlChange = (aChannelUrl).Compare(KNo);
-		                
-	                if(compFlagUrl && compUrlChange)
-		                {
-		                iSongHistoryTable.UpdateL();
-		                iSongHistoryTable.SetColL(channelUrlColumn, aChannelUrl);
-		                iSongHistoryTable.PutL();
-		                channelChanged = ETrue ;
-		                }
-                    if(compFlagImageUrl)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(imageUrlColumn, aImageUrl);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagGenreName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(genreNameColumn, aGenreName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagCountryName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(countryNameColumn, aCountryName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagLanguageName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(languageNameColumn, aLanguageName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-	                if(compFlagMusic)
-		                {
-		                iSongHistoryTable.UpdateL();
-		                iSongHistoryTable.SetColL(musicStatusColumn, aMusicFlag);
-		                iSongHistoryTable.PutL();
-		                channelChanged = ETrue ;
-		                }
-	                
-	                }
-                CleanupStack::PopAndDestroy(&channelMusicStatus);
-                CleanupStack::PopAndDestroy(&languageName);
-                CleanupStack::PopAndDestroy(&countryName);
-                CleanupStack::PopAndDestroy(&genreName);
-                CleanupStack::PopAndDestroy(&imageUrl);
-				CleanupStack::PopAndDestroy(&channelUrl);
-
-		}
-	iSongHistoryTable.Reset();
-	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL - Exiting." );
-	return channelChanged;
-}
-
-void CIRSongHistoryDb::SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                              TInt aChannelType, TInt aPresetId)
-{
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo(KSongHistoryDBChannelIdColumn);
-    
-    delete columns;
-    columns = NULL;
-    
-    for (iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL())
-    {
-        iSongHistoryTable.GetL();
-        TPtrC channelName = iSongHistoryTable.ColDes(channelNameColumn);
-        TPtrC channelUrl  = iSongHistoryTable.ColDes(channelUrlColumn);
-        TInt channelType = iSongHistoryTable.ColInt(channelTypeColumn);
-        TInt channelId = iSongHistoryTable.ColInt(channelIdColumn);
-        
-        if (0 == aChannelType)
-        {
-            //user-defined channel
-            if (aChannelName == channelName && aChannelUrl == channelUrl)
-            {
-                iSongHistoryTable.DeleteL();  
-                break;
-            }
-        }
-        else
-        {
-            //channel from ISDS server
-            if (aChannelName == channelName && aPresetId == channelId)
-            {
-                iSongHistoryTable.DeleteL();  
-                break;
-            }
-        }
-    }
-    
-    iSongHistoryTable.Reset();
-}
--- a/internetradio2.0/songhistorysrc/irsonghistoryengine.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,491 +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:  Engine class to notify channel name/metadata changes to SongHistoryDb and UI
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include "irpubsubkeys.h"
-#include "irsonghistoryengine.h"
-#include "uinotifyhandler.h"
-#include "irsonghistoryengpubsub.h"
-#include "irmetadata.h"
-#include "irdebug.h"
-
-class CIRSongHistoryDb;
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::CIRSongHistoryEngine
-// Default Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryEngine::CIRSongHistoryEngine(MSongHistoryUINotifyHandler& aUiObserver )
-						:iUiObserver( aUiObserver )
-{
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::ConstructL
-// Second-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryEngine::ConstructL()
-{
-    IRLOG_DEBUG( "CIRSongHistoryEngine::ConstructL" );
-
-	iSongHistoryDb = CIRSongHistoryDb::NewL();
-
-
-
-    //Subsciber for the meta data
-    iMetaDataSub = CIRSongHistoryEngPubSub::NewL( *this,
-    		KUidActiveInternetRadioApp,KIRPSMetaData, RProperty::ELargeText) ;
-
-    IRLOG_DEBUG( "CIRSongHistoryEngine::ConstructL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::NewL()
-// Static constructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSongHistoryEngine* CIRSongHistoryEngine::NewL( 
-				MSongHistoryUINotifyHandler & aUiObserver)
-{
-    IRLOG_DEBUG( "CIRSongHistoryEngine::NewL - Entering" );
-	CIRSongHistoryEngine* self = NewLC( aUiObserver);
-	CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRSongHistoryEngine::NewL - Exiting." );
-    return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::NewLC()
-// Static constructor.
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C CIRSongHistoryEngine* CIRSongHistoryEngine::NewLC( 
-							MSongHistoryUINotifyHandler & aUiObserver)
-{
-    IRLOG_DEBUG( "CIRSongHistoryEngine::NewLC - Entering" );
-    CIRSongHistoryEngine* self = new ( ELeave ) CIRSongHistoryEngine( aUiObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-	IRLOG_DEBUG( "CIRSongHistoryEngine::NewLC - Exiting." );
-    return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::~CIRSongHistoryEngine()
-// standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSongHistoryEngine::~CIRSongHistoryEngine()
-{
-    IRLOG_DEBUG( "CIRSongHistoryEngine::~CIRSongHistoryEngine - Entering" );
-
-    delete iSongHistoryDb;
-    delete iChannelNameSub;
-    delete iMetaDataSub;
-
-    IRLOG_DEBUG( "CIRSongHistoryEngine::~CIRSongHistoryEngine - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::HandleMetaDataReceivedL()
-// Invoked when any listened P&S key is changed.
-// ---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRSongHistoryEngine::HandleMetaDataReceivedL( const CIRMetaData& aMetaData )
-{
-	IRLOG_DEBUG( "CIRSongHistoryEngine::HandleMetaDataChangeL - Entering" );
-
-	// Read Channel Name
-	RBuf 			 channelName;
-
-	TBuf<KMAXLENGTH> channelNameBuffer;
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel, channelNameBuffer);
-	channelName.Create(channelNameBuffer.Length());
-	channelName.CleanupClosePushL();
-	channelName.Copy(channelNameBuffer);
-
-	TInt channelType;
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSChannelType, channelType);
-
-	TInt channelId;
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSChannelId, channelId);
-
-	// Read Channel Url
-	RBuf 			 channelUrl;
-	
-	TBuf<KMAXLENGTH> channelUrlBuffer;
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSChannelUrl, channelUrlBuffer);
-	channelUrl.Create(channelUrlBuffer.Length());
-	channelUrl.CleanupClosePushL();
-	channelUrl.Copy(channelUrlBuffer);
-	
-
-	
-	RBuf 			 channelDesc;
-
-	TBuf<KMAXLENGTH> channelDescBuffer;
-
-		RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannelDesc, channelDescBuffer);
-		channelDesc.Create(channelDescBuffer.Length());
-		channelDesc.CleanupClosePushL();
-		channelDesc.Copy(channelDescBuffer);
-
-    RBuf             imageUrl;
-    imageUrl.Create(KNullDesC().Length());
-    imageUrl.CleanupClosePushL();
-    imageUrl.Copy(KNullDesC);
-
-	RBuf 			 musicFlag;
-
-	TBuf<KMAXLENGTH> musicFlagBuffer;
-	
-	if(channelType==1)
-		{
-		RProperty::Get ( KUidActiveInternetRadioApp, KIRPSChannelMusicFlag, musicFlagBuffer);
-		musicFlag.Create(musicFlagBuffer.Length());
-		musicFlag.CleanupClosePushL();
-		musicFlag.Copy(musicFlagBuffer);
-		}
-	else
-		{
-		musicFlag.Create(KNullDesC().Length());
-		musicFlag.CleanupClosePushL();
-		musicFlag.Copy(KNullDesC);
-		}	
-    
-    if(channelType==1)
-	    {
-	    TInt ret = iSongHistoryDb->GetIdPresentInDbL( channelId );
-	    if(ret)
-		    {
-		    TInt modified = iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
-		    		 channelName ,channelUrl ,imageUrl ,musicFlag);	
-		    if(modified)
-			    {
-    	        iUiObserver.ChannelChangedL( aMetaData.Song(),aMetaData.Artist(),
-    	        		 channelName, channelUrl );
-			    }
-		    }
-	    	
-	    }
-
-	TSongHistoryItemChange changeCode = DetectSongHistoryItemChangesL(aMetaData,
-							 channelName, channelUrl);
-
-    if(changeCode==EBLANKENTRIES || changeCode == ENOCHANGE )
-    {
-    
-        CleanupStack::PopAndDestroy(&musicFlag);
-        CleanupStack::PopAndDestroy(&imageUrl);
-        CleanupStack::PopAndDestroy(&channelDesc);
-        CleanupStack::PopAndDestroy(&channelUrl);
-        CleanupStack::PopAndDestroy(&channelName);
-    	return;
-    }
-
-	RBuf delSongName;
-	delSongName.CleanupClosePushL();
-	RBuf delArtistName;
-	delArtistName.CleanupClosePushL();
-	RBuf delChannelName;
-	delChannelName.CleanupClosePushL();
-	RBuf delChannelUrl;
-	delChannelUrl.CleanupClosePushL();
-	TBool bExceededMax = iSongHistoryDb->AddToSongHistoryDbL( aMetaData.Song(),
-															  aMetaData.Artist(),
-															  channelName,
-															  channelUrl, 
-															  delSongName, 
-															  delArtistName, 
-															  delChannelName, 
-															  delChannelUrl ,
-															  channelType,
-															  channelId,
-															  64,
-															  channelDesc,
-															  imageUrl,
-															  musicFlag
-															  );
-	if( bExceededMax )
-	{
-		if( 0 == iSongHistoryDb->GetChannelSongsCountL(delChannelName,delChannelUrl) )
-		{
-			iUiObserver.RemoveChannelEntry(delSongName, delArtistName, delChannelName, delChannelUrl);
-		}
-		else
-		{
-			iUiObserver.RemoveSongEntry(delSongName, delArtistName, delChannelName, delChannelUrl);
-		}
-	}
-
-
-	if( changeCode == ECHANNELCHANGED ) // channel change detected
-    {
-    	iUiObserver.ChannelChangedL( aMetaData.Song(),aMetaData.Artist(), channelName, channelUrl );
-    }
-    else	// same channel playing next song
-    {
-		iUiObserver.NextSongReceivedL( aMetaData.Song(),aMetaData.Artist(), channelName, channelUrl );
-    }
-    
-   	CleanupStack::PopAndDestroy(&delChannelUrl);
-	CleanupStack::PopAndDestroy(&delChannelName);
-	CleanupStack::PopAndDestroy(&delArtistName);
-	CleanupStack::PopAndDestroy(&delSongName);
-
-    CleanupStack::PopAndDestroy(&musicFlag);
-    CleanupStack::PopAndDestroy(&imageUrl);
-    CleanupStack::PopAndDestroy(&channelDesc);
-    CleanupStack::PopAndDestroy(&channelUrl);
-    CleanupStack::PopAndDestroy(&channelName);
-
-    
-	IRLOG_DEBUG( "CIRSongHistoryEngine::HandleMetaDataChangeL - Exiting." );
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::DetectSongHistoryItemChangesL()
-// To detect any change in the song history items.
-// ---------------------------------------------------------------------------
-//
-
-TSongHistoryItemChange CIRSongHistoryEngine::DetectSongHistoryItemChangesL(
-			const CIRMetaData& aMetaData, const RBuf& aChannelName, const RBuf& aChannelUrl)
-{
-	if(aChannelName.Length() == 0)
-	{
-		return EBLANKENTRIES;
-	}
-
-	//If the meta data is not available
-	if(((aMetaData.Song()).Length() == 0) && ((aMetaData.Artist()).Length() == 0))
-	{
-		return EBLANKENTRIES;
-	}
-
-	RBuf song;
-	song.CleanupClosePushL();
-	RBuf artist;
-	artist.CleanupClosePushL();
-	RBuf channel;
-	channel.CleanupClosePushL();
-	RBuf url;
-	url.CleanupClosePushL();
-
-	TRAPD( error, iSongHistoryDb->GetLastHistoryItemL(song, artist, channel, url));
-	if( error )
-	{
-		IRLOG_DEBUG( "CIRSongHistoryEngine::DetectSongHistoryItemChangesL() - Failed while GetLastHistoryItemL()" );
-	}
-
-	TSongHistoryItemChange retval = ENOCHANGE;	// pc-lint # 644 fix
-
-	if((song == aMetaData.Song() ) && (artist == aMetaData.Artist()) &&
-						 (channel == aChannelName)  && (url == aChannelUrl))
-	{
-		retval = ENOCHANGE;
-	}
-	else if( channel != aChannelName  || url != aChannelUrl )
-	{
-		retval = ECHANNELCHANGED;
-	}
-	else if( song != aMetaData.Song() || artist != aMetaData.Artist() )
-	{
-		retval = EMETADATACHANGED;
-	}
-	else
-	{
-		// pc-lint # 961 fix
-	}
-
-	CleanupStack::PopAndDestroy(&url);
-    CleanupStack::PopAndDestroy(&channel);
-    CleanupStack::PopAndDestroy(&artist);
-    CleanupStack::PopAndDestroy(&song);
-
-	return retval;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::HandlePropertyChangeErrorL
-// Invoked when an error has occured while fetching the new value of any listened P&S key.
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryEngine::HandlePropertyChangeErrorL( const TUid& /*aCategory*/,
-	TUint /*aKey*/, TInt aError )
-{
-    IRLOG_DEBUG( "CIRSongHistoryEngine::HandlePropertyChangeErrorL" );
-    if (aError < 0)
-    	{
-    		//Some action has to be taken
-    	}
-    IRLOG_DEBUG( "CIRSongHistoryEngine::HandlePropertyChangeErrorL" );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::HandlePropertyChangeL
-// Invoked when any listened P&S key is changed.
-// ---------------------------------------------------------------------------
-
-void CIRSongHistoryEngine::HandlePropertyChangeL( const TUid& aCategory,
-			 TUint aKey, const TDesC8& aText )
-{
-	IRLOG_DEBUG( "CIRSongHistoryEngine::HandlePropertyChangeL" );
-	if ( aCategory == KUidActiveInternetRadioApp )
-	{
-		if( aKey == KIRPSDataChannel )
-		{
-		}
-		else if( aKey == KIRPSMetaData )
-		{
-			CIRMetaData* metaData = CIRMetaData::NewL( aText );
-			CleanupStack::PushL( metaData );
-			HandleMetaDataReceivedL( *metaData );
-			CleanupStack::PopAndDestroy( metaData );
-		}
-		else
-		{
-		// To avoid PC lint error
-		}
-	}
-	IRLOG_DEBUG( "CIRSongHistoryEngine::HandlePropertyChangeL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::GetAllHistoryL
-// Invoked when when UI request.
-// Getting the data from SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-EXPORT_C void CIRSongHistoryEngine::GetAllHistoryL( 
-				RPointerArray<CIRSongHistoryInfo>& aSongHistoryInfo )
-{
-	iSongHistoryDb->GetAllSongHistoryListL(aSongHistoryInfo);
-	
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::ClearAllHistory
-// Invoked when when UI request.
-// Clears the SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-EXPORT_C TInt CIRSongHistoryEngine::ClearAllHistory( )
-{	
-	TInt ret = 0;
-	ret = iSongHistoryDb->ClearAllSongHistoryFromDb();
-	return ret;
-}
-
-EXPORT_C TInt CIRSongHistoryEngine::DeleteOneHistory(TInt aIndex)
-{     
-    return iSongHistoryDb->DeleteOneHistory(aIndex);
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::GetHistoryCount
-// Invoked when when UI request.
-// Gets the count of the SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-EXPORT_C TInt CIRSongHistoryEngine::GetHistoryCount()
-{
-	TInt HistoryCount = 0;
-	HistoryCount = iSongHistoryDb->CountSongHistoryDb();
-	return HistoryCount;
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::SyncHistory
-// Invoked when when UI request.
-// Synchronises the Song history DB with the new data in the ISDS.
-// ---------------------------------------------------------------------------
-
-EXPORT_C TInt CIRSongHistoryEngine::SyncHistory(TInt aChannelId)
-{
-	IRLOG_DEBUG( "CIRSongHistoryEngine::SyncHistory - Entering." );
-	TRAPD(err,iSongHistoryDb->SyncSongHistoryDbL(aChannelId));
-	if(err)
-	{
-	
-	}
-	IRLOG_DEBUG( "CIRSongHistoryEngine::SyncHistory - Exiting." );
-    return KErrNone;
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngine::UpdateSongHistoryDB
-// Invoked when when UI request.
-// Synchronises the Song history DB with the new data in the ISDS.
-// ---------------------------------------------------------------------------
-
-EXPORT_C void CIRSongHistoryEngine::UpdateSongHistoryDb(TInt aChannelId,
-											const TDesC& aChannelName, 
-											const TDesC& aChannelUrl,
-											const TDesC& aMusicFlag)
-{
-	IRLOG_DEBUG( "CIRSongHistoryEngine::UpdateSongHistoryDb - Entering." );
-	TInt ret = KErrNone ;
-	TRAPD(err,ret =	iSongHistoryDb->GetIdPresentInDbL( aChannelId ));
-	if(err)
-	{
-	return;
-	}
-	if(ret)
-		{
-		TRAPD(err,iSongHistoryDb->UpdateSongHistoryDbL( aChannelId ,
-		                                                aChannelName ,
-		                                                aChannelUrl ,
-		                                                aChannelUrl,
-		                                                aMusicFlag));
-		if(err)
-			{
-			return ;
-			}
-		}
-		
-	IRLOG_DEBUG( "CIRSongHistoryEngine::UpdateSongHistoryDb - Exiting." );
-}
--- a/internetradio2.0/songhistorysrc/irsonghistoryengpubsub.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +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:  Publish / Subscriber class for ChannelName and MetaData
-*
-*/
-
-
-#include "irsonghistoryengpubsub.h"
-#include "irsonghistoryengpubsubnotifyhandler.h"
-#include "irdebug.h"
-
-
-// ==================== MEMBER FUNCTIONS ===================
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngPubSub::CIRSongHistoryEngPubSub
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryEngPubSub::CIRSongHistoryEngPubSub(
-	MIRSongHistoryEngPubSubNotifyHandler& aPubSubObserver, const TUid& aCategory,
-	TUint aKey , const RProperty::TType aPropertyType): CActive( CActive::
-	EPriorityStandard ),  iPropertyType(aPropertyType),iPubSubObserver( aPubSubObserver ),
-	iCategory( aCategory ), iKey( aKey )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngPubSub::ConstructL
-// Second-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryEngPubSub::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::ConstructL" );
-    User::LeaveIfError( iProperty.Attach( iCategory, iKey ) );
-    CActiveScheduler::Add( this );
-    iProperty.Subscribe( iStatus );
-    SetActive();
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::ConstructL - Exiting." );
-    }
-
-//-----------------------------------------------------------------------------
-//  CIRHistoryListContainer::NewL
-//  Creates a new instance of CIRSongHistoryEngPubSub
-//-----------------------------------------------------------------------------
-//
-CIRSongHistoryEngPubSub* CIRSongHistoryEngPubSub::NewL(
-	MIRSongHistoryEngPubSubNotifyHandler& aPubSubObserver, const TUid& aCategory,
-	TUint aKey, const RProperty::TType aPropertyType  )
-    {
-	IRLOG_DEBUG( "CIRSongHistoryEngPubSub::NewL - Entering" );
-    CIRSongHistoryEngPubSub* self = CIRSongHistoryEngPubSub::NewLC(aPubSubObserver,
-    					 aCategory,aKey, aPropertyType  );
-    CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRSongHistoryEngPubSub::NewL - Exiting." );
-    return self;
-    }
-
-//-----------------------------------------------------------------------------
-//  CIRHistoryListContainer::NewLC
-//  Creates a new instance of CIRSongHistoryEngPubSub and leaves it on the cleanup stack.
-//-----------------------------------------------------------------------------
-//
-CIRSongHistoryEngPubSub* CIRSongHistoryEngPubSub::NewLC(
-	MIRSongHistoryEngPubSubNotifyHandler& aPubSubObserver, const TUid& aCategory,
-	TUint aKey, const RProperty::TType aPropertyType  )
-    {
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::NewLC - Entering" );
-    CIRSongHistoryEngPubSub* self = new (ELeave) CIRSongHistoryEngPubSub(
-    							aPubSubObserver, aCategory, aKey, aPropertyType);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-	IRLOG_DEBUG( "CIRSongHistoryEngPubSub::NewLC - Exiting." );
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngPubSub::~CIRSongHistoryEngPubSub()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryEngPubSub::~CIRSongHistoryEngPubSub()
-    {
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::~CIRSongHistoryEngPubSub" );
-    Cancel();
-    iProperty.Close();
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::~CIRSongHistoryEngPubSub - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngPubSub::DoCancel()
-// Invoked when the active object is cancelled.
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryEngPubSub::DoCancel()
-    {
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::DoCancel" );
-    iProperty.Cancel();
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::DoCancel - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryEngPubSub::RunL()
-// The function is called by the active scheduler when a request completion event occurs,
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryEngPubSub::RunL()
-    {
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::RunL" );
-
-    iProperty.Subscribe( iStatus );
-    SetActive();
-    TInt err(KErrNone);
-
-
-	err = iProperty.Get( iText );
-	if (!err)
-		{
-			iPubSubObserver.HandlePropertyChangeL( iCategory, iKey, iText );
-		}
-
-    else
-    	{
-        	iPubSubObserver.HandlePropertyChangeErrorL(iCategory, iKey, err);
-    	}
-
-    IRLOG_DEBUG( "CIRSongHistoryEngPubSub::RunL - Exiting." );
-    }
--- a/internetradio2.0/songhistorysrc/irsonghistoryinfo.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  class for the songhistory information.
-*
-*/
-
-#include "irsonghistoryinfo.h"
-
-// ---------------------------------------------------------------------------
-// Function : NewL
-// Function returns an instance of CIRSongHistoryInfo
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewL()
-		{
-			CIRSongHistoryInfo* self =  CIRSongHistoryInfo :: NewLC();
-			CleanupStack::Pop( self );
-			return self;
-		}
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC()
-		{
-			CIRSongHistoryInfo* self = new( ELeave ) CIRSongHistoryInfo();
-			CleanupStack::PushL( self );
-			return self;
-		}
-// ---------------------------------------------------------------------------
-//CIRSongHistoryInfo::~CIRSongHistoryInfo()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSongHistoryInfo::~CIRSongHistoryInfo()
-	{
-		iArtistInfo.Close();
-
-		iSongInfo.Close();
-
-		iStreamUrlInfo.Close();
-
-		iChannelInfo.Close();
-		
-		iChannelDescription.Close();
-
-        iImageUrl.Close();
-        iGenreName.Close();
-        iCountryName.Close();
-        iLanguageName.Close();
-		
-		iMusicStoreStatus.Close();
-		
-	}
-
-// ---------------------------------------------------------------------------
-//CIRSongHistoryInfo::~CIRSongHistoryInfo()
-//standard C++ constructor
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryInfo::CIRSongHistoryInfo()
-	 {
-		
-	 }
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetArtist
-// Sets Artist name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetArtist(RBuf& aArtist)
- {
- 	iArtistInfo.Create(aArtist);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetSongName
-// Sets Song name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetSongName (RBuf& aSongName)
- {
- 	iSongInfo.Create(aSongName);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetStreamUrl
-// Sets Stream url name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetStreamUrl(RBuf& aStreamUrl)
- {
- 	iStreamUrlInfo.Create(aStreamUrl);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelName
-// Sets Channel name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelName(RBuf& aChannelName)
- {
- 	iChannelInfo.Create(aChannelName);
- }
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelDesc
-// Sets Channel name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelDesc(RBuf& aChannelDesc)
- {
- 	iChannelDescription.Create(aChannelDesc);
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetImageUrl
-// Sets Channel image Url
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetImageUrl(RBuf& aImageUrl)
- {
-    iImageUrl.Create(aImageUrl);
- }
- 
- // ---------------------------------------------------------------------------
- // CIRSongHistoryInfo::SetGenreName
- // Set channel genre name
- // ---------------------------------------------------------------------------
- //
-void CIRSongHistoryInfo::SetGenreName(const RBuf& aGenreName)
-{
-    iGenreName.Create(aGenreName);
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetCountryName
-// Set channel country name
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryInfo::SetCountryName(const RBuf& aCountryName)
-{
-    iCountryName.Create(aCountryName);
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetLanguageName
-// Set channel language name
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryInfo::SetLanguageName(const RBuf& aLanguageName)
-{
-    iLanguageName.Create(aLanguageName);
-}
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelMusicStatus
-// Sets Channel's MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelMusicStatus(RBuf& aChannelMusicStatus)
- {
- 	iMusicStoreStatus.Create(aChannelMusicStatus);
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelType
-// Sets Channel TYpe
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelType(TInt aChannelType)
- {
- 	iChannelType=aChannelType;
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelId
-// Sets Channel Id
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelId(TInt aChannelId)
- {
- 	iChannelId=aChannelId;
- }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetBitrate
-// Sets bitrate
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetBitrate(TInt aBitrate)
- {
-    iBitrate=aBitrate;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetHistoryInfo
-// Sets Song History Information.
-// ---------------------------------------------------------------------------
-//
-
- EXPORT_C void CIRSongHistoryInfo::SetHistoryInfo(RBuf& aSongName,
-												  RBuf& aArtist, 
-												  RBuf& aStreamUrl, 
-												  RBuf& aChannelName ,
-												  TInt aChannelType, 
-												  TInt aChannelId,
-												  TInt aBitrate,
-												  RBuf& aChannelDesc,
-                                                  RBuf& aImageUrl,
-                                                  RBuf& aGenreName,
-                                                  RBuf& aCountryName,
-                                                  RBuf& aLanguageName,
-												  RBuf& aMusicStoreStatus
-												   )
- {
- 	SetSongName(aSongName);
- 	SetArtist(aArtist);
- 	SetStreamUrl(aStreamUrl);
- 	SetChannelName(aChannelName);
-    SetChannelType(aChannelType);
-    SetChannelId(aChannelId);
-    SetBitrate(aBitrate);
-    SetChannelDesc(aChannelDesc);
-    SetImageUrl(aImageUrl);
-    SetGenreName(aGenreName);
-    SetCountryName(aCountryName);
-    SetLanguageName(aLanguageName);
-    SetChannelMusicStatus(aMusicStoreStatus);
-	
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetSongInfo
-// Gets the song information
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetSongInfo() const
- {
- 	return iSongInfo;
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetArtistInfo
-// Gets Artist name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetArtistInfo() const
- {
- 	return iArtistInfo;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetStreamUrl
-// Gets StreamUrl name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetStreamUrl() const
- {
- 	return iStreamUrlInfo;
- }
- 
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelName
-// Gets Channel name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelName() const
- {
- 	return iChannelInfo;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelDesc
-// Gets Channel name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelDesc() const 
- {
- 	return iChannelDescription;
- }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetImageUrl
-// Gets Channel image Url
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetImageUrl() const 
- {
-    return iImageUrl;
- }
- // ---------------------------------------------------------------------------
- // CIRSongHistoryInfo::GetGenreName
- // Get channel genre name
- // ---------------------------------------------------------------------------
- //
- 
-const RBuf& CIRSongHistoryInfo::GetGenreName() const 
- {
-    return iGenreName;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetCountryName
-// Get channel country name
-// ---------------------------------------------------------------------------
-//
-const RBuf& CIRSongHistoryInfo::GetCountryName() const 
- {
-    return iCountryName;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetLanguageName
-// Get channel language name
-// ---------------------------------------------------------------------------
-//
-const RBuf& CIRSongHistoryInfo::GetLanguageName() const 
- {
-    return iLanguageName;
- }
-
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelType
-// Gets Channel Type
-// ---------------------------------------------------------------------------
-//
- EXPORT_C TInt CIRSongHistoryInfo::GetChannelType() const
- {
- 	return iChannelType;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelId
-// Gets Channel Id
-// ---------------------------------------------------------------------------
-//
- EXPORT_C TInt CIRSongHistoryInfo::GetChannelId() const
- {
- 	return iChannelId;
- }
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetBitrate
-// Gets bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSongHistoryInfo::GetBitrate() const
-{
-   return iBitrate;
-}
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelMusicStatus
-// Gets Channel MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelMusicStatus() const 
- {
- 	return iMusicStoreStatus;
- }
--- a/internetradio2.0/streamsourceinc/irasfplayer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +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:  Implementation of streaming and playback on ASF channel url
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 1, Fri Sep 19 13:00:00 2008 by Rohit
-*  Ref:
-*  Created
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#ifndef IRASFPLAYER_H
-#define IRASFPLAYER_H
-
-//#include "ircontrolparams.h"
-//#include "irmediaenginedef.h"
-//#include "irmediaengineinterface.h"
-#include <mdaaudiosampleplayer.h>	// MMdaAudioPlayerCallback
-
-// Forward declarations
-class MIRCtrlCmdObserver;
-class MIRStreamSourceObserver;
-class CIRMetaData;
-
-//==============================class declaration CIRAsfPlayer==============================
-
-/*
-MIRCtrlCmdObserver functions invoked by AsfPlayer
-	FetchVolume
-
-MIRStreamSourceObserver functions invoked by AsfPlayer
-	Asf_ErrorConnecting
-	Asf_ConnectionEstablished
-	Asf_UpdateProgress
-	Asf_HandleMetaDataReceivedL
-*/
-
-
-/**
- * This class is the implementation of Asf format streaming and playback
- * 
- * @code
- * @endcode
- */
-
-NONSHARABLE_CLASS(CIRAsfPlayer) : public MMdaAudioPlayerCallback,
-								  public MAudioLoadingObserver 
-	{
-public:
-									//Member Functions
-	/**
-	 * Function : NewL
-	 * function returns an instance of CIRAsfPlayer
-	 * Two phase constructor
-	 * @return instance of CIRAsfPlayer
-	 */
-	IMPORT_C static CIRAsfPlayer* NewL(MIRStreamSourceObserver& aStreamObserver, 
-									   MIRCtrlCmdObserver& aCtrlCmdObserver);
-
-	/**
-	 * Function : NewLC
-	 * function creates an instance of CIRAsfPlayer
-	 * Two phase constructor
-	 * @return instance of CIRAsfPlayer
-	 */
-	IMPORT_C static CIRAsfPlayer* NewLC(MIRStreamSourceObserver& aStreamObserver, 
-										MIRCtrlCmdObserver& aCtrlCmdObserver);
-
-	/**
-	 * Function : ~CIRAsfPlayer
-	 * Default Destructor
-	 */
-	virtual ~CIRAsfPlayer();
-
-//Function which control the play
-
-	/**
-	 * Function : Play
-	 * function to which intiate the player
-	 */
-	IMPORT_C void PlayL(const TDesC& aUri);
-
-	/**
-	 * Function : Play
-	 * function to which intiate the player
-	 */
-	IMPORT_C void Play();
-	
-	/**
-	 * Function : Stop
-	 * function to which stop the player
-	 */
-	IMPORT_C void Stop();   	     
-
-//Function to control the volume
-
-	IMPORT_C void SetVolume(TInt aVolume);
-
-	IMPORT_C TInt Volume() const;
-
-	IMPORT_C TInt MaxVolume() const;
-
-// Helper functions
-	IMPORT_C static TBool DetectAsfChannel(const TDesC& aUri);
-
-private:
-	/**
-	 * Function: CIRAsfPlayer
-	 * This function is the default constructor
-	 */
-	CIRAsfPlayer(MIRStreamSourceObserver& aStreamObserver, MIRCtrlCmdObserver& aCtrlCmdObserver);
-
-	/**
-	 * Function: ConstructL
-	 * Two phase constructor is used to intialize data members
-	 */
-	void ConstructL();
-
-	/**
-	 * Function: ReadMetadataL
-	 * Reads the meta data from the CMdaAudioPlayerUtility
-	 */
-	void ReadMetadataL();
-	
-//Call back functions
-public:	
-
-	// MMdaAudioPlayerCallback members
-	void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
-	void MapcPlayComplete(TInt aError);
-
-	// MAudioLoadingObserver
-	void MaloLoadingStarted();
-	void MaloLoadingComplete();
-
-private:	
-	//Enum for Play State
-	enum TState
-		{
-		ENotReady,    //Not ready to play
-		EReadyToPlay, //Ready to play
-		EPlaying      //Playing
-		};
-
-	//For implement Player functionalities
-
-    /**
-     * CMdaAudioPlayerUtility instance to stream Asf stream
-     * Owned
-     */
-    CMdaAudioPlayerUtility* iMdaAudioPlayer;
-
-    /**
-     * Current meta data information.
-     * Owned
-     */
-    CIRMetaData* iMetaData;
-	
-    /**
-     * URI of the station server
-     * Owned
-     */
-	RBuf	iStationUri;
-
-	// Observer for streaming and playback events
-
-	/**
-	 * MIRCtrlCmdObserver reference to get volume setting
-	 */
-    MIRCtrlCmdObserver& iCtrlCmdObserver;
-
-	/**
-	 * Reference of the Stream source observer
-	 */
-    MIRStreamSourceObserver& iStreamObserver;
-
-	// Player state	
-	TState iState; 		
-	};  
-
-#endif//IRASFPLAYER_H
-
-
--- a/internetradio2.0/streamsourceinc/iricyflowinitiator.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +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:  Initiates an ICY session.
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Tue Mar 11 20:00:00 2008 by Rohit
-*  Ref:
-*  Merged IRv1.0 Engine code changes
-*
-*  Version: 2, Tue Feb 28 18:00:00 2008 by Rohit/Kranthi
-*  Ref:
-*  Added NetworkController instance for Byte Counter Impl
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#ifndef IR_IRICYFLOWINITIATOR
-#define IR_IRICYFLOWINITIATOR
-
-#include <e32base.h>
-
-#include "irsockettimeouttimer.h"
-
-class RSocket;
-class CIRStationConnection;
-class TChannelInfo;
-class CIRNetworkController;
-
-/**
-* This class manages the connection to a channel server
-*/
-NONSHARABLE_CLASS ( CIRIcyFlowInitiator ) : public CActive,  public MIRSocketTimeoutNotifier
-    {
-public:
-
-    /**
-     * Standard Symbian two-phase construction
-     *
-     * @param aSocket       Socket to be read.
-     * @param aUri          The URI of the ICY source (channel server)
-     * @param aOwner        The owner of this CIRIcyFlowReader
-     * @param aChannelInfo  Information describing the ICY session (to be filled)
-     * @return Instance of CIRIcyFlowInitiator
-     */
-    static CIRIcyFlowInitiator* NewL( RSocket& aSocket, const TDesC& aUri,
-    			 CIRStationConnection& aOwner, TChannelInfo& aChannelInfo );
-
-    /**
-     * Default C++ destructor
-     */
-    ~CIRIcyFlowInitiator();
-
-    /**
-     * From base class MIRSocketTimeoutNotifier
-     */
-    void TimerExpired();
-
-	/**
-     * Send an ICY session request (ICY GET) to the channel server
-     */
-    void RequestFlow();
-
-protected:
-
-// From base class CActive
-
-    /**
-     * From base class CActive.
-     */
-    void RunL();
-
-    /**
-     * From base class CActive.
-     */
-	TInt RunError(TInt aError);
-
-    /**
-     * From base class CActive.
-     */
-    void DoCancel();
-
-private:
-	/**
-     * The states of the flow initiator
-     */
-    enum TIRIcyFlowInitiatorState
-		{
-		EIRIdle,
-        EIRSending,
-		EIRReceiving,
-		EIRFinished
-		};
-
-private:
-
-    /**
-     * C++ constructor.
-     *
-     * @param aSocket       Socket to be read.
-     * @param aUri          The URI of the ICY source (channel server)
-     * @param aOwner        The owner of this CIRIcyFlowReader
-     * @param aChannelInfo  Information describing the ICY session (to be filled)
-     * @return Instance of CIRIcyFlowInitiator
-     */
-    CIRIcyFlowInitiator( RSocket& aSocket, const TDesC& aUri, CIRStationConnection& aOwner,
-    						 TChannelInfo& aChannelInfo );
-
-    /**
-     * Standard Symbian second-phase construction.
-     */
-    void ConstructL();
-
-	/**
-     * Parse and validate the url
-     *
-     * @return ETrue if all the URI components could be extracted, EFalse otherwise.
-     */
-    TBool ExtractUriComponentsL();
-
-   	/**
-     * Validates the response from the channel server
-     *
-     * @return ETrue if channel server is acceptable.
-     */
-    TBool ValidateChannelServer();
-
-	/**
-     * Parses the channel headers to get the channel information
-     */
-	void ParseChannelInfoL();
-
-	/**
-	 * Extract the specified meta data information
-	 *
-	 * @param aMetaField Metafield to be extracted
- 	 * @param aBuffer Buffer into which the meta data is to be extracted
-     * @return ETrue if extraction is sucessful, EFalse otherwise
-     */
-	TBool ExtractMetaInfoL(const TDesC8& aMetaField, TDes8 &aBuffer ) const;
-
-private:
-
-	/**
-     * Used for timeout mechanism.
-     * Owned.
-     */
-	CIRSocketTimeOutTimer* iSocketTimer;
-
-    /**
-     * Holds the resolved host information.
-     * Owned.
-     */
-	RBuf8 iHost;
-
-	/**
-     * Holds the resolved path information.
-     * Owned.
-     */
-	RBuf8 iPath;
-
-	/**
-	 * Incoming data buffer.
-	 * Owned.
-	 */
-	RBuf8 iBuffer;
-
-	/**
-	 * Buffer used to read the data from socket. 
-	 * Owned.
-	 */
-	RBuf8 iReadBuffer;	
-	
-	/** 
-	 * Holds the UAProf string.
-	 * Owned.
-	 */
-	RBuf8 iUAProfString;
-
-	/**
-	 * Indicates the state of this IRIcyFlowInitiator
-	 */
-	TIRIcyFlowInitiatorState iState;
-
-	/**
-	 * Socket connected to channel server
-	 */
-	RSocket& iSocket;
-
-    /**
-     * Reference to the URI associated with the channel server
-     */
-    const TDesC& iUri;
-
-    /**
-     * Owner of this object in whole-part relation.
-     */
-    CIRStationConnection& iOwner;
-
-	/**
-     * Information about the current ICY session.
-     */
-	TChannelInfo& iChannelInfo;
-
-	CIRNetworkController* iNetworkControllerHandle;
-    };
-
-#endif // IR_IRICYFLOWINITIATOR
-
-
-
--- a/internetradio2.0/streamsourceinc/iricyflowreader.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +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:  Reads data from opened ICY session
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 2, Tue Feb 28 18:00:00 2008 by Rohit/Kranthi
-*  Ref:
-*  Added NetworkController instance for Byte Counter Impl
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#ifndef IR_IRICYFLOWREADER
-#define IR_IRICYFLOWREADER
-
-
-#include <e32base.h>
-#include <es_sock.h>
-
-class CIRMetaData;
-class CIRNetworkBuffer;
-class CIRStationConnection;
-class MIRStationDataObserver;
-class RSocket;
-class TChannelInfo;
-class CIRNetworkController;
-
-/**
-*  This class handles reading audio and metadata from a connected
-* ICY session. It assumes that the socket is connected, the
-* ICY session has been requested and initial ICY headers have been
-* processed.
-*
-*/
-NONSHARABLE_CLASS( CIRIcyFlowReader ) : public CActive
-    {
-public: // Constructors and destructors
-
-    /**
-     * Standard Symbian two-phase construction
-     *
-     * @param aSocket       Socket to be read.
-     * @param aOwner        The owner of this CIRIcyFlowReader
-     * @param aDataObserver The observer wishing to receive audio/metadata.
-     * @param aChannelInfo  Information describing the ICY session
-     * @return Instance of CIRIcyFlowReader
-     */
-	static CIRIcyFlowReader* NewL( RSocket& aSocket, CIRStationConnection& aOwner,
-	                               MIRStationDataObserver& aDataObserver, 
-	                               TChannelInfo& aChannelInfo );
-
-    /**
-     * Destructor
-     */
-	~CIRIcyFlowReader();
-
-public:
-
-	/**
-	 * Starts the reading from the socket
-	 */
-	void Start();
-
-	/**
-     * Fills the buffer with the streamed data
-     *
-     * @param aInputBuffer Buffer into which audio data is to be copied
-     */
-	void FillBuffer(TDes8& aInputBuffer);
-
-private: // Functions from base classes
-
-	/**
-	 * From CActive
-	 */
-	void RunL();
-
-	/**
-	 * From CActive
-	 */
-	void DoCancel();
-
-private:
-	/**
-	 * Copies the buffer to the mediaengine sink queue
-	 *
-	 * @param aData Data to copy.
-	 */
-	void AddToSinkQueue( const TDesC8& aData );
-
-	/**
-	 * Fills the media engine buffer with audio data upon request
-	 * by the media engine
-	 *
-	 * @param aInputBuffer Buffer into which audio data is to be copied
-	 */
-	void FillMediaEngineBuffer(const TDes8& aInputBuffer);
-
-	/**
-     * Fills the unfilled media engine buffers with the remaining audio data
-     */
-	void FillRemainingBuffers();
-
-	/**
-     * C++ default constructor
-     */
-	CIRIcyFlowReader( RSocket& aSocket, CIRStationConnection& aOwner,
-  	                  MIRStationDataObserver& aDataObserver, TChannelInfo& aChannelInfo );
-
-    /**
-     * Second phase construction
-     */
-	void ConstructL();
-
-private:
-
-    /**
-     * The parsing states
-     */
-    enum TIRParsingState
-        {
-        EIRReadingAudioData,        /**< Reading raw audio data. */
-        EIRReadingMetaDataLength,   /**< Reading the length of the meta data. */
-        EIRReadingMetaData          /**< Reading meta data. */
-        };
-
-	/**
-	 * Initiates a read from socket.
-	 */
-	void IssueRead();
-
-	/**
-     * Initializes the buffers that will be used for streaming
-     */
-	void InitializeBuffersL();
-
-	/**
-     * Extracts the meta data from the stream
-     */
-	void ExtractMetadataL();
-
-    /**
-     * Handles received data.
-     *
-     * Can contain any amount of audio and/or meta data mixed in with it.
-     *
-     * @param aData Data received.
-     */
-    void HandleReceivedDataL( const TDesC8& aData );
-
-    /**
-     * Handles received audio data.
-     *
-     * Can only contain raw audio data.
-     *
-     * @param aData Data received.
-     */
-    void HandleReceivedAudioData( const TDesC8& aData );
-
-    /**
-     * Handles received meta data.
-     *
-     * Can only contain meta data.
-     *
-     * @param aData Data received.
-     */
-    void HandleReceivedMetaData( const TDesC8& aData );
-    /**
-     * Recognizes if the string is UTF-8 encoded and decodes it,
-     * if required.
-     * 
-     * @param aString The string to be decoded.
-     * @return The string in Unicode/ISO-8859-1 format.
-     */
-    HBufC* DecodeMetadataStringLC( const TDesC8& aString ) const;
-    
-    /**
-     * Tests whether the string is UTF-8 encoded.
-     * 
-     * @param aString The string to be examined
-     * @return ETrue, if the string is UTF-8 encoded, EFalse otherwise. 
-     */
-    TBool IsUtf8Encoded( const TDesC8& aString ) const;
-
-private:
-
-	/**
-	 * The pointer to buffer which holds the audio data.
-	 * Owned.
-	 */
-	TUint8* iSongBuffer;
-
-	/**
-	 * Buffer that holds the data received over the network.
-	 * Owned.
-	 */
-	HBufC8* iSocketBuffer;
-
-    /**
-     * Buffer to contain unfinished song data.
-     * Owned.
-     */
-    HBufC8* iTempSongBuffer;
-
-    /**
-     * Buffer to contain unfinished meta data.
-     * Owned.
-     */
-    HBufC8* iTempMetaBuffer;
-
-    /**
-     * Current meta data information.
-     * Owned.
-     */
-    CIRMetaData* iMetaData;
-
-    /**
-	 * The socket that read.
-	 */
-    RSocket& iSocket;
-
-    /**
-     * The owner of this object in the whole-part relation.
-     */
-    CIRStationConnection& iOwner;
-
-    /**
-     * The observer wishing to receive audio/metadata
-     */
-    MIRStationDataObserver& iDataObserver;
-
-	/**
-	 * Queue of buffer which is filled
-	 */
-	TSglQue<CIRNetworkBuffer> iSourceQ;
-
-	/**
-	 * Queue of buffer which is empty
-	 */
-	TSglQue<CIRNetworkBuffer> iSinkQ;
-
-	/**
-	 * Temporary holder for network buffer.
-	 * Not owned.
-	 */
-	CIRNetworkBuffer* iTempBufferHolder;
-
-    /**
-     * Pointer descriptor to the network data buffer.
-     */
-    TPtr8 iSocketBufferPtr;
-
-	/**
-	 * Indicates the no. of bytes read from the socket
-     */
-	TSockXfrLength iSocketBytesRead;
-
-	/**
-	 * Indicates that stream source ( network side ) buffering is happening.
-	 */
-	TBool iInitialBuffering;
-
-	/**
-	 * Indicates rebuffering is occurring
-	 */
-	TBool iReBuffering;
-
-	/**
-	 * Indicates no of chunks of buffers to be copied
-	 */
-	TInt iNoOfChunks;
-
-	/**
-	 * Indicates the number of chunks are remaining
-	 */
-	TInt iChunksRemaining;
-
-    /**
-     * Length of the current meta data block in bytes.
-     */
-    TInt iMetaDataLength;
-
-	/**
-	 * Pointer to buffer to be filled.
-	 * Not owned.
-	 */
-	TUint8* iBufferFillPointer;
-
-	/**
-	 * Used to give buffer fill value to progress bar
-	 */
-	TInt iBufferCounter;
-
-	/**
-	 * Used to determine the metadata position
-	 */
-	TInt iAudioDataOffset;
-
-	/**
-	 * Indicates the data parsing state.
-	 */
-	TIRParsingState iParsingState;
-
-	/**
-	 * Holds the channel information
-	 */
-	TChannelInfo& iChannelInfo;
-
-	/**
-	 * Indicates if the channel info should be published or not
-	 */
-	TBool iPublishStationInfo;
-
-	/**
-	 * NetworkController singleton instance
-	 */
-	CIRNetworkController* iNetworkControllerHandle;
-	};
-
-#endif // IR_IRICYFLOWREADER
-
-
-
--- a/internetradio2.0/streamsourceinc/irmetadata.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Meta data wrapper class
-*
-*/
-
-
-#ifndef C_CIRMETADATA_H
-#define C_CIRMETADATA_H
-
-#include <s32mem.h>
-
-/**
- * Station meta data information wrapper.
- *
- * Supports all ICY protocol specified meta data information and provides
- * internalization and externalization for passing the meta data via binary
- * APIs, such as Publish & Subscribe.
- */
-NONSHARABLE_CLASS( CIRMetaData ) : public CBase
-    {
-
-public:
-
-    /**
-     * Default two-phased constructor.
-     *
-     * Initializes the object to default values.
-     *
-     * @return  The created object. Ownership is transferred.
-     */
-    inline static CIRMetaData* NewL();
-
-    /**
-     * Two-phased constructor for direct internalization.
-     *
-     * Initializes the object by internalizing it from the supplied data.
-     *
-     * @param   aData   Binary data to be used for internalization.
-     * @return  The created object. Ownership is transferred.
-     */
-    inline static CIRMetaData* NewL( const TDesC8& aData );
-
-    /**
-     * Destructor.
-     *
-     * Frees all allocated resources.
-     */
-    inline ~CIRMetaData();
-
-    /**
-     * Copies values from the supplied meta data object.
-     *
-     * Resulting object is identical to the supplied one after the call
-     * has been successfully completed.
-     *
-     * @param   aMetaData   Meta data to copy information from.
-     */
-    inline void SetL( const CIRMetaData& aMetaData );
-
-    /**
-     * Sets the artist name.
-     *
-     * @param   aArtist     The artist name to set.
-     */
-    inline void SetArtistL( const TDesC& aArtist );
-
-    /**
-     * Sets the song name.
-     *
-     * @param   aSong       The song name to set.
-     */
-    inline void SetSongL( const TDesC& aSong );
-
-    /**
-     * Sets the stream URL.
-     *
-     * @param   aStreamUrl  The stream URL to set.
-     */
-    inline void SetStreamUrlL( const TDesC& aStreamUrl );
-
-    /**
-     * Returns the artist name.
-     *
-     * @return  The artist name.
-     */
-    inline const TDesC& Artist() const;
-
-    /**
-     * Returns the song name.
-     *
-     * @return  The song name.
-     */
-    inline const TDesC& Song() const;
-
-    /**
-     * Returns the stream URL.
-     *
-     * @return  The stream URL.
-     */
-    inline const TDesC& StreamUrl() const;
-
-    /**
-     * Internalizes the object from the supplied stream.
-     *
-     * @param   aStream     Stream to internalize the object from.
-     */
-    inline void InternalizeL( RReadStream& aStream );
-
-    /**
-     * Externalizes the object to the supplied stream.
-     *
-     * @param   aStream     Stream to externalize the object to.
-     */
-    inline void ExternalizeL( RWriteStream& aStream ) const;
-
-    /**
-     * Equality comparison operator.
-     *
-     * Compares two meta data objects and returns whether or not they are identical.
-     *
-     * @param   aMetaData   Meta data to be used for comparison.
-     * @return  <code>ETrue</code> if the objects are identical, <code>EFalse</code> otherwise.
-     */
-    inline TBool operator==( const CIRMetaData& aMetaData ) const;
-
-    /**
-     * Inequality comparison operator.
-     *
-     * Compares two meta data objects and returns whether or not they are not identical.
-     *
-     * @param   aMetaData   Meta data to be used for comparison.
-     * @return  <code>ETrue</code> if the objects are not identical, <code>EFalse</code> otherwise.
-     */
-    inline TBool operator!=( const CIRMetaData& aMetaData ) const;
-
-private:
-
-    /**
-     * Default constructor.
-     */
-    inline CIRMetaData();
-
-    /**
-     * Second-phase constructor.
-     */
-    inline void ConstructL();
-
-    /**
-     * Second-phase constructor from binary data.
-     *
-     * @param   aData   Binary data to internalize the object from.
-     */
-    inline void ConstructL( const TDesC8& aData );
-
-private:
-
-    /**
-     * The name of the artist.
-     * Owned.
-     */
-    RBuf iArtist;
-
-    /**
-     * The name of the song.
-     * Owned.
-     */
-    RBuf iSong;
-
-    /**
-     * The stream URL.
-     * Owned.
-     */
-    RBuf iStreamUrl;
-
-    };
-
-#include "irmetadata.inl"
-
-#endif // C_CIRMETADATA_H
--- a/internetradio2.0/streamsourceinc/irmetadata.inl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Meta data information wrapper
-*
-*/
-
-
-// ---------------------------------------------------------------------------
-// Default two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-inline CIRMetaData* CIRMetaData::NewL()
-    {
-    CIRMetaData* self = new ( ELeave ) CIRMetaData;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor for direct internalization.
-// ---------------------------------------------------------------------------
-//
-inline CIRMetaData* CIRMetaData::NewL( const TDesC8& aData )
-    {
-    CIRMetaData* self = new ( ELeave ) CIRMetaData;
-    CleanupStack::PushL( self );
-    self->ConstructL( aData );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-inline CIRMetaData::CIRMetaData()
-    {
-    }
-    
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::ConstructL()
-    {
-    }
-    
-// ---------------------------------------------------------------------------
-// Second-phase constructor from binary data.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::ConstructL( const TDesC8& aData )
-    {
-    RDesReadStream stream( aData );
-    CleanupClosePushL( stream );
-    InternalizeL( stream );
-    CleanupStack::PopAndDestroy( &stream );
-    }
-    
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-inline CIRMetaData::~CIRMetaData()
-    {
-    iArtist.Close();
-    iSong.Close();
-    iStreamUrl.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Copies values from the supplied meta data object.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::SetL( const CIRMetaData& aMetaData )
-    {
-    SetArtistL( aMetaData.Artist() );
-    SetSongL( aMetaData.Song() );
-    SetStreamUrlL( aMetaData.StreamUrl() );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the artist name.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::SetArtistL( const TDesC& aArtist )
-    {
-    iArtist.Close();
-    iArtist.CreateL( aArtist );
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the song name.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::SetSongL( const TDesC& aSong )
-    {
-    iSong.Close();
-    iSong.CreateL( aSong );
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the stream URL.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::SetStreamUrlL( const TDesC& aStreamUrl )
-    {
-    iStreamUrl.Close();
-    iStreamUrl.CreateL( aStreamUrl );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the artist name.
-// ---------------------------------------------------------------------------
-//
-inline const TDesC& CIRMetaData::Artist() const
-    {
-    return iArtist;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the song name.
-// ---------------------------------------------------------------------------
-//
-inline const TDesC& CIRMetaData::Song() const
-    {
-    return iSong;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the stream URL.
-// ---------------------------------------------------------------------------
-//
-inline const TDesC& CIRMetaData::StreamUrl() const
-    {
-    return iStreamUrl;
-    }
-    
-// ---------------------------------------------------------------------------
-// Internalizes the object from the supplied stream.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::InternalizeL( RReadStream& aStream )
-    {
-    // The order of internalization must not be changed, nor can any of these
-    // be removed. Futher data fields may be added.
-
-    iArtist.Close();
-    iArtist.CreateL( aStream, KMaxTInt );
-
-    iSong.Close();
-    iSong.CreateL( aStream, KMaxTInt );
-
-    iStreamUrl.Close();
-    iStreamUrl.CreateL( aStream, KMaxTInt );
-    }
-    
-// ---------------------------------------------------------------------------
-// Externalizes the object to the supplied stream.
-// ---------------------------------------------------------------------------
-//
-inline void CIRMetaData::ExternalizeL( RWriteStream& aStream ) const
-    {
-    // The order of externalization must not be changed, nor can any of these
-    // be removed. Futher data fields may be added.
-
-    aStream << iArtist;
-    aStream << iSong;
-    aStream << iStreamUrl;
-    
-    aStream.CommitL();
-    }
-
-// ---------------------------------------------------------------------------
-// Equality comparison operator.
-// ---------------------------------------------------------------------------
-//
-TBool CIRMetaData::operator==( const CIRMetaData& aMetaData ) const
-    {
-    TBool ret = EFalse;
-
-    if ( iArtist == aMetaData.Artist() && iSong == aMetaData.Song() && iStreamUrl == aMetaData.StreamUrl() )
-        {
-        ret = ETrue;
-        }
-    
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// Inequality comparison operator.
-// ---------------------------------------------------------------------------
-//
-TBool CIRMetaData::operator!=( const CIRMetaData& aMetaData ) const
-    {
-    return !(*this == aMetaData);
-    }
--- a/internetradio2.0/streamsourceinc/irnetworkbuffer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +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:  Network buffer
-*
-*/
-
-
-#ifndef IRNETWORKBUFFER_H
-#define IRNETWORKBUFFER_H
-
-#include <e32base.h>
-
-//========================================class declaration CIRNetworkBuffer============================================
-
-/**
- * This class is wrapper class which can hold an address of a memory chunk
- * and size (granularity) of memory chunk.
- * This is implemented so as to use with queue like TSglQue
- * iLink is public member and is of a member of type TSglQueLink
- * The memory address is of TUint8* type and address is of type TInt
- * you can assign the address and granularity only when you create an instance
- * and retrive address and size using Des() and GetSize() respectively
- * typical usage is as follows
- * Note: This class DOESN'T take any responsibility of removing memory chunk
- * associated to it when you delete the chunk, since it is not creating the memory
- * chunk it doesn't do deallocation it has to taken care from where you create
- * the memory chunk
- *
- * Since it may require changes we are not using irbuffercontainer.cpp present in IRMediaEngine
- * however the logic is borrowed from IRMediaEngine
- * @code
- *
- * TSglQue<CIRNetworkBuffer> Myque;
- * TInt f_off = _FOFF(CIRNetworkBuffer,iLink);
- * Myque.SetOffset(f_off);
- * TUint8* buffer;
- * TInt sizeofbuffer;
- * CIRNetworkBuffer* bufferholder;
- * bufferholder = CIRNetworkBuffer::NewL(buffer,sizeofbuffer);
- * Myque.AddLast(*bufferholder);
- * TUint8* ptr = bufferholder->Des();
- * TInt size = bufferholder->GetSize();
- * bufferholder = Myque.First();
- * Myque.Remove(*bufferholder);
- * delete bufferholder; //deleting bufferholder doesn't deletes memory allocated
- *			            //to buffer is not getting deleted we have delete it explicitly
- * 
- * delete buffer;
- *
- * @endcode
- *   
- */
-
-NONSHARABLE_CLASS( CIRNetworkBuffer ) : public CBase
-	{
-											//member functions
-public :
-	
-	/**
-	 * Two Phase NewL
-	 * returns an instance CIRNetworkBuffer
-	 * Owned by CIRNetworkBuffer
-	 * @param aAddress Address of data chunk
-	 * @param aSize Size of data chunk
-	 * @return instance CIRNetworkBuffer
-	 */	
-	static CIRNetworkBuffer* NewL( TUint8* aAddress,TInt aSize );
-		
-	/**
-	 * Two Phase NewLC
-	 * Creates an instance CIRNetworkBuffer
-	 * Owned by CIRNetworkBuffer
-	 * @param aAddress Address of data chunk
-	 * @param aSize Size of data chunk
-	 * @return instance CIRNetworkBuffer
-	 */
-	static CIRNetworkBuffer* NewLC( TUint8* aAddress,TInt aSize );
-
-	/**
-	 * destructor function
-	 * Owned by CIRNetworkBuffer
-	 */ 
-	~CIRNetworkBuffer();
-	
- 	/**	
-	 *  Des returns the Address of the chunk;
-	 *  Owned by CIRNetworkBuffer Class
-	 *  @return address
-	 */	
-	 TUint8* Des() const;
-	
-		 
-	/**	
-	 *  Size returns the size of the chunk;
-	 *  Owned by CIRNetworkBuffer Class
-	 *  @return size of chunk
-	 */
-	 TInt Size() const;	
-
-private:
-
-	/**
-	 * Function : CIRNetworkBuffer
-	 * default constructor
-	 */	
-	CIRNetworkBuffer();
-				
-	/**
-	 * Two Phase ConstructL
-	 * Owned by CIRNetworkBuffer
-	 * @param aAddress Address of data chunk
-	 * @param aSize Size of data chunk
-	 */
- 	void ConstructL( TUint8* aAddress,TInt aSize );
-
-public:
-	/**
-	 * Queue Link owned by CIRNetworkBuffer
-	 */
-	TSglQueLink iLink; 
-
-private:
-		
-	/**
-	 * Queued buffer pointer owned by CIRNetworkBuffer
-	 */
-	 TUint8* iDataAddress;
-		
-	/**
-	 * Size of the chunk
-	 */
-	 TInt iSize;		
-	};
-
-#include "irnetworkbuffer.inl"
-	
-#endif //IRNETWORKBUFFER_H
-
-
--- a/internetradio2.0/streamsourceinc/irnetworkbuffer.inl	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +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:  Network buffer
-*
-*/
-
-
-
-#ifndef IR_BUFFERCONTAINER_INL
-#define IR_BUFFERCONTAINER_INL
-
-// -----------------------------------------------------------------------------	
-//  Des returns the Address of the chunk;
-//  Owned by CIRNetworkBuffer Class
-// -----------------------------------------------------------------------------
-//
- inline TUint8* CIRNetworkBuffer::Des() const
-	{
-	return iDataAddress;	
-	} 
-	 
-// -----------------------------------------------------------------------------	
-//  Size returns the size of the chunk;
-//  Owned by CIRNetworkBuffer Class
-// -----------------------------------------------------------------------------
-//
- inline TInt CIRNetworkBuffer::Size() const
-	{
-	return iSize;	
-	}
-	
-#endif //IR_BUFFERCONTAINER_INL
--- a/internetradio2.0/streamsourceinc/irsocketopener.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +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:  Opens TCP connection.
-*
-*/
-
-
-#ifndef IRSOCKETOPENER_H
-#define IRSOCKETOPENER_H
-
-#include <e32base.h>
-#include <es_sock.h>
-
-#include "irsockettimeouttimer.h"
-
-class RSocket;
-class TSockAddr;
-class CIRStationConnection;
-
-
-/**
- * Creates the socket connection a channel server
- */
-NONSHARABLE_CLASS ( CIRSocketOpener ) : public CActive,	public MIRSocketTimeoutNotifier
-    {
-public:
-    
-    /**
-     * Standard Symbian two-phase construction
-     *
-     * @param aSocket Socket to be opened.
-     * @param aOwner The owner of this CIRSocketOpener
-     * @return Instance of CIRSocketOpener
-     */
-    static CIRSocketOpener* NewL( RSocket& aSocket, CIRStationConnection& aOwner );
-    
-    /**
-     * Default C++ destructor
-     */
-    ~CIRSocketOpener();
-    
-    /**
-     * Called when the timer times out
-     */
-    void TimerExpired();
-    
-    /**
-     * Connects to the channel server
-     *
-     * @param aUri URI of channel server.
-     */
-    void ConnectL( const TDesC& aUri );
-
-protected:
-	
-	 // from base class CActive
-	 
-    /**
-     * From base class CActive
-     *
-     * @see CActive::RunL();
-     */
-    void RunL();
-    
-    /**
-     * From base class CActive
-     *
-     * @see CActive::DoCancel();
-     */
-    void DoCancel();
-
-private:
-
-    /**
-    * Constructor.
-    */
-    CIRSocketOpener( RSocket& aSocket, CIRStationConnection& aOwner );
-
-    /**
-    * Standard Symbian second-phase construction.
-    */
-    void ConstructL();
-    
-    /**
-     * Issues asynchronous resolving of the DNS name to IP address
-     */
-    void ResolveAddress();
-	
-	/**
-     * Issues asynchronous connecting to the channel server
-     */
-	void ConnectToAddress();
-	
-	/**
-     * Extracts the relevant URI components to member variables.
-     *
-     * @param aUri URI of the channel server
-     */
-    TBool ExtractUriComponentsL(const TDesC& aUri);
-
-private:
-	
-	/**
-     * The states of CIRSocketOpener
-     */
-    enum TIRSocketOpenerState
-		{
-		EIRIdle,
-		EIRResolving,
-		EIRConnecting,
-		EIRReady
-		};
-
-private:
-		
-	/**
-     * Used for timeout mechanism. 
-     * Owned.
-     */
-	CIRSocketTimeOutTimer* iSocketTimer;    
-
-	/**
-     * Contains the host part of the URI. 
-     * Owned.
-     */
-	RBuf iHost;
-	
-	/**
-     * For DNS resolving. 
-     * Owned.
-     */
-	RHostResolver iResolver;
-    
-	/**
-     * The current state of CIRSocketOpener
-     */
-	TIRSocketOpenerState iState;
-
-	/**
-     * The address of the server in the form understood by the socket. 
-     * Contains the IP address and the port.
-     */
-	TSockAddr iSockAddr;
-	
-	/**
-     * Contains the resolved host information.
-     */
-	TNameEntry iResolvedHostInfo;
-
-    /**
-     * Contains the port of the URI.
-     */	
-	TInt iPort;
-	
-	/**
-	 * Socket to be opened.
-	 */
-	RSocket& iSocket;
-
-    /**
-     * The owner in the whole-part relation.
-     */	
-	CIRStationConnection& iOwner;
-    };
-
-#endif // IRSOCKETOPENER_H
-
--- a/internetradio2.0/streamsourceinc/irsockettimeouttimer.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +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:  A Timer.
-*
-*/
-
-
-#ifndef IRSOCKETTIMEOUTTIMER_H
-#define IRSOCKETTIMEOUTTIMER_H
-
-#include <e32base.h>
-
-/**
- * A class for notifying of a timeout event.
- */
-class MIRSocketTimeoutNotifier
-	{
-public:
-	/*
-	 * Called when the timer raises an event.
-	 */
-	virtual void TimerExpired() = 0;
-	};
-
-/**
- * A class that raises timeout events.
- */
-
-NONSHARABLE_CLASS ( CIRSocketTimeOutTimer ) : public CTimer
-	{
-public:
-	/**
-	 * Creates an object of CIRSocketTimeOutTimer 
-	 * @param aPriority Priority of the active object.
-	 * @param aNotify Timer observer.
-	 * @return Pointer to CIRSocketTimeOutTimer object
-	 */
-	static CIRSocketTimeOutTimer* NewL( const TInt aPriority,
-	MIRSocketTimeoutNotifier& aNotify );
-
-	/**
-	 * Default C++ Destructor
-	 */
-	virtual ~CIRSocketTimeOutTimer();
-
-protected: 
-
-	/**
-	 * Derived from CTimer
-	 */
-
-	/**
-	 * Active object post-request handling.
-	 */
-	void RunL();
-
-	/**
-	 * Handles a leave occurring in the request completion event handler RunL()
-	 */
-	TInt RunError( TInt aError );
-
-private:
-
-	/**
-	 * Creates an object of CIRSocketTimeOutTimer
-	 * @param aPriority Priority of the active object.
-	 * @param aNotify A handle to the class to be notified of a timeout event.
-	 */
-	static CIRSocketTimeOutTimer* NewLC( const TInt aPriority,
-	MIRSocketTimeoutNotifier& aNotify );
-
-	/**
-	 * @param aPriority Priority of the active object.
-	 * @param aNotify A handle to the class to be notified of a timeout event.
-	 */
-	CIRSocketTimeOutTimer( const TInt aPriority,
-		MIRSocketTimeoutNotifier& aNotify);
-
-	/**
-	 * Standard Symbian second-phase construction.
-	 */
-	void ConstructL();
-
-private:
-
-	/**
-	 * Handle to the class to be notified of a timeout event.
-	 */
-	MIRSocketTimeoutNotifier& iNotify;
-	
-};
-
-#endif // IRSOCKETTIMEOUTTIMER_H
-
--- a/internetradio2.0/streamsourceinc/irstationconnection.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +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:  Represents a connection to a radio station.
-*
-*/
-
-
-#ifndef MIRSTATIONCONNECTIONOBSERVER_H
-#define MIRSTATIONCONNECTIONOBSERVER_H
-
-#include <e32base.h>
-#include <es_sock.h>
-
-class CIRStationConnection;
-class MIRStationDataObserver;
-class CIRSocketOpener;
-class CIRIcyFlowInitiator;
-class CIRIcyFlowReader;
-class TChannelInfo;
-
-/**
- * Observer interface for the CIRStationConnection.
- */
-class MIRStationConnectionObserver
-	{
-public:	
-	/**
-	 * Called to indicate sucessful connection
-	 *
-	 * @param aConnection Pointer to successful connection.
-	 */	
-	virtual void ConnectionSuccessful( CIRStationConnection* aConnection ) = 0;
-	
-	/*
-	 * Called to indicate failure in connection.
-	 *
-	 * @param aConnection The connection that failed.
-	 * @param aErrorCode Error code indicating the type of the error
-	 */
-	virtual void ConnectionError( CIRStationConnection* aConnection, TInt aErrorCode ) = 0;
-    };
-
-
-const TInt KMAXMETABUFLENGTH = 256;
-/**
- * Holds the meta data information 
- */
-class TChannelInfo
-	{
-public:
-	TBuf8<KMAXMETABUFLENGTH>	iStationName;
-	TBuf8<KMAXMETABUFLENGTH>	iGenre;
-	TBuf8<KMAXMETABUFLENGTH>	iBitRate;
-	TBuf8<KMAXMETABUFLENGTH>	iContentType;
-	TBuf8<KMAXMETABUFLENGTH> 	iSongTitle;
-	TBuf8<KMAXMETABUFLENGTH> 	iArtistName;
-	TInt iMetaInterval;
-	TInt iMetaDataTracker;
-	TInt iReadSize;
-	TInt iAudioDataOffset;
-	};
-
-/**
- * Instance of the class encompasses the connection establishment, error handling and
- * audio/meta data reading from the stream. 
- *
- *
- */
-NONSHARABLE_CLASS ( CIRStationConnection ): public CBase
-	{
-public:
-    /**
-     * The type of the connection
-     */
-    enum TIRStationConnectionType
-		{
-		EIRUndefined,
-		EIRPermanent,
-		EIRCandidate,
-		EIRDying
-		};
-	
-public:
-
-
-	/** 
-	 * Creates an instance of CIRStationConnection
-	 *
-	 * @param aConnectionObserver   Observer for connection related events.
-	 * @param aDataObserver         Observer for the audio/meta data.
-	 * @return Instance of CIRStationConnection
-	 */	
-    static CIRStationConnection* NewL( MIRStationConnectionObserver& aConnectionObserver,
-    			 MIRStationDataObserver& aDataObserver );
-
-	/** 
-	 *  Initiates a connection to internet radio station specified by the URI.
-     *
-	 *  @param aUri URI of the radio station server.
-	 */
-    void ConnectL( const TDesC& aUri );
-
-    /**
-     * Closes the connection. First cancels any pending asynchronous request and 
-     * then closes the socket.
-     */
-    void Close();
-
-    /**
-     * Sets the connection type.
-     *
-     * @param aType New connection type 
-     */
-    void SetConnectionType( TIRStationConnectionType aType );
-    
-    /**
-     * Gets the connection type.
-     *
-     * @return The type of the connection.
-     */    
-    TIRStationConnectionType ConnectionType() const;
-    
-    /**
-     * Gets the URI associated with the connection.
-     *
-     * @return URI associated with the connection.
-     */
-    const TDesC& Uri() const;
-
-    /**
-     * Gets the content type of the connected stream.
-     *
-     * @return The content type of the connected stream.
-     */
-    const TDesC8& ContentType() const;
-    
-	/** 
-	 *  Fills the buffer with the data from the stream.
-	 *
-	 *  @param aInputBuffer Buffer into which the data is copied.
-	 */	
-    void FillBuffer( TDes8& aInputBuffer );
-
-	/** 
-	 *  Default C++ Destructor
-	 */
-	~CIRStationConnection();
-	
-public:
-    // Methods for composite parts to call
-    /**
-     * Called by a composite part when the transport layer session is ready.
-     */
-	void ConnectionReady();
-	
-	/**
-	 * Called by a composite part when the application layer session is ready.
-	 */
-	void FlowReady();		
-	
-	/*
-     * Called by a composite part to report an error in connection.
-     *
-	 * @param aErrorCode type of error
-	 */
-	void ConnectionError( TInt aErrorCode );
-
-private:
-
-	/** 
-	 *  Default Constructor
-	 * @param aConnectionObserver   Observer for connection related events.
-	 * @param aDataObserver         Observer for the audio/meta data.
-	 * @return Instance of CIRStationConnection
-     */
-	CIRStationConnection( MIRStationConnectionObserver& aStationConnectionObserver,
-					 MIRStationDataObserver& aDataObserver );
-
-	/** 
-	 *  2nd Phase construction.
-	 */
-	void ConstructL();
-
-
-private:
-
-	/**
-	 * Starts the TCP connection. 
-	 * Owned.
-	 */
-	CIRSocketOpener* iSocketOpener;
-
-    /**
-     * Starts the ICY session. 
-     * Owned.
-     */
-    CIRIcyFlowInitiator* iIcyFlowInitiator;
-
-	/**
-	 * Reads the ICY session. 
-	 * Owned.
-	 */
-	CIRIcyFlowReader* iIcyFlowReader;
-
-    /** 
-     * The socket. 
-     * Owned.
-     */
-	RSocket iSocket;
-	
-    /**
-     * URI of the radio channel. 
-     * Owned.
-     */
-    RBuf iUri;
-
-    /**
-     * The connection event observer 
-     */
-	MIRStationConnectionObserver& iConnectionObserver;
-	
-	/**
-	 * Audio/metadata observer.
-	 */
-	MIRStationDataObserver& iDataObserver;
-
-    /**
-     * Information related to connected ICY channel.
-     */
-    TChannelInfo iChannelInfo;
-
-    /**
-     * Type of the connection.
-     */    
-    TIRStationConnectionType iConnectionType;
-	};
-
-#endif // MIRSTATIONCONNECTIONOBSERVER_H
--- a/internetradio2.0/streamsourceinc/irstationdataobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +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:  Implementing class will receive meta/audiodata events.
-*
-*/
-
-
-#ifndef IRSTATIONDATAOBSERVER_H
-#define IRSTATIONDATAOBSERVER_H
-
-class CIRMetaData;
-
-/**
- * Implementation of this interface will receive the Metadata (and someday audio data)
- * and audio data related events.
- */
-class MIRStationDataObserver
-	{
-public: 
-    /**
-	 * TIRAudioEvent.
-	 */ 
-	enum TIRAudioEvent
-		{
-		EBufferFilled,
-		EOpenComplete,
-        EBufferPercentage		
-		};    
-		
-public:
-    /**
-     * New metadata is received.
-     *
-     * @param aMetaData Received metadata.
-     */
-    virtual void MetadataReceived( const CIRMetaData& aMetaData ) = 0;
-
-	/**
-	 * Event related to that data has been received on the socket and read into a buffer.
-	 * This should be replaced by simple method providing the received audio data.	 
-	 */
-    virtual void AudioDataEvent( const TInt aResponseCode, TInt aValue ) = 0;
-	};
-
-#endif // IRSTATIONDATAOBSERVER_H
-
--- a/internetradio2.0/streamsourceinc/irstreamsource.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +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:  Manages the entire connection.
-*
-*/
-
-
-#ifndef IRSTREAMSOURCE_H
-#define IRSTREAMSOURCE_H
-
-#include <e32base.h>
-
-#include "irctrlcommand.h"
-#include "irsockettimeouttimer.h"
-#include "irstationconnection.h"
-#include "irstationdataobserver.h"
-
-
-// Constants
-const TInt KBufferingTimeOut = 60000000;
-
-class CIRMetadataHandler;
-class CIRNetworkController;
-class MIRStreamSourceObserver;
-
-/**
- * This class acts as a manager class for the streamsource component
- *
- * @code
- *
- * // Create a stream source object which is used for streaming data
- * // iObserver is the reference of the observer object which is called
- * // for issuing call backs.
- * CIRStreamSource iStreamSource = CIRStreamSource::NewL(iObserver);
- *
- * // Called to connect to the channel server iUrl specifying the 
- * // url to be connect to.
- * iStreamSource->ConnectToServerL(iUrl);
- *
- * // Called by the media engine to indicate that its buffers are to
- * // to be filled and iInputBuffer is the reference of the buffer to
- * // which data is to be copied
- * iStreamSource->FilltheBuffer(iInputbuffer);
- *
- * // Called to cancel a channel server connection request
- * iStreamSource->CancelRequest();
- *
- * // Called by the mediaclient to know the content-type
- * // of the audio stream
- * iStreamSource->ContentType();
- *
- * @endcode
- */ 
-
-NONSHARABLE_CLASS ( CIRStreamSource ): public CBase, public MIRStreamFill,
-	public MIRSocketTimeoutNotifier, public MIRStationConnectionObserver,
-	 public MIRStationDataObserver
-	{
-public:
-
-	/** 
-	 *  Initiates a connection to the url.
-	 *
-	 *  @param aUrl Url of the channel server to connect to.
-	 */
-	IMPORT_C void ConnectToServerL(const TDesC& aUrl);
-
-	/** 
-	 *  Reinitiates a connection to the url by
-     *
-	 *  @param aUrl Url of the channel server to connect to.
-	 */
-	IMPORT_C void ReconnectL(const TDesC& aUrl );
-
-	/** 
-	 *  Creates an Instance of CIRStreamSource
-	 *  @param aObserver Reference to the StreamSource Observer
-	 *  @return CIRStreamSource* pointer to the created CIRStreamSource object
-	 */	
-	IMPORT_C static CIRStreamSource* NewL(MIRStreamSourceObserver& aObserver);
-
-	/** 
-	 *  Fills the buffer with the data from the stream
-	 *  @param aInputBuffer Reference to the Input Buffer
-	 */	
-	IMPORT_C void FilltheBuffer(TDes8& aInputBuffer);
-
-	/** 
-	 *  Cancels the connection request
-	 */	
-	IMPORT_C void CancelRequest();
-
-	/** 
-	 *  Returns the content type header information of the channel
-	 *  @return const TDesC8& content type header information of the channel
-	 */	
-	IMPORT_C const TDesC8& ContentTypeL();
-
-	/** 
-	 *  Default C++ Destructor
-	 */
-	virtual ~CIRStreamSource();
-
-private:
-
-	/** 
-	 *  Creates a connection object and initiates the connection
-	 *  to channel server
-	 */	
-	void DoConnectL(const TDesC& aUrl);
-
-	/** 
-	 *  Default Constructor
-	 *  @param aObserver Reference to StreamSource observer
-	 */
-	CIRStreamSource(MIRStreamSourceObserver& aObserver);
-
-	/** 
-	 *  2nd Phase construction.
-	 */
-	void ConstructL();
-
-//from base class MIRStationConnectionObserver
-
-    /**
-     * From base class MIRStationConnectionObserver.
-     *
-     * @see MIRStationConnectionObserver::ConnectionSuccessful()
-     */
-	void ConnectionSuccessful( CIRStationConnection* aConnection );
-
-    /**
-     * From base class MIRStationConnectionObserver.
-     *
-     * @see MIRStationConnectionObserver::ConnectionError()
-     */
-	void ConnectionError( CIRStationConnection* aConnection, TInt aErrorCode );
-
-//	from base class MIRSocketTimeoutNotifier
-     
-    /**
-     * From base class MIRSocketTimeoutNotifier.
-     *
-     * @see MIRSocketTimeoutNotifier::TimerExpired()
-     */
-	void TimerExpired();	
-
-// from base class MIRStationDataObserver
-
-    /**
-     * From base class MIRStationDataObserver.
-     *
-     * @see MIRStationDataObserver::MetadataReceived()
-     */
-    void MetadataReceived( const CIRMetaData& aMetaData );
-
-    /**
-     * From base class MIRStationDataObserver.
-     *
-     * @see MIRStationDataObserver::AudioDataEvent()
-     */
-    void AudioDataEvent( const TInt aResponseCode,	TInt aValue );
-
-    /**
-     * Schedules an asynchronous cleanup for given connection.
-     *
-     * @param aConnection The connection to be deleted.
-     */
-    void AsyncCleanupConnection( CIRStationConnection* aConnection );
-
-    /**
-     * Callback method that performs the actual deletion of connections.
-     *
-     * @param aSelfPtr Pointer argument given when the callback/timer is created.
-     * @return KErrNone Specified in the function pointer declaration.
-     */	
-    static TInt StaticConnectionCleanupCallback( TAny* aSelfPtr );	
-
-private:
-
-	/**
-	 * Handle to the Network controller used to get the reference
-	 * of the RSocketServ and RConnection. 
-	 * Not owned.
-	 */
-    CIRNetworkController* iNetworkControllerHandle;
-
-	/**
-	 * Timer for handling timeouts. 
-	 * Owned
-	 */
-    CIRSocketTimeOutTimer* iSocketTimer;
-
-	/**
-	 * Pointer to the connection to current channel server. 
-	 * Not owned.
-	 */
-    CIRStationConnection* iCurrentConnection;
-
-	/**
-	 * Pointer to the connection to previous channel server. 
-	 * Not owned.
-	 */
-    CIRStationConnection* iNewConnection;
-
-	/**
-	 * Array of pointers to connections. 
-	 * Owned.
-	 */
-    RPointerArray<CIRStationConnection> iConnections;
-    
-    /**
-     * Timer for delayed cleanup of connections. 
-     * Owned.
-     */	 
-    CPeriodic* iConnectionCleanupTimer;
-
-	/**
-	 * Reference of the Stream source observer
-	 */
-    MIRStreamSourceObserver& iStreamSourceObserver;
-	
-	/**
-	 * Is set when reconnecting to a channel and reset 
-	 * when connecting for the first time
-	 */
-    TBool iReConnecting;
-
-	};
-
-#endif //IRSTREAMSOURCE_H
-
-
-
--- a/internetradio2.0/streamsourceinc/irstreamsourceerrors.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +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 IRSTREAMSOURCEERRORS_H
-#define IRSTREAMSOURCEERRORS_H
-
-#include <e32def.h>
-
-/** 
- * Base error code for Stream source component
- */
- 
-const TInt KIRStreamSourceErrorBase =  { 0xA1234B };
-
-/** 
- * Error to indicate time out has occurred
- */
-
-const TInt KIRStreamSourceTimeOut =  { KIRStreamSourceErrorBase	+ 0x00000000 };
-
-/** 
- * Error code for DNS lookup error
- */
-
-const TInt KIRStreamSourceLookupError =  { KIRStreamSourceErrorBase + 0x00000001 };
-
-/** 
- * Error code for connecting to channel server
- */
-
-const TInt KIRStreamSourceConnectionError =  { KIRStreamSourceErrorBase	+ 0x00000002 };
-
-/** 
- * Error code for socket write error
- */
-
-const TInt KIRStreamSourceWriteError =  { KIRStreamSourceErrorBase + 0x00000003 };
-
-/** 
- * Error code for socket read error 
- */
-const TInt KIRStreamSourceReadError =  { KIRStreamSourceErrorBase + 0x00000004 };
-
-/** 
- * Error code for no response from channel server
- */
-
-const TInt KIRStreamSourceNoResponse =  { KIRStreamSourceErrorBase + 0x00000005 };
-
-/** 
- * Error code for invalid url 
- */
-const TInt KIRStreamSourceInvalidUrl =  { KIRStreamSourceErrorBase + 0x00000006 };
-	
-/**
- * Error code for disconnected connection
- */	
-const TInt KIRStreamSourceDisconnected = { KIRStreamSourceErrorBase + 0x00000007 };
-
-/**
- * Error code for application layer protocol errors. 
- */
-const TInt KIRStreamSourceApplicationProtocolError =  { KIRStreamSourceErrorBase + 0x00000008 };
-
-#endif // IRSTREAMSOURCEERRORS_H
-
--- a/internetradio2.0/streamsourceinc/irstreamsourceliterals.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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 IRSTREAMSOURCELITERALS_H
-#define IRSTREAMSOURCELITERALS_H
-
-#include <e32def.h>
-
-const TInt KByteSpecifier = 1024;
-
-
-
-_LIT8( KIcyRequest, "GET %S HTTP/1.0\r\nHost: %S\r\nUser-Agent: %S\r\nAccept: */*\r\nIcy-MetaData:1\r\nConnection: close\r\n\r\n" );
-
-
-// Constants for specifying to the server to send meta info or not
-// Icy protocol specific http headers
-
-_LIT(KTcpProtocol,"tcp");
-_LIT8(KIcyName,"icy-name:");
-_LIT8(KIcyGenre,"icy-genre:");
-_LIT8(KIcyBitrate, "icy-br:");
-_LIT8(KIcyMetaint,"icy-metaint:");
-// RFC 2616 specifies this format
-_LIT8(KContentType,"Content-Type:");
-// This format is obtained from the channel server
-_LIT8(KContentTypeInvalid,"content-type:");
-_LIT8(KCarReturn,"\xD\xA");
-_LIT8(KHeaderEnd,"\xD\xA\xD\xA");
-
-// Supported content type is only of mime type audio
-_LIT8(KValidContentType,"audio/*");
-
-// Response validation
-_LIT8(KOkResponse,"200 OK");
-
-#endif //IRSTREAMSOURCELITERALS_H
-
--- a/internetradio2.0/streamsourceinc/irstreamsourceobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +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 IRSTREAMSOURCEOBSERVER_H
-#define IRSTREAMSOURCEOBSERVER_H
-
-#include <e32def.h>
-
-class CIRMetaData;
-
-/**
- * This MClass is to be implemented by the observer of streamsource
- */
-
-class MIRStreamSourceObserver
-	{
-public:
-
-	/** 
-	 *  MIRStreamSourceObserver::OpenComplete()
-	 *  Called when connected to the channel server  
-	 *  To implement the fill of buffer
-	 */
-	virtual void OpenComplete() = 0; 
-
-	/** 
-	 *  MIRStreamSourceObserver::ErrorConnecting()
-	 *  Called when there is an error when connecting to the channel server  
-	 *  @Param aErrorCode Indicates the type of error as described in
-	 * 		   irstreamsourceerrors.h
-	 */
-	virtual void ErrorConnecting(TInt aErrorCode) = 0;
-
-	/** 
-	 *  MIRStreamSourceObserver::PlayNow()
-	 *  Called to indicate to the player to start playing
-	 */
-	virtual void PlayNow() = 0;
-
-	/** 
-	 *  MIRStreamSourceObserver::Play()
-	 *  Triggers the play after reconnecting to the channel
-	 */
-	virtual void Play() = 0;
-	
-	/** 
-	 *  MIRStreamSourceObserver::StopBuffering()
-	 *  Called to indicate to the player to stop buffering
-	 */
-	virtual void StopBuffering() = 0;
-
-	/** 
-	 *  MIRStreamSourceObserver::ConnectionEstablished(TInt aFeedValue)
-	 *  Called to indicate that the connection to channel server is sucessful
-	 */
-	virtual void ConnectionEstablished() = 0 ;
-
-	/** 
-	 *  MIRStreamSourceObserver::UpdateProgress()
-	 *  Called to provide teh buffer values
-	 *  @param aFeedValue used to pump the buffering value
-	 */
-	virtual void UpdateProgress(TInt aFeedValue) = 0;
-
-    /**
-     * Invoked when meta data is received.
-     *
-     * @param   aMetaData   The meta data that was received.
-     */
-    virtual void HandleMetaDataReceivedL( const CIRMetaData& aMetaData ) = 0;
-
-	// Added for ASF Player
-	
-	/** 
-	 *  MIRStreamSourceObserver::Asf_ErrorConnecting()
-	 *  Called when there is an error when connecting to the channel server  
-	 *  @Param aErrorCode Indicates the type of error as described in
-	 * 		   irstreamsourceerrors.h
-	 */
-	virtual void Asf_ErrorConnecting(TInt aErrorCode) = 0;
-
-	/** 
-	 *  MIRStreamSourceObserver::Asf_ConnectionEstablished(TInt aFeedValue)
-	 *  Called to indicate that the connection to channel server is sucessful
-	 */
-	virtual void Asf_ConnectionEstablished() = 0 ;
-
-	/** 
-	 *  MIRStreamSourceObserver::Asf_UpdateProgress()
-	 *  Called to provide teh buffer values
-	 *  @param aFeedValue used to pump the buffering value
-	 */
-	virtual void Asf_UpdateProgress(TInt aFeedValue) = 0;
-
-    /**
-     * MIRStreamSourceObserver::Asf_HandleMetaDataReceivedL
-     * Invoked when meta data is received.
-     *
-     * @param   aMetaData   The meta data that was received.
-     */
-    virtual void Asf_HandleMetaDataReceivedL( const CIRMetaData& aMetaData ) = 0;
-	};
-
-#endif // IRSTREAMSOURCEOBSERVER_H
-
--- a/internetradio2.0/streamsourcesrc/irasfplayer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,431 +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:  Implementation of streaming and playback on ASF channel url
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 1, Fri Sep 19 13:00:00 2008 by e0328782 Rohit
-*  Ref:
-*  Created
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include <e32property.h>
-#include "irpubsubkeys.h"
-
-#include "irasfplayer.h"				// this class
-#include "irctrlcommand.h"				// MIRCtrlCmdObserver
-#include "irstreamsourceobserver.h"		// MIRStreamSourceObserver
-#include "irdebug.h"
-#include "irmetadata.h"
-
-//Constants
-_LIT8( KMimeTypeASF, "audio/x-ms-wma" );
-const TInt KFour = 4;
-_LIT( KIRSongTitle, "title" );
-_LIT( KIRSongArtist, "artist" );
-_LIT( KTrailingAsf, ".asf" );
-_LIT( KTrailingWma, ".wma" );
-_LIT( KTrailingWmv, ".wmv" );
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::NewL
-// function returns an instance of CIRAsfPlayer
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRAsfPlayer* CIRAsfPlayer::NewL(MIRStreamSourceObserver& aStreamObserver,
-										  MIRCtrlCmdObserver& aCtrlCmdObserver)
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::NewL" );
-	CIRAsfPlayer* self = CIRAsfPlayer::NewLC(aStreamObserver, aCtrlCmdObserver );
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRAsfPlayer::NewL - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::NewLC
-// function creates an instance of CIRAsfPlayer
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-CIRAsfPlayer* CIRAsfPlayer::NewLC(MIRStreamSourceObserver& aStreamObserver,
-								  MIRCtrlCmdObserver& aCtrlCmdObserver)
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::NewLC" );
-	CIRAsfPlayer* self = new (ELeave) CIRAsfPlayer(aStreamObserver, aCtrlCmdObserver);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRAsfPlayer::NewLC - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::~CIRAsfPlayer
-// Default Destructor
-// ---------------------------------------------------------------------------
-//
-CIRAsfPlayer::~CIRAsfPlayer()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::~CIRAsfPlayer" );
-    if( iMdaAudioPlayer )
-	    {
-	    delete iMdaAudioPlayer;
-	    iMdaAudioPlayer = NULL;
-	    }
-
-	if( iMetaData )
-		{
-		delete 	iMetaData;
-		iMetaData = NULL;
-		}
-	iStationUri.Close();
-
-	IRLOG_DEBUG( "CIRAsfPlayer::~CIRAsfPlayer - Exiting." );
-	}
-
-//Function for Play control
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::PlayL
-// function to intiate the player and play the stream
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAsfPlayer::PlayL(const TDesC& aUri)
-	{
-	IRRDEBUG2( "CIRAsfPlayer::PlayL - Entering aUri=%S", &aUri );
-
-    iStationUri.Close();
-    iStationUri.CreateL( aUri );
-
-	User::LeaveIfNull( iMdaAudioPlayer );
-    if( iMdaAudioPlayer )
-	    {
-	    iMdaAudioPlayer->Close();
-    	iMdaAudioPlayer->OpenUrlL( iStationUri, KUseDefaultIap, KMimeTypeASF );
-	    }
-
-	IRLOG_DEBUG( "CIRAsfPlayer::PlayL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::Play
-// function to resume playing (AsfPlayer should already initiated using Play(url))
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAsfPlayer::Play()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::Play" );
-
-	SetVolume( iCtrlCmdObserver.FetchVolume() );
-    if( iMdaAudioPlayer )
-	    {
-		iMdaAudioPlayer->Play();
-	    }
-
-	IRLOG_DEBUG( "CIRAsfPlayer::Play - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::Stop
-// function to which stop the player
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAsfPlayer::Stop()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::Stop" );
-
-    if( iMdaAudioPlayer )
-	    {
-		iMdaAudioPlayer->Stop();
-	    }
-
-	IRLOG_DEBUG( "CIRAsfPlayer::Stop - Exiting." );
-	}
-
-										//Functions for Volume Control
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::SetVolume
-// function to set the volume
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRAsfPlayer::SetVolume(TInt aVolume )
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::SetVolume" );
-
-    if( iMdaAudioPlayer )
-	    {
-		iMdaAudioPlayer->SetVolume( aVolume );
-	    }
-
-	IRLOG_DEBUG( "CIRAsfPlayer::SetVolume - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::Volume
-// function to returns the volume, integer level of volume is the Output
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRAsfPlayer::Volume() const
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::Volume" );
-
-	TInt volume = 0;
-    if( iMdaAudioPlayer )
-	    {
-		iMdaAudioPlayer->GetVolume( volume );
-	    }
-
-	return volume;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::MaxVolume
-// function to returns the maximum volume
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRAsfPlayer::MaxVolume() const
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::MaxVolume" );
-
-	TInt volume = 0;
-    if( iMdaAudioPlayer )
-	    {
-		volume = iMdaAudioPlayer->MaxVolume();
-	    }
-
-	return volume;
-	}
-
-// Helper functions
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::DetectAsfChannel
-// Function is used to detect ASF channel by its url ending in .asf/.wma/.wmv
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRAsfPlayer::DetectAsfChannel(const TDesC& aUri)
-	{
-	IRLOG_DEBUG("CIRAsfPlayer::DetectAsfChannel - Entering");
-	TPtrC ptr( aUri );
-	TPtrC UriTypePtr( ptr.Right(KFour) );
-
-	TBool bAsf = UriTypePtr == KTrailingAsf || UriTypePtr == KTrailingWma
-							   || UriTypePtr == KTrailingWmv;
-
-	IRRDEBUG2("CIRAsfPlayer::DetectAsfChannel - ASF Channel detected = %d", (TInt)bAsf);
-	IRLOG_DEBUG("CIRAsfPlayer::DetectAsfChannel - Exiting");
-	return bAsf;
-	}
-
-// Two-phase construction
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::CIRAsfPlayer
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-CIRAsfPlayer::CIRAsfPlayer(MIRStreamSourceObserver& aStreamObserver,
-						   MIRCtrlCmdObserver& aCtrlCmdObserver):
-	iMdaAudioPlayer(NULL), iMetaData(NULL),
-	iCtrlCmdObserver( aCtrlCmdObserver ), iStreamObserver(aStreamObserver),
-	iState( ENotReady )
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::CIRAsfPlayer" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::ConstructL
-// Two phase constructor is used to intialize data members
-// Function can leave if CMdaAudioOutputStream::NewL leaves
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::ConstructL" );
-
-	iMdaAudioPlayer = CMdaAudioPlayerUtility::NewL( *this );
-	User::LeaveIfNull( iMdaAudioPlayer );
-
-	iMdaAudioPlayer->RegisterForAudioLoadingNotification( *this );
-
-	iMetaData = CIRMetaData::NewL();
-	User::LeaveIfNull( iMdaAudioPlayer );
-
-	IRLOG_DEBUG( "CIRAsfPlayer::ConstructL - Exiting." );
-	}
-
-//Call back functions
-
-// ---------------------------------------------------------------------------
-// MMdaAudioPlayerCallback::MapcInitComplete
-// Invoked with OpenUrl() success/fail result
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
-	{
-	IRRDEBUG2( "CIRAsfPlayer::MapcInitComplete - Entering. aError = %d", aError );
-    if( KErrNone == aError )
-	    {
-	    iState = EReadyToPlay;
-	    Play();
-	    iStreamObserver.Asf_ConnectionEstablished();
-    	}
-	else
-		{
-		iState = ENotReady;
-		iStreamObserver.Asf_ErrorConnecting(aError);
-		}
-	IRLOG_DEBUG( "CIRAsfPlayer::MapcInitComplete - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// MMdaAudioPlayerCallback::MapcPlayComplete
-// Invoked after playback of an audio sample completes success/fail
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::MapcPlayComplete(TInt aError)
-	{
-	IRRDEBUG2( "CIRAsfPlayer::MapcPlayComplete - Entering. aError = %d", aError );
-	if( KErrNone != aError )
-		{
-		iState = ENotReady;
-		iStreamObserver.Asf_ErrorConnecting(aError);
-		}
-	else
-		{
-		// won't hit this as playing from stream
-		}
-	IRLOG_DEBUG( "CIRAsfPlayer::MapcPlayComplete - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// MAudioLoadingObserver::MaloLoadingStarted
-//
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::MaloLoadingStarted()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::MaloLoadingStarted - Entering" );
-	TInt percentComplete = 0;
-
-	if( iMdaAudioPlayer )
-		{
-		iState = EReadyToPlay;
-
-		TRAPD( err, iMdaAudioPlayer->GetAudioLoadingProgressL( percentComplete ));
-		if(err == KErrNone)
-			iStreamObserver.Asf_UpdateProgress( percentComplete );
-		}
-	IRLOG_DEBUG( "CIRAsfPlayer::MaloLoadingStarted - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// MAudioLoadingObserver::MaloLoadingComplete
-//
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::MaloLoadingComplete()
-	{
-	IRLOG_DEBUG( "CIRAsfPlayer::MaloLoadingComplete - Entering" );
-	TInt percentComplete = 0;
-
-	if( iMdaAudioPlayer )
-		{
-		iState = EPlaying;
-
-		TRAPD( err, iMdaAudioPlayer->GetAudioLoadingProgressL( percentComplete ));
-		if(err == KErrNone)
-			iStreamObserver.Asf_UpdateProgress( percentComplete );
-
-		TRAP( err, ReadMetadataL());
-		if(err != KErrNone)
-			{
-			IRLOG_WARNING( "CIRAsfPlayer::MaloLoadingComplete - Failed to read/publish metadata" );
-			}
-
-		// publish birtate
-		TUint bitrate = 0;
-		err = iMdaAudioPlayer->GetBitRate( bitrate );
-		RProperty::Set( KUidActiveInternetRadioApp, KIRPSBitrate, bitrate );
-		}
-	IRLOG_DEBUG( "CIRAsfPlayer::MaloLoadingComplete - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAsfPlayer::ReadMetadataL
-// Reads the meta data from the CMdaAudioPlayerUtility
-// ---------------------------------------------------------------------------
-//
-void CIRAsfPlayer::ReadMetadataL()
-	{
-    IRLOG_DEBUG( "CIRAsfPlayer::ReadMetadataL - Entering" );
-
-	if(iMetaData)
-		{
-	    // Erases old meta data information.
-	    iMetaData->SetArtistL( KNullDesC );
-	    iMetaData->SetSongL( KNullDesC );
-	    iMetaData->SetStreamUrlL( KNullDesC );
-
-		// Stream Url
-		iMetaData->SetStreamUrlL( iStationUri );
-
-	    TInt nMetadata = 0;
-	    TInt err = iMdaAudioPlayer->GetNumberOfMetaDataEntries( nMetadata );
-	    for( TInt ctr=0; ctr < nMetadata; ++ctr )
-	        {
-	        CMMFMetaDataEntry* pMetadataEntry = iMdaAudioPlayer->GetMetaDataEntryL( ctr );
-
-	        // Song Title
-	        if( pMetadataEntry->Name() == KIRSongTitle )
-	        	{
-	        	iMetaData->SetSongL( pMetadataEntry->Value() );
-	        	}
-	        // Song Artist
-	        else if( pMetadataEntry->Name() == KIRSongArtist )
-	        	{
-	        	iMetaData->SetArtistL( pMetadataEntry->Value() );
-	        	}
-	        }
-
-		if( iMetaData->Song().Length() == 0 )
-			{
-			IRLOG_WARNING( "CIRAsfPlayer::ExtractMetaDataL - song \"title\" not found in metadata" );
-			}
-		if( iMetaData->Artist().Length() == 0 )
-			{
-			IRLOG_WARNING( "CIRAsfPlayer::ExtractMetaDataL - song \"artist\" not found in metadata" );
-			}
-
-		// Notify observer
-		iStreamObserver.Asf_HandleMetaDataReceivedL( *iMetaData );
-
-	    IRLOG_DEBUG4( "CIRAsfPlayer::ReadMetadataL - Exiting (artist=%S, song=%S, streamUrl=%S)",
-	    		     &iMetaData->Artist(), &iMetaData->Song(), &iMetaData->StreamUrl() );
-		}
-	}
--- a/internetradio2.0/streamsourcesrc/iricyflowinitiator.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,457 +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:  ICY flow initiator implementation
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Tue Mar 11 20:00:00 2008 by Rohit
-*  Ref:
-*  Merged IRv1.0 Engine code changes
-*
-*  Version: 2, Tue Feb 28 18:00:00 2008 by Rohit/Kranthi
-*  Ref:
-*  Setting RawDataTransferredL() into DataTransferTracker for Byte Counter Impl
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include <e32property.h>
-#include <es_sock.h>
-#include <in_sock.h>
-#include <uriutils.h>
-
-#include "iricyflowinitiator.h"
-#include "irdebug.h"
-#include "irnetworkcontroller.h"
-#include "irpubsubkeys.h"
-#include "irstationconnection.h"
-#include "irstreamsourceerrors.h"
-#include "irstreamsourceliterals.h"
-
-// Constants
-const TInt KIRFITimeOutValue = 10000000;
-const TInt KIRHeaderMaxSize = 256;
-_LIT8( KIRUriComponentSeparator, "/" );
-const TInt KFour = 4;
-const TInt KSixtyFour=64;
-const TInt KTwoZeroFourEight=2048;
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::NewL
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowInitiator* CIRIcyFlowInitiator::NewL( RSocket& aSocket, const TDesC& aUri,
-			 CIRStationConnection& aOwner, TChannelInfo& aChannelInfo )
-    {
-	CIRIcyFlowInitiator* self = new ( ELeave ) CIRIcyFlowInitiator( aSocket,
-							 aUri, aOwner, aChannelInfo );
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::CIRIcyFlowInitiator
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowInitiator::CIRIcyFlowInitiator( RSocket& aSocket, const TDesC& aUri,
-			 CIRStationConnection& aOwner, TChannelInfo& aChannelInfo ) :
-    		CActive( CActive::EPriorityStandard ), iState( EIRIdle ),
-    		iSocket( aSocket ), iUri( aUri ), iOwner( aOwner ), iChannelInfo( aChannelInfo )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::ConstructL()
-	{
-    IRLOG_DEBUG( "CIRIcyFlowInitiator::ConstructL." );
-	CActiveScheduler::Add( this );
-	iSocketTimer = CIRSocketTimeOutTimer::NewL(CActive::EPriorityHigh,*this);
-
-	iNetworkControllerHandle = CIRNetworkController::OpenL();
-	iUAProfString.CreateL( *iNetworkControllerHandle->GetUAProfString() );
-
-	iBuffer.CreateL( KIRHeaderMaxSize );
-    iReadBuffer.CreateL( 1 );
-    if ( !ExtractUriComponentsL() )
-        {
-        User::Leave( KErrCorrupt );
-        }
-    IRLOG_DEBUG( "CIRIcyFlowInitiator::ConstructL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::~CIRIcyFlowInitiator
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowInitiator::~CIRIcyFlowInitiator()
-	{
-	Cancel();
-	iHost.Close();
-	iPath.Close();
-
-	iBuffer.Close();
-	iReadBuffer.Close();
-	iUAProfString.Close();
-
-	delete iSocketTimer;
-	if(iNetworkControllerHandle)
-		{
-		iNetworkControllerHandle->Close();
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::ExtractUriComponentsL
-// ---------------------------------------------------------------------------
-//
-TBool CIRIcyFlowInitiator::ExtractUriComponentsL()
-	{
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::ExtractUriComponentsL" );
-
-	TBool retMe = EFalse;
-
-	if( !UriUtils::HasInvalidChars( iUri ) )
-		{
-    	TUriParser uriParser;
-    	uriParser.Parse( iUri );
-
-        iHost.Close();
-    	iHost.CreateL( uriParser.Extract( EUriHost ).Size() );
-    	iHost.Copy( uriParser.Extract( EUriHost ) );
-    	iPath.Close();
-    	iPath.CreateL( uriParser.Extract( EUriPath ).Size() );
-    	iPath.Copy( uriParser.Extract( EUriPath ) );
-
-    	if ( iPath.Length() == 0 )
-    		{
-    		iPath.Close();
-    		iPath.CreateL( KIRUriComponentSeparator );
-    		}
-        retMe = ETrue;
-		}
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::ExtractUriComponentsL - Exiting." );
-	return retMe;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::RequestFlow
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::RequestFlow()
-	{
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::RequestFlow" );
-	Cancel();
-
-	iBuffer.ReAlloc(iPath.Length() + iHost.Length() + iUAProfString.Length() 
-												+ KIcyRequest().Length());
-	iBuffer.Format( KIcyRequest, &iPath, &iHost, &iUAProfString );
-
-	// Cancel any pending timer requests
-	iSocketTimer->Cancel();
-	iSocketTimer->After( KIRFITimeOutValue );
-
-	iState = EIRSending;
-
-	IRDEBUGCODE(
-	    RBuf requestCopy;
-	    if ( requestCopy.Create( iBuffer.Length() ) == KErrNone  )
-	        {
-	        requestCopy.Copy( iBuffer );
-	        IRLOG_DEBUG2( "CIRIcyFlowInitiator::RequestFlow - request= %S", &requestCopy );
-	        requestCopy.Close();
-	        }
-    )
-
-	// HTTP GET METHOD sent to server
-	iSocket.Send( iBuffer, 0, iStatus );
-	SetActive();
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::RequestFlow - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::RunL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::RunL()
-	{
-	IRLOG_INFO3( "CIRIcyFlowInitiator::RunL - iStatus=%d, iState=%d", iStatus.Int(), iState );
-
-	if( iStatus == KErrNone )
-		{
-		switch( iState )
-			{
-			case EIRSending:
-				iSocketTimer->Cancel();
-				iSocketTimer->After( KIRFITimeOutValue );
-
-				// Byte Counter Impl
-                iNetworkControllerHandle->DataTransferTracker().RawDataTransferredL(
-                		iBuffer.Size(),0, MIRDataTransferTracker::EIRTransferCategoryAudio);
-
-                iBuffer.Zero();
-                iBuffer.ReAlloc( KIRHeaderMaxSize );
-                iState = EIRReceiving;
-                iSocket.Read( iReadBuffer, iStatus );
-                SetActive();
-				break;
-			case EIRReceiving:
-				iSocketTimer->Cancel();
-				if ( iBuffer.MaxLength() <= ( iBuffer.Length() + iReadBuffer.Length() ) )
-					{
-					iBuffer.ReAlloc( iBuffer.MaxLength() + KSixtyFour );
-					}
-				// Byte Counter Impl
-                iNetworkControllerHandle->DataTransferTracker().RawDataTransferredL( 0,
-                		 iBuffer.Size(), MIRDataTransferTracker::EIRTransferCategoryAudio);
-				iBuffer.Append(iReadBuffer);
-				iReadBuffer.Zero();
-				
-				// Check if we got the full header and if not, read more from the socket.
-				if ( iBuffer.Find( KHeaderEnd ) == KErrNotFound )
-					{
-					// if we have received 2kb's of headers, Then there is propably
-					// some sort error and its time to abort
-					if ( iBuffer.Length() >= KTwoZeroFourEight )
-						{
-						IRLOG_ERROR( "CIRIcyFlowInitiator::RunL - EIRReceiving. Got 2kb's of headers." ); 
-						// Cancel the timer if active
-						iSocketTimer->Cancel();
-						iOwner.ConnectionError( KIRStreamSourceReadError );
-						iState = EIRIdle;
-						break;
-						}
-					
-					iSocket.Read( iReadBuffer, iStatus );
-					SetActive();
-					iSocketTimer->After( KIRFITimeOutValue );
-					break;
-					}
-				ParseChannelInfoL();
-				if ( ValidateChannelServer() )
-					{
-					TInt bitRateInt(0);
-					TLex8 bitvariable( iChannelInfo.iBitRate );
-					bitvariable.Val( bitRateInt );
-					RProperty::Set( KUidActiveInternetRadioApp,
-						KIRPSBitrate, bitRateInt );
-					iOwner.FlowReady();
-				    iState = EIRFinished;
-					}
-				else
-					{
-				    IRLOG_ERROR( "CIRIcyFlowInitiator::RunL - Invalid server" );
-					iOwner.ConnectionError( KIRStreamSourceInvalidUrl );
-				    iState = EIRIdle;
-					}
-
-				break;
-			default:
-				__ASSERT_DEBUG( EFalse, User::Invariant() );
-                break;
-			}
-		}
-	else // An error has occurred
-		{
-		switch( iState )
-			{
-			case EIRSending:
-				IRLOG_ERROR( "CIRIcyFlowInitiator::RunL - EIRSending" );
-				// Cancel the timer if active
-				iSocketTimer->Cancel();
-				// Error in sending data to channel server
-				iOwner.ConnectionError( KIRStreamSourceWriteError );
-				break;
-			case EIRReceiving:
-				IRLOG_ERROR( "CIRIcyFlowInitiator::RunL - EIRReceiving" );
-				// Cancel the timer if active
-				iSocketTimer->Cancel();
-				//Error in response from channel server
-				if( iStatus.Int() == KErrEof )
-					{
-					iOwner.ConnectionError( KIRStreamSourceNoResponse );
-					}
-				else
-					{
-					iOwner.ConnectionError( KIRStreamSourceReadError );
-					}
-				break;
-			default:
-				IRLOG_FATAL2( "CIRIcyFlowInitiator::RunL - Error in unexpected state (%d)", iStatus.Int() );
-				__ASSERT_DEBUG( EFalse, User::Invariant() );
-				break;
-			}
-		}
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::RunL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CIRIcyFlowInitiator::RunError( TInt aError )
-    {
-    IRLOG_ERROR2( "CIRIcyFlowInitiator::RunError - aError=%d", aError );
-    iOwner.ConnectionError( aError );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::DoCancel()
-    {
-	IRLOG_DEBUG2( "CIRIcyFlowInitiator::DoCancel - iState = %d.", iState );
-    iSocket.CancelAll();
-    iSocketTimer->Cancel();
-    iState = EIRIdle;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::TimerExpired
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::TimerExpired()
-    {
-	IRLOG_ERROR( "CIRIcyFlowInitiator::TimerExpired." );
-    Cancel();
-    iOwner.ConnectionError( KIRStreamSourceTimeOut );
-    IRLOG_DEBUG( "CIRIcyFlowInitiator::TimerExpired - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::ValidateChannelServer
-// ---------------------------------------------------------------------------
-//
-TBool CIRIcyFlowInitiator::ValidateChannelServer()
-	{
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::ValidateChannelServer" );
-	TBool retMe = EFalse;
-
-	if ( iChannelInfo.iContentType.Match(KValidContentType) != KErrNotFound )
-		{
-		retMe = ETrue;
-		}
-	IRLOG_DEBUG2( "CIRIcyFlowInitiator::ValidateChannelServer - Exiting (%d).", retMe );
-	return retMe;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::ParseChannelInfoL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowInitiator::ParseChannelInfoL()
-    {
-    IRLOG_DEBUG( "CIRIcyFlowInitiator::ParseChannelInfoL" );
-
-    TInt offsetPositionStart( 0 );
-    offsetPositionStart = iBuffer.Find( KHeaderEnd );
-    if ( offsetPositionStart == KErrNotFound )
-        {
-        IRLOG_ERROR( "CIRIcyFlowInitiator::ParseChannelInfoL - Header delimiter not found." );
-        User::Leave( KIRStreamSourceApplicationProtocolError );
-        }
-    offsetPositionStart += KFour;
-    TPtrC8 start = iBuffer.Mid( offsetPositionStart );
-    iChannelInfo.iAudioDataOffset = start.Length();
-    // Call ExtractMetaInfo function for each Meta Field
-    ExtractMetaInfoL( KIcyName, iChannelInfo.iStationName );
-    ExtractMetaInfoL( KIcyGenre, iChannelInfo.iGenre );
-    ExtractMetaInfoL( KIcyBitrate, iChannelInfo.iBitRate );
-    // Extract the Content-Type header
-	ExtractMetaInfoL( KContentType, iChannelInfo.iContentType );
-	// Extract the content-type header ( invalid header name handling )
-	ExtractMetaInfoL( KContentTypeInvalid, iChannelInfo.iContentType );
-    RBuf8 metaIntervalBuf;
-    metaIntervalBuf.CreateL( KMAXMETABUFLENGTH );
-    metaIntervalBuf.CleanupClosePushL();
-
-	ExtractMetaInfoL( KIcyMetaint, metaIntervalBuf );
-
-	TLex8 convert( metaIntervalBuf );
-    convert.Val( iChannelInfo.iMetaInterval );
-
-    if ( iChannelInfo.iMetaInterval <= 0 ) // Invalid meta interval specified, the stream is corrupt and cannot be played.
-        {
-        IRLOG_ERROR( "CIRIcyFlowInitiator::ParseChannelInfoL - Invalid metainterval." );
-        User::Leave( KIRStreamSourceApplicationProtocolError );
-        }
-    CleanupStack::PopAndDestroy();
-
-    IRLOG_DEBUG( "CIRIcyFlowInitiator::ParseChannelInfoL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowInitiator::ExtractMetaInfoL
-// ---------------------------------------------------------------------------
-//
-TBool CIRIcyFlowInitiator::ExtractMetaInfoL(const TDesC8& aMetaField, TDes8 &aBuffer ) const
-    {
-    IRLOG_DEBUG2( "CIRIcyFlowInitiator::ExtractMetaInfoL - aMetaField = %S", &aMetaField );
-    // This function contains the logic for parsing the
-    // buffer obtained from RecieveMetaInfo() and
-    // appends the Meta info into the ChannelInfo structure
-    TInt offsetPositionStart( 0 );
-    TInt offsetPositionEnd( 0 );
-    TPtr8 startPos( NULL, 0 );
-
-    offsetPositionStart = iBuffer.Find( aMetaField );
-
-    if ( offsetPositionStart < 0 )
-	    {
-	    IRLOG_DEBUG( "CIRIcyFlowInitiator::ExtractMetaInfoL - Field not found, Exiting." );
-        return EFalse;
-        }
-    // Increment the offset by the length of meta field
-    offsetPositionStart += aMetaField.Length();
-
-    TPtrC8 start = iBuffer.Mid( offsetPositionStart );
-
-    offsetPositionEnd = start.Find( KCarReturn );
-
-    if ( offsetPositionEnd == KErrNotFound )
-        {
-        IRLOG_ERROR( "CIRIcyFlowInitiator::ExtractMetaInfoL - Field delimiter not found." );
-        User::Leave( KIRStreamSourceApplicationProtocolError );
-        }
-    // Extract the actual data
-    TPtrC8 data = start.Left( offsetPositionEnd );
-
-    // too large field for this implementation.
-    if (data.Length() > aBuffer.MaxLength() )
-        {
-        IRLOG_ERROR3( "CIRIcyFlowInitiator::ExtractMetaInfoL - Received field was too large (%d, allowed maximum = %d)",
-                      data.Length(), aBuffer.Length() );
-        User::Leave( KIRStreamSourceApplicationProtocolError );
-        }
-
-    aBuffer.Copy( data );
-    aBuffer.TrimAll();
-	IRLOG_DEBUG( "CIRIcyFlowInitiator::ExtractMetaInfoL - Exiting." );
-    return ETrue;
-    }
-
--- a/internetradio2.0/streamsourcesrc/iricyflowreader.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,714 +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:  ICY flow reader implementation
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 2, Tue Feb 28 18:00:00 2008 by Rohit/Kranthi
-*  Ref:
-*  Setting RawDataTransferredL() into DataTransferTracker for Byte Counter Impl
-*
-*  </ccm_history>
-* ============================================================================
-*/
-#include <utf.h>
-
-#include "iricyflowreader.h"
-#include "irdebug.h"
-#include "irmediaenginebuffer.h"
-#include "irmetadata.h"
-#include "irnetworkbuffer.h"
-#include "irstationconnection.h"
-#include "irstationdataobserver.h"
-#include "irstreamsourceerrors.h"
-#include "irnetworkcontroller.h"
-
-const TInt KMaxSongBufferSize = 61440;
-const TInt KNoInputBuffers = 60;
-const TInt KMaxBufferChunkSize = 1024;
-const TInt KMaxSocketBufferSize = 1024;
-const TInt KBufferPercentageInc = 1;
-const TInt KSixteen = 16;
-const TInt KThree=3;
-_LIT8( KIRStreamTitle, "StreamTitle='" );
-_LIT8( KIRStreamUrl, "StreamUrl='" );
-_LIT8( KIRMetaDataEndIdentifier, "';" );
-_LIT8( KIRSongDelimiter, " - " );
-
-// masks and prefices used in UTF-8 recognition
-const TInt KIRUtf8_2B1stByteMask = 0xE0;
-const TInt KIRUtf8_3B1stByteMask = 0xF0;
-const TInt KIRUtf8_4B1stByteMask = 0xF8;
-const TInt KIRUtf8FollowingByteMask = 0xC0;
-
-const TInt KIRUtf8_2B1stBytePrefix = 0xC0;
-const TInt KIRUtf8_3B1stBytePrefix = 0xE0;
-const TInt KIRUtf8_4B1stBytePrefix = 0xF0;
-const TInt KIRUtf8FollowingBytePrefix = 0x80;
-// ========================= MEMBER FUNCTIONS ================================
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::NewL
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowReader* CIRIcyFlowReader::NewL( RSocket& aSocket, CIRStationConnection& aOwner,
-	               MIRStationDataObserver& aDataObserver, TChannelInfo& aChannelInfo )
-    {
-    CIRIcyFlowReader* self = new ( ELeave ) CIRIcyFlowReader( aSocket, aOwner,
-    					 aDataObserver, aChannelInfo );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::CIRIcyFlowReader
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowReader::CIRIcyFlowReader( RSocket& aSocket, CIRStationConnection& aOwner,
-	              MIRStationDataObserver& aDataObserver, TChannelInfo& aChannelInfo )
-    :CActive( EPriorityStandard ), iSocket( aSocket ), iOwner( aOwner ),
-    				 iDataObserver( aDataObserver ),
-      iSocketBufferPtr( NULL, 0 ), iChannelInfo( aChannelInfo )
-    {
-
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::~CIRIcyFlowReader
-// ---------------------------------------------------------------------------
-//
-CIRIcyFlowReader::~CIRIcyFlowReader()
-	{
-	Cancel();
-	while(!iSinkQ.IsEmpty())
-		{
-		//Deleting all the entries in sink buffers queue
-		iTempBufferHolder = iSinkQ.First();
-		iSinkQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	while(!iSourceQ.IsEmpty())
-		{
-		//deleting all the entries in source buffers queue
-		iTempBufferHolder = iSourceQ.First();
-		iSourceQ.Remove(*iTempBufferHolder);
-		delete iTempBufferHolder;
-		}
-	delete[] iSongBuffer;
-	delete iSocketBuffer;
-	delete iTempSongBuffer;
-	delete iTempMetaBuffer;
-    delete iMetaData;
-	if(iNetworkControllerHandle)
-		{
-		iNetworkControllerHandle->Close();
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRIcyFlowReader::ConstructL" );
-    iAudioDataOffset = iChannelInfo.iAudioDataOffset;
-    TInt f_off = _FOFF( CIRNetworkBuffer, iLink ); //for the buffer queue which is maintained
-    iSourceQ.SetOffset( f_off ); 	// It is Queue of buffer given to socket to fill
-    iSinkQ.SetOffset( f_off );  // It is Queue of buffer given to media engine
-    InitializeBuffersL();
-    iMetaData = CIRMetaData::NewL();
-    CActiveScheduler::Add( this );
-    iNetworkControllerHandle = CIRNetworkController::OpenL();
-    IRLOG_DEBUG( "CIRIcyFlowReader::ConstructL - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::HandleReceivedDataL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::HandleReceivedDataL( const TDesC8& aData )
-    {
-    switch ( iParsingState )
-        {
-        case EIRReadingAudioData:
-            {
-            if ( iAudioDataOffset + aData.Length() > iChannelInfo.iMetaInterval )
-                {
-                // Part of this data contains meta data information already.
-                TInt audioDataAmount = iChannelInfo.iMetaInterval - iAudioDataOffset;
-                // Only the audio part of the data is added to the song buffer.
-                HandleReceivedAudioData( aData.Left( audioDataAmount ) );
-                iParsingState = EIRReadingMetaDataLength;
-                iAudioDataOffset = 0; // Resets the audio data offset, will start increment again after meta data is handled.
-                HandleReceivedDataL( aData.Mid( audioDataAmount ) ); // Recursive call to handle meta data mixed in with this audio data block.
-                }
-            else // All of it is data is audio data.
-                {
-                HandleReceivedAudioData( aData );
-                }
-            break;
-            }
-        case EIRReadingMetaDataLength:
-            {
-            // ICY protocol specifies that meta data length is the first byte of the data multiplied by 16.
-            iMetaDataLength = aData[0] * KSixteen;
-
-            delete iTempMetaBuffer;
-            iTempMetaBuffer = NULL;
-
-            if ( iMetaDataLength > 0 ) // Meta data is provided, so we have to parse it.
-                {
-                iTempMetaBuffer = HBufC8::NewL( iMetaDataLength );
-                iParsingState = EIRReadingMetaData;
-                }
-            else // No meta data available, so resume reading audio data.
-                {
-                iParsingState = EIRReadingAudioData;
-                }
-
-            if ( aData.Length() > 1 ) // Just to check that the data doesn't only contain the length byte.
-                {
-                HandleReceivedDataL( aData.Mid( 1 ) ); // Strips off the length byte. Recursive call as data can also contain audio data.
-                }
-
-            break;
-            }
-        case EIRReadingMetaData:
-            {
-            if ( iTempMetaBuffer->Length() + aData.Length() > iMetaDataLength )
-                {
-                // All of the meta data block is now received, and part of it is continuation to the audio data.
-                TInt metaDataAmount = iMetaDataLength - iTempMetaBuffer->Length();
-                HandleReceivedMetaData( aData.Left( metaDataAmount ) );
-                ExtractMetadataL(); // Extracts the meta data from the temporary meta data buffer.
-                iParsingState = EIRReadingAudioData;
-                HandleReceivedDataL( aData.Mid( metaDataAmount ) ); // Strips off the meta data from the descriptor.
-                }
-            else // All of it is meta data.
-                {
-                HandleReceivedMetaData( aData );
-                }
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::HandleReceivedAudioData
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::HandleReceivedAudioData( const TDesC8& aData )
-    {
-    // Check to see if we've got enough audio data to fill a buffer.
-    if ( iTempSongBuffer->Length() + aData.Length() >= KMaxBufferChunkSize )
-        {
-		// Data contains more audio data than the buffer can handle.
-		TInt amountToAdd = KMaxBufferChunkSize - iTempSongBuffer->Length();
-
-		// Enough audio data to fill the buffer is added.
-		iTempSongBuffer->Des().Append( aData.Left( amountToAdd ) );
-
-		AddToSinkQueue( *iTempSongBuffer );
-		
-		//while loop is written for only if left over amount in aData is 
-		//greater then 1024, then it should be again added into SinkQueue
-		while(1)
-			{
-			iTempSongBuffer->Des().Zero();
-	 		//calculates the length of the leftover amount to be added
-			TInt length = aData.Length() - amountToAdd;
-
-			if(length <= 0)
-				{
-				break;	
-				}
-			else if(length >= KMaxBufferChunkSize) //if the left over amount is >= 1024 then add to SinkQueue
-				{
-				iTempSongBuffer->Des().Append( aData.Mid( amountToAdd,KMaxBufferChunkSize ) );
-		 		// updates the amountToAdd value by 1024
-				amountToAdd += KMaxBufferChunkSize;
-
-				AddToSinkQueue( *iTempSongBuffer );
-				}
-			else //if the left over amount is < 1024 then append to tempSongBuffer & break
-				{
-				// Then the overflowing audio data part is added to the new clean buffer.
-				iTempSongBuffer->Des().Append( aData.Mid( amountToAdd ) );
-				break;	
-				}
-			}
-        }
-    else // There is enough room in the temporary audio buffer to hold all of the data.
-        {
-        iTempSongBuffer->Des().Append( aData );
-        }
-
-    iAudioDataOffset += aData.Length();
-
-
-
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::HandleReceivedMetaData
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::HandleReceivedMetaData( const TDesC8& aData )
-    {
-    iTempMetaBuffer->Des().Append( aData );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::RunL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::RunL()
-    {
-     // Active object request complete handler
-    switch ( iStatus.Int() )
-        {
-        case KErrNone:
-            {
-			// Byte Counter Impl
-			iNetworkControllerHandle->DataTransferTracker().RawDataTransferredL( 0,
-					 iSocketBufferPtr.Size(), MIRDataTransferTracker::EIRTransferCategoryAudio);
-
-            HandleReceivedDataL( *iSocketBuffer );
-
-            if ( !iSourceQ.IsEmpty() )
-            	{
-            	//issue a read on empty buffer
-            	IssueRead();
-            	}
-            else
-            	{
-            	if( iReBuffering )
-            		{
-            		//	if rebuffering call continue using sink buffer
-            		FillRemainingBuffers();
-            		}
-            	if( iInitialBuffering )
-            		{
-            		//  if first time intimate media client to fill the buffer
-            		iDataObserver.AudioDataEvent( MIRStationDataObserver::EBufferFilled, KErrNone );
-            		iInitialBuffering = EFalse;
-            		}
-            	}
-
-		 	break;
-			}
-        case KErrDisconnected:
-        	{
-        	IRLOG_ERROR( "CIRIcyFlowReader::RunL - KErrDisconnected");
-        	iOwner.ConnectionError( KIRStreamSourceDisconnected );
-        	}
-            break;
-        case KErrEof:
-        	{
-        	IRLOG_INFO( "CIRIcyFlowReader::RunL - KErrEof" );
-        	iOwner.ConnectionError( KIRStreamSourceNoResponse );
-        	}
-        	break;
-        default:
-        	{
-        	IRLOG_ERROR2( "CIRIcyFlowReader::RunL - Error (%d)", iStatus.Int() );
-            iOwner.ConnectionError( KIRStreamSourceReadError );
-        	}
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::DoCancel()
-    {
-    iSocket.CancelRead();
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::IssueRead
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::IssueRead()
-    {
-	if( !IsActive() )
-		{
-	    iSocketBufferPtr.Zero();
-	    iSocket.Read( iSocketBufferPtr, iStatus );
-	    SetActive();
-		}
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::Start
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::Start()
-    {
-    IRLOG_INFO( "CIRIcyFlowReader::Start" );
-    // Initiate a new read from socket into iBuffer
-    iInitialBuffering = ETrue;
-    iBufferCounter = 0;
-    iPublishStationInfo = ETrue;
-	IssueRead();
-	IRLOG_DEBUG( "CIRIcyFlowReader::Start - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::InitializeBuffersL
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::InitializeBuffersL()
-	{
-	IRLOG_DEBUG( "CIRIcyFlowReader::InitializeBuffersL" );
-	// Allocate the buffer for audio data on heap
-	iSongBuffer = new TUint8[KMaxSongBufferSize];
-	User::LeaveIfNull( iSongBuffer );
-
-	IRLOG_INFO2( "CIRIcyFlowReader::InitializeBuffersL - Reserved %d bytes of memory", KMaxSongBufferSize );
-	TUint8* bufferaddress = iSongBuffer;
-	// since sink buffers are not created initially all buffers are filled with data and appended to sink buffer
-	// Create buffers ans append to source buffer queue
-	for(TInt buffercount = 0; buffercount < KNoInputBuffers; buffercount++ )
-		{
-		iTempBufferHolder = CIRNetworkBuffer::NewL(bufferaddress,
-			KMaxBufferChunkSize);
-		iSourceQ.AddLast(*iTempBufferHolder);
-		bufferaddress += KMaxBufferChunkSize;
-		}
-	// Create a buffer for the data read from socket
-	iSocketBuffer = HBufC8::NewL( KMaxSocketBufferSize );
-	iSocketBufferPtr.Set( iSocketBuffer->Des() );
-    iTempSongBuffer = HBufC8::NewL( KMaxSocketBufferSize );
-	IRLOG_DEBUG( "CIRIcyFlowReader::InitializeBuffersL - Exiting." );
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::FillBuffer
-// Fills the mediaengine buffer and rebuffers if necessary
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::FillBuffer(TDes8& aInputBuffer)
-	{
-	FillMediaEngineBuffer(aInputBuffer);
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::AddToSinkQueue
-// Adds the filled buffers to the sink Q so that it can be copied to media
-// engine buffer
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::AddToSinkQueue( const TDesC8& aData )
-	{
-	//call from runL
-	//removes the buffer from source queue and put in sink queue
-
-	if( !iSourceQ.IsEmpty() )
-		{
-		iTempBufferHolder = iSourceQ.First();
-		TPtr8 bufferPointer(iTempBufferHolder->Des() ,KMaxBufferChunkSize,
-			KMaxBufferChunkSize );
-		bufferPointer.Copy(aData);
-		iSourceQ.Remove(*iTempBufferHolder);
-		iSinkQ.AddLast(*iTempBufferHolder);
-		if( iInitialBuffering )
-			{
-			iBufferCounter += KBufferPercentageInc;
-			iDataObserver.AudioDataEvent( MIRStationDataObserver::EBufferPercentage, iBufferCounter );
-			}
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::FillMediaEngineBuffer
-// Fills the data into media engine's buffer
-// aInputBuffer Buffer into which data is to be filled
-// ---------------------------------------------------------------------------
-//
-
-void CIRIcyFlowReader::FillMediaEngineBuffer(const TDes8& aInputBuffer)
-	{
-
-	if( !iReBuffering )
-		{
-		//Determine no of bytes of data to be filled
-		TInt copyLength = aInputBuffer.MaxLength();
-		// Calculate the no of 1K chunks
-		iNoOfChunks = copyLength/KMaxBufferChunkSize;
-		// Initiailly remaining chunks to be filled is same as total no of
-		// chunks to be filled
-		iChunksRemaining = iNoOfChunks;
-		IRLOG_DEBUG3( "CIRIcyFlowReader::FillMediaEngineBuffer - Copying %d bytes/%d chunks", copyLength, iNoOfChunks );
-		// Store the starting address of buffer into which data is to be
-		// copied
-		iBufferFillPointer = (TUint8 *)aInputBuffer.Ptr();
-		// Start filling of the empty media engine buffers
-		FillRemainingBuffers();
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::FillRemainingBuffers
-// Fills the data into media engine's remaining buffers
-// called when the stream source runs out of buffers and
-// there is a pending request to media engine
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::FillRemainingBuffers()
-	{
-	TUint8* mediaBufferAddress = iBufferFillPointer;
-	TInt chunksFilled = iNoOfChunks - iChunksRemaining;
-	mediaBufferAddress += ( chunksFilled * KMaxBufferChunkSize );
-
-	TInt bufferNumber = iChunksRemaining;
-	while ( bufferNumber )
-		{
-		if ( !iSinkQ.IsEmpty() )
-			{
-			iTempBufferHolder = iSinkQ.First();
-			TPtr8 mediaBufferPointer(mediaBufferAddress,KMaxBufferChunkSize,
-				KMaxBufferChunkSize );
-			mediaBufferPointer.Copy( iTempBufferHolder->Des() ,
-				KMaxBufferChunkSize);
-			TPtr8 tempBufferPointer(iTempBufferHolder->Des(),
-				KMaxBufferChunkSize,KMaxBufferChunkSize );
-			tempBufferPointer.Delete(KMaxBufferChunkSize,
-				KMaxBufferChunkSize);
-			iSinkQ.Remove(*iTempBufferHolder);
-			iSourceQ.AddLast(*iTempBufferHolder);
-			iChunksRemaining--;
-			bufferNumber--;
-			iReBuffering = EFalse;
-			mediaBufferAddress += KMaxBufferChunkSize;
-			//issue  source rebuffering here if source is not empty
-			if( !iSourceQ.IsEmpty() )
-				{
-				IssueRead();
-				}
-			}
-		else
-			{
-			//rebuffer if sink buffer is empty
-			bufferNumber = 0;
-			iReBuffering = ETrue;
-			//issue  source rebuffering here if source is not empty
-			if( !iSourceQ.IsEmpty() )
-				{
-				IssueRead();
-				}
-			//break from for loop
-			}
-		}
-	iBufferCounter += (K100Percentage - KNoInputBuffers) / KIRInputBufferCount;
-    if ( iBufferCounter > K100Percentage )
-        {
-        iBufferCounter = K100Percentage;
-        }
-    iDataObserver.AudioDataEvent( MIRStationDataObserver::EBufferPercentage, iBufferCounter );
-	if( !iReBuffering )
-		{
-        iDataObserver.AudioDataEvent( MIRStationDataObserver::EOpenComplete, KErrNone );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::ExtractMetadataL
-// Extracts the meta data from the stream
-// ---------------------------------------------------------------------------
-//
-void CIRIcyFlowReader::ExtractMetadataL()
-	{
-    IRLOG_DEBUG( "CIRIcyFlowReader::ExtractMetaDataL" );
-
-    // Erases old meta data information.
-    iMetaData->SetArtistL( KNullDesC );
-    iMetaData->SetSongL( KNullDesC );
-    iMetaData->SetStreamUrlL( KNullDesC );
-
-    TPtrC8 ptr( *iTempMetaBuffer );
-
-    TInt streamTitleIndex = ptr.Find( KIRStreamTitle );
-    TInt streamUrlIndex = ptr.Find( KIRStreamUrl );
-
-    // Extracts the "StreamTitle" part of the meta data.
-    if ( streamTitleIndex >= 0 )
-        {
-        TPtrC8 streamTitlePtr( ptr.Mid( streamTitleIndex + KIRStreamTitle().Length() ) );
-        TInt streamTitleEndIndex = streamTitlePtr.Find( KIRMetaDataEndIdentifier );
-        if ( streamTitleEndIndex >= 0 )
-            {
-            streamTitlePtr.Set( streamTitlePtr.Left( streamTitleEndIndex ) );
-
-            TPtrC8 artistPtr( KNullDesC8 );
-            TPtrC8 songPtr( KNullDesC8 );
-
-            TInt songDelimiterIndex = streamTitlePtr.Find( KIRSongDelimiter );
-            if ( songDelimiterIndex >= 0 )
-                {
-                artistPtr.Set( streamTitlePtr.Left( songDelimiterIndex ) );
-                songPtr.Set( streamTitlePtr.Mid( songDelimiterIndex + 
-                					KIRSongDelimiter().Length() ) );
-                }
-            else
-                {
-                IRLOG_WARNING( "CIRIcyFlowReader::ExtractMetaDataL - Song delimiter was not found" );
-                artistPtr.Set( streamTitlePtr );
-                }
-
-            HBufC* artist = DecodeMetadataStringLC( artistPtr );
-            iMetaData->SetArtistL( *artist );
-            CleanupStack::PopAndDestroy( artist );
-
-            HBufC* song = DecodeMetadataStringLC( songPtr );
-            iMetaData->SetSongL( *song );
-            CleanupStack::PopAndDestroy( song );
-            }
-        else
-            {
-            IRLOG_WARNING( "CIRIcyFlowReader::ExtractMetaDataL - \"StreamTitle\" end was not found" );
-            }
-        }
-    else
-        {
-        IRLOG_WARNING( "CIRIcyFlowReader::ExtractMetaDataL - \"StreamTitle\" was not found" );
-        }
-
-    // Extracts the "StreamUrl" part of the meta data.
-    if ( streamUrlIndex >= 0 )
-        {
-        TPtrC8 streamUrlPtr( ptr.Mid( streamUrlIndex + KIRStreamUrl().Length() ) );
-
-        TInt streamUrlEndIndex = streamUrlPtr.Find( KIRMetaDataEndIdentifier );
-        if ( streamUrlEndIndex >= 0 )
-            {
-            streamUrlPtr.Set( streamUrlPtr.Left( streamUrlEndIndex ) );
-            HBufC* streamUrl = HBufC::NewLC( streamUrlPtr.Length() );
-            streamUrl->Des().Copy( streamUrlPtr );  // 8 bit to 16 bit descriptor conversion.
-            iMetaData->SetStreamUrlL( *streamUrl );
-            CleanupStack::PopAndDestroy( streamUrl );
-            }
-        else
-            {
-            IRLOG_WARNING( "CIRIcyFlowReader::ExtractMetaDataL - \"StreamUrl\" end was not found" );
-            }
-        }
-    else
-        {
-        IRLOG_WARNING( "CIRIcyFlowReader::ExtractMetaDataL - \"StreamUrl\" was not found" );
-        }
-
-    iDataObserver.MetadataReceived( *iMetaData );
-
-    IRLOG_INFO4( "CIRIcyFlowReader::ExtractMetaDataL - Exit (artist=%S, song=%S, streamUrl=%S)", &iMetaData->Artist(), &iMetaData->Song(), &iMetaData->StreamUrl() );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::DecodeMetadataStringLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CIRIcyFlowReader::DecodeMetadataStringLC( const TDesC8& aString ) const
-    {
-    IRLOG_DEBUG( "CIRIcyFlowReader::DecodeMetadataStringLC" );
-    HBufC* decodedString = NULL;
-    if ( IsUtf8Encoded( aString ) )
-        {
-        TRAPD( err, 
-              IRLOG_DEBUG( "CIRIcyFlowReader::DecodeMetadataStringLC - String is UTF-8 encoded" );
-              decodedString = CnvUtfConverter::ConvertToUnicodeFromUtf8L( aString );
-             )
-        if ( err != KErrNone )
-            {
-            IRLOG_ERROR2( "CIRIcyFlowReader::DecodeMetadataStringLC - UTF-8 conversion failed, err=%d", err );
-            decodedString = HBufC::NewL( aString.Length() ); 
-            decodedString->Des().Copy( aString ); // 8 bit to 16 bit descriptor conversion (ISO-8859-1).    
-            }
-        }
-    else
-        {
-        decodedString = HBufC::NewL( aString.Length() ); 
-        decodedString->Des().Copy( aString ); // 8 bit to 16 bit descriptor conversion (ISO-8859-1).    
-        }
-    CleanupStack::PushL( decodedString );
-    IRLOG_DEBUG2( "CIRIcyFlowReader::DecodeMetadataStringLC - Returning %S", decodedString );    
-    return decodedString;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRIcyFlowReader::IsUtf8Encoded
-// ---------------------------------------------------------------------------
-//
-TBool CIRIcyFlowReader::IsUtf8Encoded( const TDesC8& aData ) const
-    {
-    IRLOG_DEBUG( "CIRIcyFlowReader::IsUtf8Encoded" );    
-    TBool foundUtf8( EFalse );
-    
-    for ( TInt i(0); i + 1 < aData.Length() && !foundUtf8; i++ )
-        {
-        if ( ( aData[i] & KIRUtf8_2B1stByteMask ) == KIRUtf8_2B1stBytePrefix )
-            {
-            // Two-byte presentation: 110yyyyy 10zzzzzz
-            if ( ( aData[i + 1] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix )
-                {
-                foundUtf8 = ETrue;
-                }
-            }
-        else if ( ( aData[i] & KIRUtf8_3B1stByteMask ) == KIRUtf8_3B1stBytePrefix && 
-                  i + 2 < aData.Length() )
-            {
-            // Three-byte presentation: 1110xxxx 10yyyyyy 10zzzzzz
-            if ( ( aData[i + 1] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix && 
-                 ( aData[i + 2] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix )
-                {
-                foundUtf8 = ETrue;
-                }
-            }
-        else if ( ( aData[i] & KIRUtf8_4B1stByteMask ) == KIRUtf8_4B1stBytePrefix &&
-                i + KThree < aData.Length() )
-            {
-            // Four-byte presentation: 11110www 10xxxxxx 10yyyyyy 10zzzzzz
-            if ( ( aData[i + 1] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix && 
-                 ( aData[i + 2] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix && 
-                 ( aData[i + KThree] & KIRUtf8FollowingByteMask ) == KIRUtf8FollowingBytePrefix )
-                {
-                foundUtf8 = ETrue;
-                }
-            }
-        else
-            {
-            // NOP
-            }
-        }
-    IRLOG_DEBUG2( "CIRIcyFlowReader::IsUtf8Encoded - Returning %d", foundUtf8 );    
-    return foundUtf8;
-    }
-
--- a/internetradio2.0/streamsourcesrc/irnetworkbuffer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +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 "irdebug.h"
-#include "irnetworkbuffer.h"
-
-// ---------------------------------------------------------------------------
-// Two Phase NewL
-// returns an instance CIRNetworkBuffer
-// Owned by CIRNetworkBuffer
-// ---------------------------------------------------------------------------
-//
-CIRNetworkBuffer* CIRNetworkBuffer::NewL(TUint8* aAddress,TInt aSize)
-	{
-	IRLOG_DEBUG( "CIRNetworkBuffer::NewL" );
-	CIRNetworkBuffer* self = CIRNetworkBuffer::NewLC( aAddress, aSize );
-	CleanupStack::Pop( self );
-	IRLOG_DEBUG( "CIRNetworkBuffer::NewL - Exiting." );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Two Phase NewLC
-// Creates an instance CIRNetworkBuffer
-// Owned by CIRNetworkBuffer
-// ---------------------------------------------------------------------------
-//
-CIRNetworkBuffer* CIRNetworkBuffer::NewLC( TUint8* aAddress, TInt aSize )
-	{
-	IRLOG_DEBUG( "CIRNetworkBuffer::NewLC" );
-	CIRNetworkBuffer* self = new (ELeave) CIRNetworkBuffer;
-	CleanupStack::PushL( self );
-	self->ConstructL( aAddress, aSize );
-	IRLOG_DEBUG( "CIRNetworkBuffer::NewLC - Exiting." );
-	return self;
-	}
-	
-// ---------------------------------------------------------------------------
-// Function : CIRNetworkBuffer
-// default constructor
-// ---------------------------------------------------------------------------
-//
- CIRNetworkBuffer::CIRNetworkBuffer()
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// Two Phase ConstructL
-// Owned by CIRNetworkBuffer
-// ---------------------------------------------------------------------------
-//
-void CIRNetworkBuffer::ConstructL( TUint8* aAddress,TInt aSize )
-	{
-	IRLOG_DEBUG3( "CIRNetworkBuffer::ConstructL - address=0x%x, size=%d", aAddress, aSize );
-	//address of memory chunk
-	iDataAddress = aAddress;
-	//granularity of each chunk
-	iSize = aSize;
-	IRLOG_DEBUG( "CIRNetworkBuffer::ConstructL - Exiting." );
-	return;
-	}
-
-// ---------------------------------------------------------------------------
-// destructor function
-// Owned by CIRNetworkBuffer
-// ---------------------------------------------------------------------------
-//
-CIRNetworkBuffer::~CIRNetworkBuffer ()
-	{
-	IRLOG_DEBUG( "CIRNetworkBuffer::~CIRNetworkBuffer" );
-	//No implementation
-	}
-
--- a/internetradio2.0/streamsourcesrc/irsocketopener.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,294 +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:  Socket opener implementation
-*
-*/
-
-
-#include <e32property.h>
-#include <HttpDownloadMgrCommon.h>
-#include <in_sock.h>
-#include <uriutils.h>
-
-#include "irpubsubkeys.h"
-#include "irdebug.h"
-#include "irnetworkcontroller.h"
-#include "irsocketopener.h"
-#include "irstationconnection.h"
-#include "irstreamsourceerrors.h"
-#include "irstreamsourceliterals.h"
-
-const TInt KIRSOTimeOutValue = 10000000;
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::NewL
-// ---------------------------------------------------------------------------
-//
-CIRSocketOpener* CIRSocketOpener::NewL( RSocket& aSocket, CIRStationConnection& aOwner )
-	{
-	CIRSocketOpener* self = new ( ELeave ) CIRSocketOpener( aSocket, aOwner );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	return self;
-	}
-	
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::CIRSocketOpener
-// ---------------------------------------------------------------------------
-//
-CIRSocketOpener::CIRSocketOpener( RSocket& aSocket, CIRStationConnection& aOwner )
-	:CActive( EPriorityStandard ), iPort( KDefaultPort ), iSocket( aSocket), iOwner( aOwner )
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::ConstructL()
-	{
-	IRLOG_DEBUG( "CIRSocketOpener::ConstructL" );	
-	CActiveScheduler::Add( this );
-	iState = EIRIdle;
-	iSocketTimer = CIRSocketTimeOutTimer::NewL( CActive::EPriorityHigh,*this );
-
-	CIRNetworkController* networkControllerHandle = CIRNetworkController::OpenL();
-	CleanupClosePushL( *networkControllerHandle );
-
-    TProtocolName protocolName( KTcpProtocol );
-	TProtocolDesc protocolInfo;
-	
-	networkControllerHandle->GetIRSocketServer().FindProtocol( protocolName, protocolInfo );
-	
-	iResolver.Close();
-
-	User::LeaveIfError( iResolver.Open( networkControllerHandle->GetIRSocketServer(),
-	                                   protocolInfo.iAddrFamily, protocolInfo.iProtocol,
-	                                   networkControllerHandle->GetIRConnection() ) );
-
-	IRLOG_DEBUG( "CIRSocketOpener::ConstructL - Opened resolver." );
-	User::LeaveIfError( iSocket.Open( networkControllerHandle->GetIRSocketServer(),
-				 protocolInfo.iAddrFamily,protocolInfo.iSockType,protocolInfo.iProtocol,
-	                                  networkControllerHandle->GetIRConnection() ) );
-    IRLOG_DEBUG( "CIRSocketOpener::ConstructL - Opened socket." );
-	                                   
-    CleanupStack::PopAndDestroy();
-	IRLOG_DEBUG( "CIRSocketOpener::ConstructL - Exiting." );	    
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::CIRSocketOpener
-// ---------------------------------------------------------------------------
-//
-CIRSocketOpener::~CIRSocketOpener()
-	{
-	Cancel();
-//	iResolver.Close()	
-    iHost.Close();	
-	delete iSocketTimer;	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::ResolveAddress()
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::ResolveAddress()
-	{
-	IRLOG_INFO2( "CIRSocketOpener::ResolveAddress - %S", &iHost );
-    Cancel();
-	iState = EIRResolving;
-
-	iSocketTimer->Cancel();
-	iSocketTimer->After( KIRSOTimeOutValue );
-	
-	iResolver.GetByName( iHost, iResolvedHostInfo, iStatus );
-	SetActive();
-
-	IRLOG_DEBUG( "CIRSocketOpener::ResolveAddress - Exiting." );                
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::ConnectToAddress()
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::ConnectToAddress()
-	{
-	IRLOG_INFO( "CIRSocketOpener::ConnectToAddress" );
-    Cancel();
-	iState = EIRConnecting;
-
-	iSocketTimer->Cancel();
-	iSocketTimer->After( KIRSOTimeOutValue );
-	
-	iSocket.Connect( iSockAddr, iStatus );
-	SetActive();
-
-	IRLOG_DEBUG( "CIRSocketOpener::ConnectToAddress - Exiting." );    
-    }   
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::ExtractUriComponents
-// ---------------------------------------------------------------------------
-//
-TBool CIRSocketOpener::ExtractUriComponentsL(const TDesC& aUrl)
-	{
-	IRLOG_DEBUG( "CIRSocketOpener::ExtractUriComponentsL" );    
-
-    TBool retMe = EFalse;
-
-	if( !UriUtils::HasInvalidChars( aUrl ) )
-		{
-    	// Initialize the Uri Parser
-    	CUri8* uri = UriUtils::CreateUriL( aUrl );
-    	CleanupStack::PushL( uri );
-    	
-    	const TUriC8& accessorUri = uri->Uri(); 
-
-        iHost.Close();
-    
-        const TDesC8& host = accessorUri.Extract( EUriHost ); 
-        if ( host.Length() > 0 )
-            {
-            if ( iHost.Create( host.Length() ) == KErrNone )
-                {
-                iHost.Copy( host );
-            
-	            TLex8 uriLex( accessorUri.Extract( EUriPort ) );
-	            if ( uriLex.Val( iPort ) != KErrNone )
-	                {
-    	            iPort = KDefaultPort;
-	                }
-                retMe = ETrue;	            
-                }
-            }
-        CleanupStack::PopAndDestroy( uri );
-		}
-	IRLOG_DEBUG2( "CIRSocketOpener::ExtractUriComponentsL - Returning %d.", retMe );        
-	return retMe;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::RunL
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::RunL()
-	{
-	IRLOG_INFO3( "CIRSocketOpener::RunL - iStatus = %d, iState = %d", iStatus.Int(), iState );
-
-	if( iStatus == KErrNone )
-		{
-		switch( iState )
-			{
-			case EIRResolving:
-				iSocketTimer->Cancel();
-				iSockAddr = ( iResolvedHostInfo() ).iAddr;
-				iSockAddr.SetPort( iPort );
-				ConnectToAddress();
-				break;
-			case EIRConnecting:
-    			iSocketTimer->Cancel();
-				iState = EIRReady;
-				iOwner.ConnectionReady();
-				break;
-			default:
-                __ASSERT_DEBUG( EFalse, User::Invariant() );
-    			break;
-			}
-		}
-	else 
-		{
-		switch( iState )
-			{
-			case EIRResolving:
-				IRLOG_ERROR( "CIRConnectionHandler::RunL - EIRResolving" );
-				iSocketTimer->Cancel();
-				iOwner.ConnectionError( KIRStreamSourceLookupError );
-				break;
-			case EIRConnecting: 
-				IRLOG_ERROR( "CIRConnectionHandler::RunL - EConnecting"); 
-				iSocketTimer->Cancel();
-				iOwner.ConnectionError( KIRStreamSourceConnectionError );
-				break;
-			default:
-				IRLOG_FATAL2( "CIRConnectionHandler::RunL - Error in unexpected state (%d)", iStatus.Int() );
-                __ASSERT_DEBUG( EFalse, User::Invariant() );				
-				break;
-			}
-		}
-	IRLOG_DEBUG( "CIRSocketOpener::RunL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::Connect
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::ConnectL( const TDesC& aUrl )
-	{
-    IRLOG_INFO2( "CIRSocketOpener::ConnectL - %S", &aUrl );
-	if( ExtractUriComponentsL( aUrl ) )
-		{
-		ResolveAddress();		  	
-		}
-	else
-		{
-		IRLOG_ERROR( "CIRConnectionHandler::ConnectL - Invalid URL" );
-		iOwner.ConnectionError( KIRStreamSourceInvalidUrl );		  		
-		}  
-	IRLOG_DEBUG( "CIRSocketOpener::ConnectL - Exiting." );		
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::TimerExpired
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::TimerExpired()
-	{
-	switch( iState )
-		{
-		case EIRResolving: 
-			Cancel();
-			IRLOG_ERROR( "CIRSocketOpener::TimerExpired - Timed out while looking up server." );
-			iOwner.ConnectionError( KIRStreamSourceTimeOut );
-			break;
-		
-		case EIRConnecting: 
-		    Cancel();
-			IRLOG_ERROR( "CIRSocketOpener::TimerExpired - Connecting to server timed out." );   	 		    
-			iOwner.ConnectionError( KIRStreamSourceTimeOut );
-			break;
-		default:
-            __ASSERT_DEBUG( EFalse, User::Invariant() );				
-			break;
-		} 
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRSocketOpener::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CIRSocketOpener::DoCancel()
-	{
-	IRLOG_DEBUG( "CIRSocketOpener::DoCancel." );	
-	iResolver.Cancel();
-	iSocket.CancelAll();
-	
-	iSocketTimer->Cancel();
-	IRLOG_DEBUG( "CIRSocketOpener::DoCancel - Exiting." );		
-	}
-
-
-
--- a/internetradio2.0/streamsourcesrc/irsockettimeouttimer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +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 "irdebug.h"
-#include "irsockettimeouttimer.h"
-
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-CIRSocketTimeOutTimer::CIRSocketTimeOutTimer( const TInt aPriority, 
-	MIRSocketTimeoutNotifier& aNotify) : CTimer( aPriority ),
-	iNotify( aNotify )
-	{
-	// Definition not required
-	}
-
-// ---------------------------------------------------------------------------
-// Default destructor
-// ---------------------------------------------------------------------------
-//
-CIRSocketTimeOutTimer::~CIRSocketTimeOutTimer()
-	{
-	// Cancel any pending requests
-	Cancel();
-	}
-
-// ---------------------------------------------------------------------------
-// Creates the CTimer object
-// ---------------------------------------------------------------------------
-//
-void CIRSocketTimeOutTimer::ConstructL()
-	{
-	// Create the Timer
-	CTimer::ConstructL();
-	// Add the active object active scheduler 
-	CActiveScheduler::Add( this );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketTimeOutTimer::NewL
-// Creates an object of CIRSocketTimeOutTimer 
-// ---------------------------------------------------------------------------
-//
-CIRSocketTimeOutTimer* CIRSocketTimeOutTimer::NewL( const TInt aPriority,
-	MIRSocketTimeoutNotifier& aNotify )
-	{
-	CIRSocketTimeOutTimer* self = CIRSocketTimeOutTimer::NewLC( aPriority,
-		aNotify );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketTimeOutTimer::NewLC
-// Creates an object of CIRSocketTimeOutTimer 
-// ---------------------------------------------------------------------------
-//
-CIRSocketTimeOutTimer* CIRSocketTimeOutTimer::NewLC( const TInt aPriority, 
-	MIRSocketTimeoutNotifier& aNotify )
-	{
-	CIRSocketTimeOutTimer* self = new (ELeave) CIRSocketTimeOutTimer( 
-		aPriority, aNotify );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketTimeOutTimer::RunL
-// Called when the timer expires 
-// This is used to notify the observer that timer has expired
-// ---------------------------------------------------------------------------
-//    
-void CIRSocketTimeOutTimer::RunL()
-	{
-	IRLOG_INFO2( "CIRSocketTimeOutTimer::RunL - Timer expired (%d).", iStatus.Int() );	
-	if( iStatus == KErrNone )
-		{
-		iNotify.TimerExpired();
-		}
-	else
-		{
-		User::Leave(iStatus.Int());
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CIRSocketTimeOutTimer::RunError
-// Called if RunL leaves
-// ---------------------------------------------------------------------------
-//    
-TInt CIRSocketTimeOutTimer::RunError( TInt /*aError*/ )
-	{
-	// Ignore any timer expiry errors as they are not critical in this case
-	IRLOG_DEBUG( "CIRSocketTimeOutTimer::RunError" );
-	return KErrNone;
-	}
--- a/internetradio2.0/streamsourcesrc/irstationconnection.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +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:  Station connection implementation
-*
-*/
-
-
-#include "irstationconnection.h"
-#include "irdebug.h"
-#include "iricyflowinitiator.h"
-#include "iricyflowreader.h"
-#include "irsocketopener.h"
-#include "irstationdataobserver.h"
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::NewL
-// ---------------------------------------------------------------------------
-//
-CIRStationConnection* CIRStationConnection::NewL( 
-												MIRStationConnectionObserver& aConnectionObserver, 
-                                                  MIRStationDataObserver& aDataObserver )
-    {
-	CIRStationConnection* self = new ( ELeave ) CIRStationConnection( aConnectionObserver, 
-																	aDataObserver );
-	CleanupStack::PushL(self);
-	self->ConstructL();
-    CleanupStack::Pop(self);
-	return self;
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::~CIRStationConnection
-// ---------------------------------------------------------------------------
-//
-CIRStationConnection::~CIRStationConnection()
-    {
-    delete iSocketOpener;
-    
-    delete iIcyFlowInitiator;
-    
-    delete iIcyFlowReader;
-    
-    iSocket.Close();
-    iUri.Close();
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::CIRStationConnection
-// ---------------------------------------------------------------------------
-//
-CIRStationConnection::CIRStationConnection( MIRStationConnectionObserver& aConnectionObserver, 
-											MIRStationDataObserver& aDataObserver ) :
-    iConnectionObserver( aConnectionObserver ), iDataObserver( aDataObserver )
-    {
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::ConstructL()
-    {
-	IRLOG_DEBUG( "CIRStationConnection::ConstructL" );    
-    iConnectionType = EIRUndefined;
-    }
-    
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ConnectL
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::ConnectL( const TDesC& aUri )
-    {
-	IRLOG_DEBUG( "CIRStationConnection::ConnectL" );        
-    iUri.Close();
-    iUri.CreateL( aUri );
-    
-    iConnectionType = EIRCandidate;
-
-    delete iSocketOpener;	
-    iSocketOpener = NULL;
-    
-    iSocketOpener = CIRSocketOpener::NewL( iSocket, *this );
-    iSocketOpener->ConnectL( iUri );
-	IRLOG_DEBUG( "CIRStationConnection::ConnectL - Exiting" );            
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::Close
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::Close()
-    {
-	IRLOG_DEBUG( "CIRStationConnection::Close" );    
-    if ( iSocketOpener )
-        {
-        iSocketOpener->Cancel();
-        }
-
-    if ( iIcyFlowInitiator )
-        {
-        iIcyFlowInitiator->Cancel();
-        }
-    
-	iChannelInfo.iStationName.Zero();
-	iChannelInfo.iGenre.Zero();
-    iChannelInfo.iBitRate.Zero();
-    iChannelInfo.iContentType.Zero();
-    iChannelInfo.iSongTitle.Zero();
-    iChannelInfo.iArtistName.Zero();
-    iChannelInfo.iMetaInterval = 0;
-    iChannelInfo.iMetaDataTracker = 0;
-    iChannelInfo.iReadSize = 0;
-    iChannelInfo.iAudioDataOffset = 0;
-    
-    if ( iIcyFlowReader )
-        {
-        iIcyFlowReader->Cancel();
-        }
-        
-    iSocket.Close(); 
-	IRLOG_DEBUG( "CIRStationConnection::Close - Exiting." );           
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::SetConnectionType
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::SetConnectionType( TIRStationConnectionType aType )
-    {
-    iConnectionType = aType;
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ConnectionType
-// ---------------------------------------------------------------------------
-//
-CIRStationConnection::TIRStationConnectionType CIRStationConnection::ConnectionType() const
-    {
-    return iConnectionType;
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::Uri
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationConnection::Uri() const
-    {
-    return iUri;
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ContentType
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CIRStationConnection::ContentType() const
-	{
-	return iChannelInfo.iContentType;
-	}
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::FillBuffer
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::FillBuffer( TDes8& aInputBuffer )
-    {
-	__ASSERT_DEBUG( iIcyFlowReader, User::Invariant() );				    
-
-/*lint -save -e774 (Info -- Boolean within 'if' always evaluates to True )*/
-    if ( iIcyFlowReader )    
-        {
-        iIcyFlowReader->FillBuffer( aInputBuffer );
-        }
-/*lint -restore*/        
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ConnectionReady
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::ConnectionReady()
-    {
-	IRLOG_INFO2( "CIRStationConnection::ConnectionReady (%d).", this );
-    delete iIcyFlowInitiator;    
-    iIcyFlowInitiator = NULL;
-    TRAPD( err, iIcyFlowInitiator = CIRIcyFlowInitiator::NewL( iSocket, iUri, *this, 
-    															iChannelInfo ) )
-    if ( err == KErrNone )
-        {
-        iIcyFlowInitiator->RequestFlow();           
-        }
-    else
-        {
-        ConnectionError( err );
-        }
-	IRLOG_DEBUG( "CIRStationConnection::ConnectionReady - Exiting." );
-    }
-    
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::FlowReady
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::FlowReady()    
-    {
-	IRLOG_INFO2( "CIRStationConnection::FlowReady (conn=%d).", this );    
-    delete iIcyFlowReader;
-    iIcyFlowReader = NULL;
-    TRAPD( err, iIcyFlowReader = CIRIcyFlowReader::NewL( iSocket, *this, iDataObserver,
-    																 iChannelInfo ) )
-    if ( err == KErrNone )
-        {
-        iIcyFlowReader->Start();        
-        iConnectionObserver.ConnectionSuccessful( this );        
-        }
-    else
-        {
-        ConnectionError( err );
-        }
-	IRLOG_DEBUG( "CIRStationConnection::FlowReady - Exiting." );        
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStationConnection::ConnectionError
-// ---------------------------------------------------------------------------
-//
-void CIRStationConnection::ConnectionError( TInt aErrorCode )
-    {
-	IRLOG_ERROR3( "CIRStationConnection::ConnectionError - err=%d, conn=%d.", aErrorCode, this );            
-    Close();
-    iConnectionObserver.ConnectionError( this, aErrorCode );
-	IRLOG_DEBUG( "CIRStationConnection::ConnectionError - Exiting." ); 
-    }
--- a/internetradio2.0/streamsourcesrc/irstreamsource.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,425 +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:  Stream source main class implementation
-*
-*/
-
-
-#include <e32property.h>
-#include "irpubsubkeys.h"
-
-#include "irdebug.h"
-#include "irnetworkcontroller.h"
-#include "irstreamsource.h"
-#include "irstreamsourceerrors.h"
-#include "irstreamsourceobserver.h"
-#include "irstationconnection.h"
-
-
-// Constants
-const TInt KIRSCConnectionCleanupDelay = 10000000;
-const TInt KHundred = 100;
-
-// ---------------------------------------------------------------------------
-//  CIRStreamSource::ConnectToServerL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRStreamSource::ConnectToServerL( const TDesC& aUrl )
-    {
-    IRLOG_INFO2( "CIRStreamSource::ConnectToServerL - aUrl=%S", &aUrl );
-	#ifndef __WINS__
-	 					 	 
-    //Connecting for the first time
- /*****************************testing*****************/
-    	/*if ( iCurrentConnection )	
-	    {
-	    iCurrentConnection->Close();
-	    }
-	AsyncCleanupConnection( iCurrentConnection );
-    iCurrentConnection = NULL;*/
-/*****************************************************/
-   	
-   		#endif //__WINS__
-    if ( iNetworkControllerHandle->GetNetworkStatus() )
-        {
-        iReConnecting = EFalse;
-        DoConnectL( aUrl );    
-        }
-    else
-	    {
-		iStreamSourceObserver.ErrorConnecting( KIRStreamSourceConnectionError );
-	    }
-    IRLOG_DEBUG( "CIRStreamSource::ConnectToServerL - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-//  CIRStreamSource::ReconnectL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRStreamSource::ReconnectL( const TDesC& aUrl )
-    {
-    IRLOG_INFO( "CIRStreamSource::ReconnectL" );
-	if ( iNetworkControllerHandle->GetNetworkStatus() )
-	    {
-        iReConnecting = ETrue;
-        DoConnectL( aUrl );
-	    }
-	else
-		{
-		iStreamSourceObserver.ErrorConnecting( KIRStreamSourceConnectionError );
-		}
-    IRLOG_DEBUG( "CIRStreamSource::ReconnectL - Exiting." );
-	}
-	
-// ---------------------------------------------------------------------------
-//  CIRStreamSource::DoConnectL
-//  Creates the connection object which initiates the connection
-//  to the channel server
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::DoConnectL( const TDesC& aUrl )
-	{
-    IRLOG_INFO2( "CIRStreamSource::DoConnectL iCurrentConn=%d", iCurrentConnection );	
-
-    AsyncCleanupConnection( iNewConnection );
-    iNewConnection = NULL;        
-    StaticConnectionCleanupCallback( this ); // delete it (and them) now
-
-    CIRStationConnection* connection = CIRStationConnection::NewL( *this, *this );
-    CleanupStack::PushL( connection );
-    iConnections.AppendL( connection );
-    CleanupStack::Pop( connection );
-    iNewConnection = connection;
-    
-    iNewConnection->ConnectL( aUrl );
-    
-	IRLOG_INFO2( "CIRStreamSource::DoConnectL - Exiting, iNewConnection=%d.", iNewConnection );
-	}
-
-// ---------------------------------------------------------------------------
-//  CIRStreamSource::CIRStreamSource
-//  Default Constructor
-// ---------------------------------------------------------------------------
-//
-CIRStreamSource::CIRStreamSource( MIRStreamSourceObserver &aObserver ):
-	iStreamSourceObserver( aObserver )
-    {
-	// no implementation
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::~CIRStreamSource
-// Default Destructor
-// ---------------------------------------------------------------------------
-//
-CIRStreamSource::~CIRStreamSource()
-    {    
-    IRLOG_DEBUG( "CIRStreamSource::~CIRStreamSource" );
-	
-    // close the network controller handle	
-	if( iNetworkControllerHandle )
-		{
-		iNetworkControllerHandle->Close();	
-        }
-	delete iSocketTimer;
-    
-    delete iConnectionCleanupTimer;
-    
-    iConnections.ResetAndDestroy();
-    iConnections.Close();
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStreamSource::NewL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRStreamSource *CIRStreamSource::NewL( MIRStreamSourceObserver   &aObserver )
-    {
-    CIRStreamSource *self = new( ELeave ) CIRStreamSource( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::ConstructL()
-    {
-    // Open handle to network controller
-    iNetworkControllerHandle = CIRNetworkController::OpenL();
-    // create a timer for timeouts
-    iSocketTimer = CIRSocketTimeOutTimer::NewL( CActive::EPriorityHigh,	*this ); 
-    }
-
-// --------------------------------------------------------------------------- 
-//  CIRStreamSource::FilltheBuffer
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRStreamSource::FilltheBuffer( TDes8& aInputBuffer )
-    {
-    IRLOG_DEBUG( "CIRStreamSource::FilltheBuffer" );
-
-    if( iCurrentConnection )
-    	{
-   	 	iCurrentConnection->FillBuffer( aInputBuffer );
-    	}
-    else
-    	{
-    	iReConnecting = ETrue;
-    	iStreamSourceObserver.ErrorConnecting( KIRStreamSourceNoResponse );
-    	}
-    IRLOG_DEBUG( "CIRStreamSource::FilltheBuffer - Exiting." );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::TimerExpired
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::TimerExpired()
-	{
-	// CancelRequest gets called by UI.We could of course call it here, but you never
-	// know what it would cause in UI without thorough testing.
-	iStreamSourceObserver.ErrorConnecting( KIRStreamSourceTimeOut );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::TimerExpired
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::MetadataReceived( const CIRMetaData& aMetaData )
-    {
-    TRAP_IGNORE( iStreamSourceObserver.HandleMetaDataReceivedL( aMetaData ) )
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::AudioDataEvent
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::AudioDataEvent( const TInt aResponseCode,	TInt aValue )
-	{
-	IRLOG_DEBUG3( "CIRStreamSource::AudioDataEvent - aResponseCode=%d, aFeedValue=%d", aResponseCode, aValue );
-	switch( aResponseCode )
-		{
-		case EBufferFilled:
-			{
-			IRLOG_DEBUG( "CIRStreamSource::AudioDataEvent - EBufferFilled" );
-			// Indicate the observer
-			if( !iReConnecting )
-				{
-				iStreamSourceObserver.PlayNow();
-				}
-			else
-				{
-				iStreamSourceObserver.Play();	
-				}
-			}
-			break;
-		case EOpenComplete:
-			{
-			IRLOG_DEBUG( "CIRStreamSource::AudioDataEvent - EOpenComplete" );
-			// Indicate the observer that streamsource buffering complete	
-			iStreamSourceObserver.OpenComplete();
-			}
-			break;
-		case EBufferPercentage:
-			{
-			// Indicate buffering progress to observer
-			iStreamSourceObserver.UpdateProgress( aValue );
-			if ( aValue == KHundred )
-				{
-			    IRLOG_INFO( "CIRStreamSource::AudioDataEvent - 100 percent EBufferPercentage" );				
-				iSocketTimer->Cancel();
-				} 
-			}
-			break;
-		default:
-			{
-			__ASSERT_DEBUG( EFalse, User::Invariant() );
-			}
-			break;	
-		}
-	IRLOG_DEBUG( "CIRStreamSource::AudioDataEvent - Exiting." );	
-	}
-	
-// ---------------------------------------------------------------------------
-//  CIRStreamSource::ContentTypeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC8& CIRStreamSource::ContentTypeL()
-	{
-    __ASSERT_ALWAYS( iCurrentConnection, User::Leave( KErrNotReady ) );
-
-    return iCurrentConnection->ContentType();
-	}
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::CancelRequest
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRStreamSource::CancelRequest()
-	{
-	IRLOG_INFO3( "CIRStreamSource::CancelRequest - iNewConnection=%d, iCurrentConnection=%d", iNewConnection, iCurrentConnection );	
-	iSocketTimer->Cancel();
-		
-    if ( iNewConnection )		
-        {
-        iNewConnection->Close();
-        AsyncCleanupConnection( iNewConnection );
-        iNewConnection = NULL;
-        }
-    else
-        {
-		if ( iCurrentConnection )
-		    {
-		    iCurrentConnection->Close();		    
-		    }
-		AsyncCleanupConnection( iCurrentConnection );
-		iCurrentConnection = NULL;
-        }        
-	IRLOG_DEBUG( "CIRStreamSource::CancelRequest - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::ConnectionSuccessfulL
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::ConnectionSuccessful( CIRStationConnection* aConnection )
-	{
-	IRLOG_INFO3( "CIRStreamSource::ConnectionSuccessful aConnection=%d, iCurrentConn=%d", 
-	             aConnection, iCurrentConnection );	
-	__ASSERT_DEBUG( aConnection->ConnectionType() == CIRStationConnection::EIRCandidate,
-	                User::Invariant() );
-	                
-    // publish the url
-    RProperty::Set( KUidActiveInternetRadioApp, KIRPSChannelUrl, aConnection->Uri() );	
-
-	if( !iReConnecting )
-		{
-		iStreamSourceObserver.StopBuffering();
-	    }	
-	    
-	if ( iCurrentConnection )	
-	    {
-	    iCurrentConnection->Close();
-	    }
-	AsyncCleanupConnection( iCurrentConnection );
-    iCurrentConnection = NULL;
-
-    aConnection->SetConnectionType( CIRStationConnection::EIRPermanent );
-    iCurrentConnection = aConnection;
-    iNewConnection = NULL;
-
-    iStreamSourceObserver.ConnectionEstablished();
-    // Buffering starts now, so let's set the timer.
-	TTimeIntervalMicroSeconds32 timeOut( KBufferingTimeOut );
-	iSocketTimer->Cancel();
-	iSocketTimer->After( timeOut );
-
-	IRLOG_DEBUG( "CIRStreamSource::ConnectionSuccessful - Exiting." );	
-	}
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::ConnectionError
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::ConnectionError( CIRStationConnection* aConnection, TInt aErrorCode )
-	{
-	IRLOG_ERROR3( "CIRStreamSource::ConnectionError - aConnection=%d, aErrorCode=%d", aConnection, aErrorCode );
-    
-	if ( aConnection->ConnectionType() == CIRStationConnection::EIRCandidate )
-	    {
-        AsyncCleanupConnection( aConnection );
-        iNewConnection = NULL; // To Do: implement more sophisticated pending connection handling.	    
-		iReConnecting = ETrue;        
-	    }
-    else
-        {
-        if ( aErrorCode == KIRStreamSourceDisconnected )
-            {
-			CancelRequest();            
-            }
-        }	    
-	iStreamSourceObserver.ErrorConnecting( aErrorCode );
-	IRLOG_DEBUG( "CIRStreamSource::ConnectionError - Exiting." );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::AsyncCleanupConnection
-// ---------------------------------------------------------------------------
-//
-void CIRStreamSource::AsyncCleanupConnection( CIRStationConnection* aConnection )
-    {
-    IRLOG_DEBUG2( "CIRStreamSource::AsyncCleanupConnection - aConnection=%d.", aConnection );    
-    // let's not double-add any connections.
-    if ( aConnection )
-        {
-        IRLOG_INFO2( "CIRStreamSource::AsyncCleanupConnection - Scheduled deletion of connection %d.", aConnection );            
-        delete iConnectionCleanupTimer;
-        iConnectionCleanupTimer = NULL;
-        TRAPD( err, iConnectionCleanupTimer = CPeriodic::NewL( CActive::EPriorityStandard ) )
-        if ( err == KErrNone )
-            {
-            iConnectionCleanupTimer->Start( KIRSCConnectionCleanupDelay, 0,
-            			 TCallBack( StaticConnectionCleanupCallback, this ) );
-            }
-        else
-            {
-            IRLOG_ERROR2( "CIRStreamSource::AsyncCleanupConnection - CPeriodic creation left with %d.", err );
-            // delete the existing dying connections.
-            StaticConnectionCleanupCallback( this );    
-            }
-        aConnection->SetConnectionType( CIRStationConnection::EIRDying );                    
-        }
-    IRLOG_DEBUG( "CIRStreamSource::AsyncCleanupConnection - Exiting." );                    
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStreamSource::StaticConnectionCleanupCallback
-// ---------------------------------------------------------------------------
-//
-TInt CIRStreamSource::StaticConnectionCleanupCallback( TAny* aSelfPtr )
-	{
-	CIRStreamSource* self = reinterpret_cast<CIRStreamSource*>( aSelfPtr );
-	if ( self )
-		{
-	IRRDEBUG2("CIRStreamSource::StaticConnectionCleanupCallback - Entering", KNullDesC );
-
-        IRLOG_DEBUG( "CIRStreamSource::StaticConnectionCleanupCallback." );
-		delete self->iConnectionCleanupTimer;
-		self->iConnectionCleanupTimer = NULL;
-		TInt it = self->iConnections.Count() - 1;
-		while ( it >= 0 )
-		    {
-		    if ( self->iConnections[it]->ConnectionType() == CIRStationConnection::EIRDying )
-		        {
-		 IRRDEBUG2("CIRStreamSource::StaticConnectionCleanupCallback - Entering1", KNullDesC );
-        IRLOG_INFO2( "CIRStreamSource::StaticConnectionCleanupCallback - Deleting connection %d.", 
-                self->iConnections[it] );		    		        
-        delete self->iConnections[it];
-        self->iConnections.Remove( it );
-		 IRRDEBUG2("CIRStreamSource::StaticConnectionCleanupCallback - Exiting1", KNullDesC );
-
-		        }
-		    it--;
-		    }
-	IRRDEBUG2("CIRStreamSource::StaticConnectionCleanupCallback - Exiting", KNullDesC );
-
-        IRLOG_DEBUG( "CIRStreamSource::StaticConnectionCleanupCallback - Exiting." );		    
-		}
-	return KErrNone;
-	}
-
--- a/internetradio2.0/uicontrolsinc/iradvertisinglistbox.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,405 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Listbox implementation supporting advertisement element. 
-*
-*/
-
-
-#ifndef IRADVERTISINGLISTBOX_H
-#define IRADVERTISINGLISTBOX_H
-
-#include <aknlists.h>
-#include <eikfrlb.h>
- 
-
-
-class CIRAdvertisingListBox;
-class CIRCategoryAdvertisingListBox;
-
-//class CIRFilteredModel;
-/**
- * CIRAdvertisingListBoxData
- * 
- * Extends the functionality of CFormattedCellListBoxData by providing placeholder
- * for advertisement bitmaps.
- * 
- */
-class CIRAdvertisingListBoxData : public CFormattedCellListBoxData
-    {
-public:
-    /**
-     * Static constructor.
-     */
-    static CIRAdvertisingListBoxData* NewL();
-    
-    /**
-     * Sets the current advertisement icon. Deletes the previous if it exists.
-     * 
-     * @param aIcon The current advertisement icon to be displayed. Takes ownership.
-     */
-    void SetAdvertisementIcon( CGulIcon* aIcon );
-    
-    /**
-     * Gets the current advertisement icon.
-     * 
-     * @return Current advertisement icon. Ownership is not transferred.
-     */
-    CGulIcon* AdvertisementIcon();
-    
-	/*
-	* DrawEmptyListL
-	* Draws the text on the listbox
-	*/
-	void DrawEmptyListL(CWindowGc &aGc,TPtrC aText,TRect aParentRect) const;
-	/*
-	* DrawEmptyListDrawUpToTwoLinesL
-	* Draws the text on the listbox
-	*/
-	void DrawEmptyListDrawUpToTwoLinesL(CWindowGc &aGc,
-										  TPtrC aText,
-                                          TAknLayoutText &aLine1,
-                                          TAknLayoutText &aLine2,
-                                          TInt aLine1length,
-                                          TInt aLine2length,
-                                          const CFont* aFont,
-                                          TRgb aColor,
-                                          TDes& aBuffer,
-                                          TRect aParentRect) const;
-
-	/*
-	* DrawEmptyListDrawMoreThanTwoLinesL
-	* Draws the text on the listbox
-	*/
-	void DrawEmptyListDrawMoreThanTwoLinesL( CWindowGc &aGc,
-												  TRect &aParentRect,
-                                                  TPtrC aText,
-                                                  TRgb aColor,
-                                                  TDes& buffer ) const;
-	/**
-	* SetControlFlag
-	* sets the iControlFlag value
-	*/
-	void SetControlFlag(TBool aControlFlag);
-
-	/**
-	* GetControlFlag
-	* gets the iControlFlag value
-	*/
-	TBool GetControlFlag();
-private:
-    /**
-     * C++ default constructor
-     */
-    CIRAdvertisingListBoxData();
-    
-    /**
-     * Destructor.
-     */
-    ~CIRAdvertisingListBoxData();    
-    
-    /**
-     * The advertisement icon. 
-     * Owned.
-     */
-    CGulIcon* iIcon;
-    
-	/**
-	* iControlFlag
-	* holds whether controls have been created
-	*/
-    TBool iControlFlag;
-
-    };
-
-
-/**
- * CIRAdvertisingListBoxDrawer
- * 
- * Draws the advertisement icon owned by the CIRAdvertisingListBoxData.
- * 
- */
-class CIRAdvertisingListBoxDrawer : public CFormattedCellListBoxItemDrawer
-    {
-public:
-    
-    /**
-     * C++ constructor.
-     * 
-     * @param aTextListBoxModel The model od the associated listbox
-     * @param aFont The font to be used in drawing.
-     * @param aFormattedCellData The listbox data to be drawn.
-     */ 
-    CIRAdvertisingListBoxDrawer( MTextListBoxModel* aTextListBoxModel,
-                                 const CFont* aFont,
-                                 CIRAdvertisingListBoxData* aFormattedCellData,
-                                 CIRAdvertisingListBox* aListBox =NULL,
-                      			 CIRCategoryAdvertisingListBox* aCatListBox =NULL );
-
-private:
-    // From CTextListItemDrawer
-
-    /**
-     * Draws the advertisement and then lets CTextListItemDrawer to draw the 
-     * actual list items.
-     * 
-     * @see CTextListItemDrawer::DrawActualItem
-     */
-    void DrawActualItem( TInt aItemIndex, 
-                         const TRect& aActualItemRect, 
-                         TBool aItemIsCurrent, 
-                         TBool aViewIsEmphasized, 
-                         TBool aViewIsDimmed,
-                         TBool aItemIsSelected ) const;
-private:                         
-                         
-    /*
-    * iListBox
-    * instance of CCustomListBox
-    */
-   CIRAdvertisingListBox* iListBox;
-   
-   /**
-    * iCatListBox
-    * instance of CIRCategoryCustomListBox
-    */
-   CIRCategoryAdvertisingListBox* iCatListBox;
-                     
-    };
-
-/**
- * CIRAdvertisingListBox
- * 
- * Listbox displaying a special advertisement item at the top of the list.
- * Provides accessor methods for getting and setting the advertisement icon, 
- * to expose neat interface towards callers.
- * 
- * Currently supports displaying of only one advertisement.
- */
-class CIRAdvertisingListBox : public CAknDoubleLargeStyleListBox
-    {
-public:
-    /**
-     * C++ default constructor.
-     */ 
-    CIRAdvertisingListBox();
-    
-    /**
-     * Destructor
-     */
-    ~CIRAdvertisingListBox();
-
-    /**
-     * Sets the format used in the super class to represent a list item.
-     * 
-     * @param aItemFormat The list item format
-     */
-    void SetListItemFormat( HBufC* aItemFormat);
-    
-    /**
-     * Sets the advertisement for the listbox.
-     * 
-     * If there is no advertisement element present in the listbox, 
-     * inserts it as a new element on top of the list. Otherwise, only updates
-     * the advertisement icon.
-     * 
-     * @param aIcon The advertisement icon. Ownership is transferred. 
-     */
-    void SetAdvertisementIconL( CGulIcon* aIcon,TBool aMainView = EFalse );
-    
-    /**
-     * Clears (deletes) the current advertisement icon. 
-     */
-    void ClearAdvertisementIcon();
-    
-    /**
-     * Gets the current advertisement icon.
-     * 
-     * @return The current advertisement icon. Ownership is not transferred.
-     */
-    CGulIcon* AdvertisementIcon();        
-     /*
-    * ConstructL()
-    * constructs the listbox
-    */
-	void ConstructL(const CCoeControl* aParent, 
-					TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel);
-       
-	/**
-	* SetLastPlayed()
-	* Sets the status of lastplayed i.e., whether lastplayed is present r not 
-	*/
-	void SetLastPlayed(TBool aLastPlayed);
-	/**
-	* GetLastPlayed
-	* returns the status of lastplayed i.e., whether lastplayed is present r not
-	*/
-	TBool GetLastPlayed() const;
-	/**
-	* GetFavouritesCount
-	* returns the number of stations present in the favourites preset.
-	*/
-	TInt  GetFavouritesCount() const;
-	/**
-	* GetActiveView
-	* returns whether the mainview is active r not.
-	*/
-	TBool GetActiveView() const;
-	/**
-	* GetFilteredFlag()
-	* returns  the filtered flag 
-	*/
-	TBool GetFilteredFlag() const;
-	/*
-	* Draw
-	*/
-	void Draw(const TRect& aRect) const ;
-
-	/*
-	* SetGC
-	* Sets the Graphic Context
-	*/
-	void SetGC(CWindowGc& aGc);
-	/*
-	* SetControlFlag
-	* Tests whether all controls are created
-	*/
-	void SetControlFlag(TBool aControlFlag);
-
-private:
-    // From CAknDoubleLargeStyleListBox
-
-    /**
-     * @see CAknDoubleLargeStyleListBox::CreateItemDrawerL
-     */
-    void CreateItemDrawerL();
-
-    /**
-     * The format of the list item.
-     * Owned. 
-     */
-    HBufC* iItemFormat;
-    /*
-    * iLastPlayed
-    * 
-    */
-	TBool iLastPlayed;
-    /**
-     * iNoMatchesTextResource
-     * Data for the resource string 
-     */
-	HBufC* iNoMatchesTextResource;
-	
-    /**
-     * iFindStationsTextResource
-     * Data for the resource string 
-     */
-	HBufC* iFindStationsTextResource;
-    /**
-     * iGc
-     * Data for the Graphics Context 
-     */
-	CWindowGc* iGc;
-    };
-
-//  Advertisement Listbox for Category view
-class CIRCategoryAdvertisingListBox : public CAknDoubleStyleListBox
-    {
-public:
-    /**
-     * C++ default constructor.
-     */ 
-    CIRCategoryAdvertisingListBox();
-    
-    /**
-     * Destructor
-     */
-    ~CIRCategoryAdvertisingListBox();
-
-    /**
-     * Sets the format used in the super class to represent a list item.
-     * 
-     * @param aItemFormat The list item format
-     */
-    void SetListItemFormat(  HBufC* aItemFormat );
-    
-    /**
-     * Sets the advertisement for the listbox.
-     * 
-     * If there is no advertisement element present in the listbox, 
-     * inserts it as a new element on top of the list. Otherwise, only updates
-     * the advertisement icon.
-     * 
-     * @param aIcon The advertisement icon. Ownership is transferred. 
-     */
-    void SetAdvertisementIconL( CGulIcon* aIcon );
-    
-    /**
-     * Clears (deletes) the current advertisement icon. 
-     */
-    void ClearAdvertisementIcon();
-    
-    /**
-     * Gets the current advertisement icon.
-     * 
-     * @return The current advertisement icon. Ownership is not transferred.
-     */
-    CGulIcon* AdvertisementIcon();        
-     /*
-    * ConstructL()
-    * constructs the listbox
-    */
-	void ConstructL(const CCoeControl* aParent, 
-					TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel);
-       
-	/*
-	* Draw
-	*/
-	void Draw(const TRect& aRect) const ;
-	/*
-	* SetGC
-	* Sets the Graphic Context
-	*/
-	void SetGC(CWindowGc& aGc);
-	/*
-	* SetControlFlag
-	* Tests whether all controls are created
-	*/
-	void SetControlFlag(TBool aControlFlag);
-
-private:
-    // From CAknDoubleStyleListBox
-
-    /**
-     * @see CAknDoubleStyleListBox::CreateItemDrawerL
-     */
-    void CreateItemDrawerL();
-
-    /**
-     * The format of the list item.
-     * Owned. 
-     */
-    HBufC* iItemFormat;
-    /**
-     * iTextResource
-     * Data for the resource string 
-     */
-	HBufC* iTextResource;
-    /**
-     * iGc
-     * Data for the Graphics Context 
-     */
-	CWindowGc* iGc;
-
-    };
-#endif /*IRADVERTISINGLISTBOX_H*/
--- a/internetradio2.0/uicontrolsinc/iriconloader.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +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 IRICONLOADER_H
-#define IRICONLOADER_H
-
-#include <e32base.h>
-
-class CFbsBitmap;
-class CGulIcon;
-
-/**
- *  This class Creates CIconFileProvider.
- *
-*  Since the AknIconUtils cannot access the private directory of application,
-*  mix-in class MAknIconFileProvider is implemented to provide handle of the 
-*  icon files (ScalableScreenDrawingIcons.mbm in this case) to AknIconUtils.
- *  Creates an icon.All the view will use this API to create the icons for the view.
- *  
- * @code
- * 
- * The icon is created by loading the image bitmap identified by aBitmapId 
- * and the mask identified by aMaskId.
- * AknIconUtils::CreateIconL(bitmap , mask , *iFilename, aBitmapId , aMaskId);    .
- *
- * Creates an icon.
- * The icon is created by loading the image bitmap identified by aBitmapId.
- * It returns a pointer to the icon and transfers ownership.
- * AknIconUtils::CreateIconL(*iFilename, aBitmapId);
- * 
- * @endcode
- *
-*/
-class CIconFileProvider : public CBase
-{	
-public:
-	/**
-	* CIconFileProvider().
-	* C++ default constructor.
-	*/
-	IMPORT_C CIconFileProvider();
-
-	/**
-	* NewL.
-	* Two-phased constructor.
-	* Create a CIconFileProvider object, which will draw itself to 
-	* aRect.
-	* @param aFilename the path where the icon should be loaded.
-	* @return a pointer to the created instance of CIconFileProvider.
-	*/
-	IMPORT_C static CIconFileProvider* NewL(const TDesC& aFilename);
-
-	/**
-	* ConstructL
-	* 2nd phase constructor.
-	* Perform the second phase construction of a
-	* CIconFileProvider object.
-	* @param aFilename the path where the icon should be loaded.
-	*/
-	void ConstructL( const TDesC& aFilename);
-
-	/**
-	* ~CIconFileProvider
-	* Destructor.
-	*/
-	~CIconFileProvider();
-
-	/**
-	* CreateIconL().
-	* Creates the icons for the listbox.
-	* @param ID for the bitmap for which icon should be created.
-	* @param ID for the bitmap mask for which icon should be created.
-	*/
-	IMPORT_C CGulIcon* CreateIconL(TInt aBitmapId,TInt aMaskId) const;
-
-	/**
-	* CreateIconL().
-	* Creates the icons for the listbox.
-	* @param ID for the bitmap for which icon should be created.
-	*/
-	IMPORT_C CFbsBitmap* CreateIconL(TInt aBitmapId) const;
-private:
-	// Filename where the icon should be created.
-    HBufC* iFilename;
-};
-
-#endif//IRICONLOADER_H
\ No newline at end of file
--- a/internetradio2.0/uicontrolsinc/irimageconverter.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Image converter
-*
-*/
-
-
-#ifndef CCIRIMAGECONVERTER_H
-#define CCIRIMAGECONVERTER_H
-
-#include <e32base.h>
-
-class CFbsBitmap;
-class MIRImageConverterObserver;
-
-/**
- * Image converter.
- * 
- * This class is used to convert raw image data to more Symbian-friendly CFbsBitmap format, also
- * providing scaling support at the same time.
- * 
- * Supported image types include, but are not limited to, BMP, GIF, JPEG, TIFF, PNG and SVG-T.
- * 
- * Full animation support is available for GIF and SVG-T image types.
- */
-NONSHARABLE_CLASS( CIRImageConverter ) : public CBase
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     * 
-     * By default, enables animations and maintains aspect ratio for all conversions.
-     * 
-     * @return  The created object. Ownership is transferred to the caller.
-     */
-    static CIRImageConverter* NewL();
-
-    /**
-     * Destructor.
-     * 
-     * Cancels any conversions currently in progress without notifying the observer.
-     */
-    ~CIRImageConverter();
-
-    /**
-     * Sets the raw image data to be converted.
-     * 
-     * Does not make a copy of the data supplied, so care must be taken to ensure its
-     * existence until image conversion is completed.
-     */
-    void SetDataL( const TDesC8& aData );
-    
-    /**
-     * Sets the image conversion observer.
-     * 
-     * If set, the observer is notified of all pertinent conversion events.
-     * 
-     * @param   aObserver           Observer to set.
-     */
-    void SetObserver( MIRImageConverterObserver* aObserver );
-    
-    /**
-     * Enables or disables animations.
-     * 
-     * Must be used before starting the conversion. Trying to toggle the animation
-     * state while the conversion is in progress will result in a panic in debug builds.
-     * 
-     * @param   aEnable             Flag to enable or disable animations. 
-     */
-    void EnableAnimations( TBool aEnable );
-
-    /**
-     * Return a flag indicating whether the current raw image data is animated.
-     * 
-     * @return  Flag indicating whether the current raw image data is animated.
-     */
-    TBool IsAnimated() const;
-    
-    /**
-     * Enables or disables maintaining the aspect ratio when scaling.
-     * 
-     * Must be used before starting the conversion. Trying to toggle the animation
-     * state while the conversion is in progress will result in a panic in debug builds.
-     *
-     * @param   aMaintain           Flag to enable or disable maintaining the aspect ratio. 
-     */
-    void MaintainAspectRatio( TBool aMaintain );
-    
-    /**
-     * Starts the image conversion.
-     * 
-     * Must be called after SetDataL has been successfully called to initiate the
-     * actual conversion. Trying to start a conversion when one is already in progress
-     * will cause a leave, so calling Stop beforehand is advisable.
-     * 
-     * @param   aTarget             Image target size in pixels.
-     * @param   aId                 Identifier used to notify the observer with. 
-     */
-    void StartL( const TSize& aTarget, TInt aId = KErrUnknown );
-
-    /**
-     * Stops the conversion.
-     * 
-     * Does nothing if no conversions are currently in progress. Notifies the observer
-     * with KErrCancel if a conversion was cancelled.
-     */
-    void Stop();
-
-    /**
-     * Returns the converted bitmap.
-     * 
-     * Returns a NULL pointer when a conversion has not yet completed successfully.
-     * 
-     * @return  The converted bitmap. Ownership is not transferred to the caller.
-     */
-    const CFbsBitmap* Bitmap() const;
-    
-    /**
-     * Returns the converted mask.
-     * 
-     * Returns a NULL pointer when a conversion has not yet completed successfully.
-     * 
-     * @return  The converted mask. Ownership is not transferred to the caller.
-     */
-    const CFbsBitmap* Mask() const;
-    
-    /**
-     * Transfers ownership of the converted bitmap and mask to the caller.
-     * 
-     * NULL pointers are returned if a conversion has not yet completed successfully.
-     * 
-     * Any calls to either Bitmap or Mask methods after this will return a NULL pointer
-     * until another conversion has been completed successfully.
-     * 
-     * @param   aBitmap             On return, contains the converted bitmap.
-     *                              Ownership is tranferred to the caller.
-     * @param   aBitmap             On return, contains the converted mask.
-     *                              Ownership is tranferred to the caller.
-     */
-    void TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-    
-private:
-
-    /**
-     * Constructor.
-     */
-    CIRImageConverter();
-    
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-private:
-
-    /**
-     * Image converter private data.
-     * Owned.
-     */
-    struct TIRImageConverterPrivateData;
-    TIRImageConverterPrivateData* iData;
-    
-    };
-
-#endif // CCIRIMAGECONVERTER_H
--- a/internetradio2.0/uicontrolsinc/irimageconverterimpl.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,416 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Internal image converter implementation
-*
-*/
-
-
-#ifndef C_IRIMAGECONVERTERIMPL_H
-#define C_IRIMAGECONVERTERIMPL_H
-
-#include <f32file.h>
-#include <svgrequestobserver.h>
-
-class CBitmapScaler;
-class CFbsBitmap;
-class CGulIcon;
-class CImageDecoder;
-class CSvgEngineInterfaceImpl;
-class MIRImageConverterObserver;
-
-/**
- * Internal image converter implementation.
- * 
- * This class and some of its methods are document in more detail in irimageconverter.h,
- * as indicated by the @see tags.
- * 
- * @see CIRImageConverter
- */
-NONSHARABLE_CLASS( CIRImageConverterImpl ) : public CActive, public MSvgRequestObserver
-    {
-    
-public:
-
-    /**
-     * @see CIRImageConverter::NewL() 
-     */
-    static CIRImageConverterImpl* NewL();
-    
-    /**
-     * @see CIRImageConverter::~CIRImageConverter()
-     */
-    ~CIRImageConverterImpl();
-
-    /**
-     * @see CIRImageConverter::SetDataL( const TDesC8& aData )
-     */
-    void SetDataL( const TDesC8& aData );
-    
-    /**
-     * @see CIRImageConverter::SetObserver( MIRImageConverterObserver* aObserver )
-     */
-    void SetObserver( MIRImageConverterObserver* aObserver );
-    
-    /**
-     * @see CIRImageConverter::EnableAnimations( TBool aEnable )
-     */
-    void EnableAnimations( TBool aEnable );
-    
-    /**
-     * @see CIRImageConverter::IsAnimated() const
-     */
-    TBool IsAnimated() const;
-    
-    /**
-     * @see CIRImageConverter::MaintainAspectRatio( TBool aMaintain )
-     */
-    void MaintainAspectRatio( TBool aMaintain );
-    
-    /**
-     * @see CIRImageConverter::StartL( const TSize& aTarget, TInt aId )
-     */
-    void StartL( const TSize& aTarget, TInt aId );
-
-    /**
-     * @see CIRImageConverter::Stop()
-     */
-    void Stop();
-    
-    /**
-     * @see CIRImageConverter::Bitmap() const
-     */
-    const CFbsBitmap* Bitmap() const;
-
-    /**
-     * @see CIRImageConverter::Mask() const
-     */
-    const CFbsBitmap* Mask() const;
-
-    /**
-     * @see CIRImageConverter::TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-     */
-    void TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-    
-// from base class CActive
-    
-    void DoCancel();
-    void RunL();
-    TInt RunError( TInt aError );
-    
-// from base class MSvgRequestObserver
-    
-    void UpdateScreen();
-    TBool ScriptCall( const TDesC& aScript, CSvgElementImpl* aCallerElement );
-    TInt FetchImage( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
-    TInt FetchFont( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
-    void UpdatePresentation( const TInt32& aNoOfAnimation );
-
-private:
-
-    /**
-     * Constructor.
-     */
-    CIRImageConverterImpl();
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     * Performs cleanup on the converter object.
-     * 
-     * Thorough cleanup must not be used if the converter should remain usable without having
-     * to call SetDataL afterwards.
-     * 
-     * Should thorough cleanup be specified, everything, including the ICL image decoder and 
-     * the SVG-T engine are destroyed.
-     * 
-     * @param   aThorough           Flag to indicate if thorough cleanup should be used.
-     */
-    void Cleanup( TBool aThorough = EFalse );
-
-    /**
-     * Creates the proper handler for the raw image data.
-     * 
-     * The handler must be created whenever the raw image data is changed, even if
-     * the same type of handler would be used.
-     */
-    void CreateDataHandlerL();
-    
-    /**
-     * Creates new bitmaps of the given size.
-     * 
-     * Performs deletion on the supplied bitmaps before assigning the created bitmaps 
-     * on them, so calling this with bitmaps that already exists is acceptable.
-     * 
-     * Should creation of either of the new bitmaps fail, the supplied bitmaps are not modified.
-     * 
-     * @param   aSize               Size in pixels that the bitmaps are created to.
-     * @param   aBitmap             On return, contains the created bitmap. 
-     *                              Ownership is transferred to the caller.
-     * @param   aMask               On return, contains the created mask. 
-     *                              Ownership is transferred to the caller.
-     */ 
-    void CreateBitmapL( const TSize& aSize, CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-    
-    /**
-     * Creates exact copies of the supplied bitmaps.
-     * 
-     * Performs deletion on the supplied bitmaps before assigning the created bitmaps 
-     * on them, so calling this with bitmaps that already exists is acceptable.
-     * 
-     * Should creation of either of the new bitmaps fail, the supplied bitmaps are not modified.
-     *
-     * @param   aSourceBitmap       The bitmap to copy data from.
-     * @param   aSourceMask         The mask to copy data from.
-     * @param   aBitmap             On return, contains the copied bitmap. 
-     *                              Ownership is transferred to the caller.
-     * @param   aMask               On return, contains the copied mask. 
-     *                              Ownership is transferred to the caller.
-     */
-    void CreateBitmapCopyL( const CFbsBitmap& aSourceBitmap, const CFbsBitmap& aSourceMask, 
-    						CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-    
-    /**
-     * Starts the bitmap animation.
-     * 
-     * Requires that all the bitmap animation frames are prerendered successfully.
-     */
-    void StartBitmapAnimationL();
-    
-    /**
-     * Renders the current bitmap animation frame.
-     * 
-     * @param   aFirstTime          Flag to indicate if this is the very first frame of the animation
-     *                              to be rendered, ever.
-     */
-    void RenderBitmapAnimationFrameL( TBool aFirstTime = EFalse );
-    
-    /**
-     * Notifies the observer either synchronously or asynchronously.
-     * 
-     * @param   aError              Error code to notify the observer with.
-     * @param   aSynchronous        Flag to indicate if the notification should be synchronous or asynchronous.
-     */
-    void NotifyObserver( TInt aError, TBool aSynchronous = ETrue );
-    
-    /**
-     * Call back for notifying the observer.
-     * 
-     * @param   aSelf               The object that made the request.
-     * @return  KErrNone.
-     */
-    static TInt StaticNotifyObserverCallBack( TAny* aSelf );
-
-    /**
-     * Call back for advancing to the next frame when bitmap animations are used.
-     * 
-     * @param   aSelf               The object that made the request.
-     * @return  KErrNone.
-     */
-    static TInt StaticNextFrameCallBack( TAny* aSelf );
-    
-private:
-
-    /**
-     * Possible converter internal states.
-     */
-    enum TIRImageConverterState
-        {
-
-        /**
-         * Converter is idle; it cannot be used until SetDataL has been successfully called on it.
-         */
-        EIRStateIdle,
-        
-        /**
-         * Converter has been initialized and it is using the SVG-T engine for rendering the raw image data. 
-         */
-        EIRStateSvgEngineInitialized,
-        
-        /**
-         * Converter has been initialized and it is using ICL for rendering the raw image data. 
-         */
-        EIRStateBitmapDecoderInitialized,
-        
-        /**
-         * Converter is currently converting the raw image data with the SVG-T engine.
-         */
-        EIRStateConvertingSvg,
-        
-        /**
-         * Converter is currently converting the raw image data with ICL.
-         */
-        EIRStateConvertingBitmap,
-        
-        /**
-         * Converter is currently scaling the decoded bitmap.
-         */
-        EIRStateScalingBitmap,
-        
-        /**
-         * Converter is currently scaling the decoded bitmap's mask.
-         */
-        EIRStateScalingBitmapMask,
-        
-        /**
-         * Converter is currently waiting for the next bitmap animation frame to be rendered.
-         */
-        EIRStateBetweenBitmapAnimationFrames
-        
-        };
-    
-private:
-
-    /**
-     * ICL image decoder that is used to convert all bitmap raw image data formats.
-     * Owned.
-     */
-    CImageDecoder* iDecoder;
-    
-    /**
-     * Scaler that is used to scale the converter bitmap and its mask when using the ICL image decoder.
-     * Owned.
-     */
-    CBitmapScaler* iScaler;
-    
-    /**
-     * SVG-T engine that is used to convert SVG image data.
-     * Owned. 
-     */
-    CSvgEngineInterfaceImpl* iSvgEngine;
-
-    /**
-     * The actual resulting bitmap from the last successful conversion.
-     * 
-     * Note that the user of the class may take ownership of this object via the
-     * TransferBitmapOwnership method.
-     * 
-     * Owned.
-     */
-    CFbsBitmap* iProcessedBitmap;
-    
-    /**
-     * The actual resulting mask from the last successful conversion.
-     * 
-     * Note that the user of the class may take ownership of this object via the
-     * TransferBitmapOwnership method.
-     * 
-     * Owned.
-     */
-    CFbsBitmap* iProcessedMask;
-
-    /**
-     * Bitmap that is being currently worked on.
-     * Owned.
-     */
-    CFbsBitmap* iBitmap;
-    
-    /**
-     * Mask that is being currently worked on.
-     * Owned.
-     */
-    CFbsBitmap* iMask;
-
-    /**
-     * Bitmap of the last frame's state when using bitmap animations.
-     * Owned.
-     */
-    CFbsBitmap* iLastFrameBitmap;
-    
-    /**
-     * Mask of the last frame's state when using bitmap animations.
-     * Owned.
-     */
-    CFbsBitmap* iLastFrameMask;
-    
-    /**
-     * Original converted bitmap animation frames.
-     * 
-     * These are the, in most cases partial, bitmap animation frames that 
-     * have been converted via ICL. These are not of the required target size,
-     * but rather the size that has been defined for the frame in the bitmap
-     * animation data. The bitmaps in this array must not be scaled. 
-     * 
-     * Owned.
-     */
-    RPointerArray<CGulIcon> iFrames;
-    
-    /**
-     * Asynchronous call back to notify the observer.
-     * Owned. 
-     */
-    CAsyncCallBack* iNotifyObserverCallBack;
-    
-    /**
-     * Periodic timer used to display bitmap animations.
-     * Owned. 
-     */
-    CPeriodic* iFrameTimer;
-    
-    /**
-     * Observer that is notified of conversion events.
-     * Not owned.
-     */
-    MIRImageConverterObserver* iObserver;
-    
-    /**
-     * Flag used to indicate whether animations are enabled.
-     */
-    TBool iEnableAnimations;
-    
-    /**
-     * Flag to indicate whether aspect ratio should be maintained when scaling.
-     */
-    TBool iMaintainAspectRatio;
-    
-    /**
-     * Descriptor pointer to the raw image data supplied by the user.
-     */
-    TPtrC8 iData;
-    
-    /**
-     * Conversion identifier that is used when notifying the observer.
-     */
-    TInt iId;
-    
-    /**
-     * Target size of the converted bitmap in pixels.
-     */
-    TSize iTargetSize;
-
-    /**
-     * Flag to indicate whether the raw image data is animated.
-     */
-    TBool iIsAnimated;
-    
-    /**
-     * Current frame index when processing bitmap animations.
-     */
-    TInt iFrameIndex;
-    
-    /**
-     * Error code to notify the observer with.
-     */
-    TInt iError;
-    
-    /**
-     * Current internal image converter state.
-     */
-    TIRImageConverterState iState;
-    
-    };
-
-#endif // C_IRIMAGECONVERTERIMPL_H
--- a/internetradio2.0/uicontrolsinc/irimageconverterobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Observer interface for the image converter
-*
-*/
-
-
-#ifndef M_MIRIMAGECONVERTEROBSERVER_H
-#define M_MIRIMAGECONVERTEROBSERVER_H
-
-#include <e32def.h>
-
-/**
- * Observer interface for the image converter.
- */
-class MIRImageConverterObserver
-    {
-
-public:
-
-    /**
-     * Supported image conversion events.
-     */
-    enum TIRImageConversionEvent
-        {
-        
-        /**
-         * Frame has been converted successfully; this means that the converter will continue
-         * processing the data and sending out call backs as more frames are completed.
-         */
-        EIRFrameConversionCompleted,
-        
-        /**
-         * Image has been completely converter; no further call backs will occur.
-         */
-        EIRImageConversionCompleted
-        
-        };
-    
-public:
-
-    /**
-     * Call back method that is called when an image converion event occurs.
-     * 
-     * @param   aEvent          The event that occurred.
-     * @param   aId             Identifier for the conversion.
-     * @param   aError          One of the standard system error codes.
-     */
-    virtual void HandleImageConversionEventL( MIRImageConverterObserver::
-    										TIRImageConversionEvent aEvent,
-    										TInt aId, TInt aError ) = 0;
-    
-    };
-
-#endif // M_MIRIMAGECONVERTEROBSERVER_H
--- a/internetradio2.0/uicontrolsinc/irlayoututils.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Utilities for layouting purposes
-*
-*/
-
-
-#ifndef IRLAYOUTUTILS_H
-#define IRLAYOUTUTILS_H
-
-#include <e32cmn.h>
-
-/**
- *  Utilities for layouting purposes
- */
-class IRLayoutUtils
-    {
-public:
-
-    /**
-     * Returns the preferred size for the big logo stored for the preset
-     * 
-     * @return The size
-     */
-    static TSize PresetBigLogoSize();
-    
-    /**
-     * Returns the preferred size for the small logo stored for the preset
-     * 
-     * @return The size
-     */
-   // static TSize PresetSmallLogoSizeL()
-    
-    /**
-     * Returns the preferred size for the advertisement in SDS view.
-     * 
-     * @return The size
-     */
-    static TSize AdvertisementSizeL();
-    };
-
-
-#endif // IRLAYOUTUTILS_H
--- a/internetradio2.0/uicontrolsinc/irmarqueeclet.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Controlet to implement marquee functionality for visuals
-*
-*/
-
-
-#ifndef T_TIRMARQUEECLET_H
-#define T_TIRMARQUEECLET_H
-
-#include <alf/alfeventhandler.h>
-
-class CAlfControl;
-class CAlfViewportLayout;
-class CAlfTextVisual;
-/**
- * Small controlet to implement marquee effects to visuals.
- * 
- * Responsible for managing the supplied viewport layout to achieve a marquee effect.
- * Provides events to the control about scroll status changes.
- */
-class TIRMarqueeClet : public MAlfEventHandler
-    {
-
-public:
-    
-    /**
-     * Supported scroll styles.
-     */
-    enum TIRScrollStyle
-        {
-        /**
-         * Scroll is performed only once.
-         * When scrolling is completed, the viewport is set to its original position.
-         * This is the default scroll style if no other is explicitly set.
-         */
-        EIRScrollStyleOnce,
-        /**
-         * Scroll is continuous scroll.
-         */
-        EIRScrollStyleLoop
-        };
-
-    /**
-     * Supported scroll directions.
-     */
-    enum TIRScrollDirection
-        {
-        /**
-         * Scrolling is performed to left (western).
-         * This is the default scroll direction if no other is explicitly set.
-         */
-        EIRScrollDirectionLeft,
-        /**
-         * Scrolling is performed to right (arabic).
-         */
-        EIRScrollDirectionRight
-        };
-
-public:
-
-    /**
-     * Constructor.
-     */
-    TIRMarqueeClet();
-
-    /**
-     * Destructor.
-     */
-    ~TIRMarqueeClet();
-
-    /**
-     * Sets the required information for this marquee controlet.
-     * 
-     * @param   aViewport       Viewport layout to use.
-     * @param   aTextVisual     Text visual to use.
-     */
-    void Set( CAlfViewportLayout& aViewport, CAlfTextVisual& aTextVisual );
-
-    /**
-     * Sets scroll speed in pixels per second.
-     * 
-     * The actual scroll time is calculated dynamically by the controlet to achieve
-     * smooth motion.
-     * 
-     * @param   aScrollSpeed    Pixels per second to scroll.
-     */
-    void SetScrollSpeed( TInt aScrollSpeed );
-
-    /**
-     * Sets the scroll direction.
-     * 
-     * @param   aScrollDirection    Scroll direction to use.
-     */
-    void SetScrollDirection( TIRScrollDirection aScrollDirection );
-
-    /**
-     * Sets the scroll style.
-     * 
-     * @param   aScrollStyle    Scroll style to use.
-     */
-    void SetScrollStyle( TIRScrollStyle aScrollStyle );
-
-    /**
-     * Starts scrolling.
-     * 
-     * Notifications of scroll start and stop events are sent to the registered control.
-     * 
-     * @param   aDelay      Delay in milliseconds after which the scroll is started.
-     * @param   aSnooze     Snooze period in milliseconds after scroll is completed.
-     *                      The use of the snooze period is dependant on the scroll style.
-     *                      When the scroll style is <code>EVRScrollStyleOnce</code>, the snooze
-     *                      period indicates the amount of time after scrolling is completed before
-     *                      the control is notified of the scroll complete event.
-     */
-    void StartL( TInt aDelay = 0, TInt aSnooze = 0 );
-    
-// from base class MAlfEventHandler
-    
-    TBool OfferEventL( const TAlfEvent& aEvent );
-
-private:
-    
-    /**
-     * Supported scroll notification events.
-     * Notification about these events are sent to the registered control when they occur.
-     * Pointer to the viewport layout for which the event completed is passed as custom event data.
-     */
-    enum TIRScrollEvent
-        {
-        /**
-         * Notification that is sent when the scroll starts.
-         * This is sent after the delay period, if any, expires.
-         */
-        EIRCustomEventScrollStarted = 0x00002000,
-        /**
-         * Notification that is sent when the scroll has completed.
-         * This is sent after scrolling is completed and after the snooze
-         * period has passed.
-         */
-        EIRCustomEventScrollCompleted
-        };
-
-    /**
-     * Viewport layout to manage.
-     * Not owned.
-     */
-    CAlfViewportLayout* iViewport;
-
-    /**
-     * Text visual.
-     * Not owned.
-     */
-    CAlfTextVisual* iTextVisual;
-
-    /**
-     * Text visual scroll size.
-     */
-    TSize iScrollSize;
-
-    /**
-     * Scroll speed in pixels per second.
-     */
-    TInt iScrollSpeed;
-
-    /**
-     * Scroll direction to use.
-     */
-    TIRScrollDirection iScrollDirection;
-
-    /**
-     * Scroll style to use.
-     */
-    TIRScrollStyle iScrollStyle;
-
-    /**
-     * The snooze period.
-     */
-    TInt iSnoozeTime;
-    
-    /**
-     * Point of origin for the viewport.
-     */
-    TAlfRealPoint iOrigin;
-
-    /**
-     * The width of the original text.
-     */
-    TInt iOriginalTextWidth;
-
-    };
-
-#endif // T_TVRMARQUEECLET_H
--- a/internetradio2.0/uicontrolsinc/irstationinformationdata.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Station information data container
-*
-*/
-
-
-#ifndef C_CIRSTATIONINFORMATIONDATA_H
-#define C_CIRSTATIONINFORMATIONDATA_H
-
-#include <e32base.h>
-
-/** Possible directionalities of the fade. */
-enum TIRFadeStyle
-    {
-    EIRFadeUnknown,         /**< Unknown directionality. This means that the data fades in or out with no position changes. */
-    EIRFadeLeftToRight,     /**< Position changes from left to right. */
-    EIRFadeRightToLeft,     /**< Position changes from right to left. */
-    EIRFadeTopToBottom,     /**< Position changes from top to bottom. */
-    EIRFadeBottomToTop,     /**< Position changes from bottom to top. */
-    EIRFadeNoFade           /**< No fading is performed. */
-    };
-
-/** Possible display styles. */
-enum TIRDisplayStyle
-    {
-    EIRDisplaySingleLine,   /**< Single line display. */
-    EIRDisplayDoubleLine,   /**< Double line display. */
-    EIRDisplayTripleLine,   /**< Triple line display. */
-    EIRDisplayTuning,       /**< Tuning display. */
-    EIRDisplayNoDisplay     /**< No display used. */
-    };
-
-/**
- * Station information data container class.
- *
- * Holds all relevant "cacheable" station information data that is used to display the transitions between them
- * in the station information display.
- *
- * @since   S60 v3.2
- */
-class CIRStationInformationData : public CBase 
-    {
-
-public:
-
-    /**
-     * Static two-phased constructor.
-     *
-     * @since   S60 v3.2
-     * @param   aCoeEnv     Control environment to use.
-     * @return  The created object. Ownership is transferred.
-     */
-    static CIRStationInformationData* NewL( CCoeEnv& aCoeEnv );
-
-    /**
-     * Destructor.
-     *
-     * @since   S60 v3.2
-     */
-    ~CIRStationInformationData();
-
-    
-
-    /**
-     * Sets the name.
-     *
-     * @since   S60 v3.2
-     * @param   Name to set.
-     */
-    void SetNameL( const TDesC& aName );
-
-    /**
-     * Sets the RDS PS name.
-     *
-     * @since   S60 v3.2
-     * @param   RDS PS name to set.
-     */
-    void SetRdsPsNameL( const TDesC& aRdsPsName );
-
-    /**
-     * Sets the index.
-     *
-     * Formats the index to a descriptor.
-     *
-     * @since   S60 v3.2
-     * @param   aIndex  Index to set.
-     */
-    void SetIndexL( TInt aIndex );
-
-    
-
-    /**
-     * Sets the visual service enabled or disabled.
-     *
-     * @since   S60 v3.2
-     * @param   aServiceEnabled     <code>ETrue</code> if service is enabled, <code>EFalse</code> otherwise.
-     */
-    void SetServiceEnabled( TBool aServiceEnabled );
-
-    /**
-     * Sets the display style in use.
-     *
-     * @since   S60 v3.2
-     * @param   aDisplayStyle   Display style to use.
-     */
-    void SetDisplayStyle( TIRDisplayStyle aDisplayStyle );
-
-    /**
-     * Sets the fade directionality.
-     *
-     * @since   S60 v3.2
-     * @param   aFadeDirectionality     Directionality of the fade.
-     */
-    void SetFadeDirectionality( TIRFadeStyle aFadeDirectionality );
-
-    /**
-     * Returns the frequency as a descriptor.
-     *
-     * @since   S60 v3.2
-     * @return  Frequency as a descriptor.
-     */
-    const TDesC& Frequency() const;
-
-    /**
-     * Returns the name.
-     *
-     * @since   S60 v3.2
-     * @return  Name of the data.
-     */
-    const TDesC& Name() const;
-
-    /**
-     * Returns the RDS PS name.
-     *
-     * @since   S60 v3.2
-     * @return  RDS PS name of the data.
-     */
-    const TDesC& RdsPsName() const;
-
-    /**
-     * Returns the index as a descriptor.
-     *
-     * @since   S60 v3.2
-     * @return  Index as a descriptor.
-     */
-    const TDesC& Index() const;
-
-    /**
-     * Returns the location.
-     *
-     * @since   S60 v3.2
-     * @return  Location of the data.
-     */
-    const TDesC& Location() const;
-
-    /**
-     * Returns whether or not visual service is enabled.
-     *
-     * @since   S60 v3.2
-     * @return  <code>ETrue</code> if visual service is enabled, <code>EFalse</code> otherwise.
-     */
-    TBool ServiceEnabled() const;
-
-    /**
-     * Returns the display style.
-     *
-     * @since   S60 v3.2
-     * @return  Display style.
-     */
-    TIRDisplayStyle DisplayStyle() const;
-
-    /**
-     * Returns the fade directionality.
-     *
-     * @since   S60 v3.2
-     * @return  Fade directionality.
-     */
-    TIRFadeStyle FadeDirectionality() const;
-
-private:
-
-    /**
-     * Constructor.
-     *
-     * @since   S60 v3.2
-     * @param   aCoeEnv     Control environment to use.
-     */
-    CIRStationInformationData( CCoeEnv& aCoeEnv );
-
-    /**
-     * Second-phase constructor.
-     *
-     * @since   S60 v3.2
-     */
-    void ConstructL();
-
-private:
-
-    /**
-     * Frequency.
-     * Own.
-     */
-    RBuf iFrequency;
-
-    /**
-     * Name.
-     * Own.
-     */
-    RBuf iName;
-
-    /**
-     * RDS PS name.
-     * Own.
-     */
-    RBuf iRdsPsName;
-
-    /**
-     * Index.
-     * Own.
-     */
-    RBuf iIndex;
-
-    /**
-     * Location.
-     * Own.
-     */
-    RBuf iLocation;
-    
-    /**
-     * <code>ETrue</code> if visual service is enabled, <code>EFalse</code> otherwise.
-     */
-    TBool iServiceEnabled;
-
-    /**
-     * Display style.
-     */
-    TIRDisplayStyle iDisplayStyle;
-
-    /**
-     * Directionality of the fade.
-     */
-    TIRFadeStyle iFadeDirectionality;    
-
-    /**
-     * Control environment.
-     */
-
-
-    };
-
-#endif // C_CIRSTATIONINFORMATIONDATA_H
-
--- a/internetradio2.0/uicontrolsinc/irstationinformationdisplay.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Control that displays current station information
-*
-*/
-
-
-#ifndef C_CIRSTATIONINFORMATIONDISPLAY_H
-#define C_CIRSTATIONINFORMATIONDISPLAY_H
-
-#include <alf/alfcontrol.h>
-
-#include "irmarqueeclet.h"
-#include "irstationinformationdata.h"
-
-class CAlfLayout;
-class CAlfDeckLayout;
-class CAlfGridLayout;
-class CIRStationInformationData;
-
-/**
- * Control that displays current station information.
- * 
- * Responsible for handling fade effects and transitions for the station information.
- */
-class CIRStationInformationDisplay : public CAlfControl
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     * 
-     * The object's ownership is implicitly transferred to the supplied control group.
-     * 
-     * @param   aEnv                Alfred environment to use.
-     * @param   aControlGroupId     Control group into which this control is added.
-     * @param   aParentLayout       Parent layout to use.
-     *
-     * @return  The constructed object. Does not transfer ownership to the caller.
-     */
-    static CIRStationInformationDisplay* NewL( CAlfEnv& aEnv, TInt aControlGroupId,
-    											CAlfLayout* aParentLayout = NULL );
-
-    // <TUNING TEMP>
-    ~CIRStationInformationDisplay();
-   
-    // </TUNING TEMP>
-    
-    /**
-     * Sets the displayed data.
-     * 
-     * This causes an animation to take place that is determined by the supplied data's transition argument.
-     * 
-     * @param   aData   The data to set.
-     */
-    void SetDisplayedDataL( const CIRStationInformationData& aData );
-
-    /**
-     * Sets the RDS PS name.
-     * 
-     * Does not do anything if there is no data being displayed currently.
-     *
-     * @param   aRdsPsName      RDS PS name to set.
-     */
-    void RdsDataReceivedL( const TDesC& aRdsData );
-    
-    /**
-     * Called when orienattion of the display has changed.
-     * 
-     * @param   aRdsDataDisplay   RDS data display.
-     */
-    void SetDisplayOrientation( TBool aLandscape ); 
-    
-    /**
-     * Returns current fade style.
-     * 
-     * @return Fade style.
-     */
-    TIRFadeStyle FadeStyle(); 
- 
-// from base class CAlfControl
-
-    void VisualLayoutUpdated( CAlfVisual& aVisual );
-    TBool OfferEventL( const TAlfEvent& aEvent );
-    
-private:
-
-    /**
-     * Supported custom events.
-     */
-    enum TIRDisplayCustomEvents
-        {
-        EIRCustomEventDisplayFadeInCompleted,     /**< Event that is executed when a display has faded in. */
-        EIRCustomEventDisplayFadeOutCompleted,    /**< Event that is executed when a display has faded out. */
-        EIRCustomEventVisualFadeOutCompleted   /**< Event that is executed when a display has faded out. */
-        };
-    
-private:
-
-    /**
-     * Constructor.
-     */
-    CIRStationInformationDisplay( CAlfLayout& aParentLayout );
-
-    /**
-     * Second-phase constructor.
-     * 
-     * @param   aEnv                Alfred environment to use.
-     * @param   aControlGroupId     Control group into which this control is added.
-     * @param   aParentLayout       Parent layout to use.
-     */
-    void ConstructL( CAlfEnv& aEnv, TInt aControlGroupId,CAlfLayout* aParentLayout );
-
-    /**
-     * Creates a new display that is used to show the supplied data.
-     * 
-     * @param   aData       Station information data to display.
-     */
-    void CreateDisplayL( const CIRStationInformationData& aData );
-
-    /**
-     * Fades out the current display.
-     */
-    void FadeOutDisplay( const CIRStationInformationData& aData );
-
-    /**
-     * Fades in the current display.
-     */
-    void FadeInDisplay( const CIRStationInformationData& aData );
-    
-    /**
-     * Fades a single visual.
-     * 
-     * If the supplied visual is a text visual, its shadow opacity is also modified.
-     * 
-     * @param   aVisual     Visual to fade.
-     * @param   aOpacity    Target opacity.
-     */
-    void FadeVisual( CAlfVisual& aVisual, const TAlfTimedValue& aOpacity );
-
-    /**
-     * Fades all visuals contained within the supplied layout.
-     * 
-     * If the layout contains other layouts, also their child visuals will be modified.
-     * 
-     * @param   aLayout     Layout whose visuals to fade.
-     * @param   aOpacity    Target opacity.
-     */
-    void FadeLayout( CAlfLayout& aLayout, const TAlfTimedValue& aOpacity );
-
-    /**
-     * Starts to display RDS data.
-     */
-    void DisplayRdsDataL();
-private:
-    /**
-     * Parent anchor layout.
-     * Needed when creating own separate display for RDS data.
-     */
-    CAlfLayout& iParentAnchorLayout;
-
-    /**
-     * Base layout for the visuals.
-     * Not owned.
-     */
-    CAlfDeckLayout* iBaseLayout;
-
-    /**
-     * Layout that is currently being displayed.
-     * Contains all the visuals necessary to display any kind of station information data.
-     * Not owned.
-     */
-    CAlfGridLayout* iLayout;
-
-    /**
-     * Layout for the name and index number.
-     * Not owned.
-     */
-    CAlfGridLayout* iNameIndexLayout;
-
-    /**
-     * Layout for the RDS data.
-     * Not owned.
-     */
-    CAlfGridLayout* iRdsDataLayout;
-
-    /**
-     * Text visual for the station name.
-     * Not owned.
-     */
-    CAlfTextVisual* iName;
-
-    /**
-     * Text visual for the index number.
-     * Not owned.
-     */
-    CAlfTextVisual* iIndex;
-
-    /**
-     * Text visual for the RDS PS name.
-     * Not owned.
-     */
-    CAlfTextVisual* iRdsData;
-
-    /**
-     * Marquee controlet for the name.
-     */
-    TIRMarqueeClet iNameMarqueeClet;
-    
-    /**
-     * Marquee controlet for the PS name (and Radio Text).
-     */
-    TIRMarqueeClet iRdsDataMarqueeClet;
-    
-    
-    /**
-     * RDS data text.
-     * Owned.
-     */
-    RBuf iRdsDataText;
-
-    /**
-     * ETrue if orientation is landscape, otherwise EFalse.
-     */
-    TBool iLandscape;
-
-    /**
-     * Style of the logo fading.
-     */
-    TIRFadeStyle iFadeStyle;
-
-    TBool iLandScapSetFalg;
-    // </TUNING TEMP>
-    
-    };
-
-#endif // C_CIRSTATIONINFORMATIONDISPLAY_H
--- a/internetradio2.0/uicontrolsinc/irstationlogocontrol.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Control for single station logo
-*
-*/
-
-
-#ifndef C_CIRSTATIONLOGOCONTROL_H
-#define C_CIRSTATIONLOGOCONTROL_H
-
-#include <alf/alfcontrol.h>
-
-#include "irstationinformationdata.h"
-#include "irimageconverterobserver.h"
-
-class CAlfImageVisual;
-class CIRImageConverter;
-class CIRStationLogoData;
-class MIRLogoControlObserver;
-
-/**
- * Station Logo Control
- *
- * @since   S60 v3.2
- */
-class CIRStationLogoControl : public CAlfControl, 
-                              public MIRImageConverterObserver
-    {
-public:
-
-    /**
-     * Two-phased constructor.
-     * Adds the control to the control group and to layout hierarchy.
-     *
-     * @param aAlfEnv The Alfred environment.
-     * @param aControlGroupId The control group that this control is to be added to.
-     * @param aParentLayout The parent layout for the visuals.
-     */
-    static CIRStationLogoControl* NewL( CAlfEnv& aAlfEnv, TInt aControlGroupId, 
-    									CAlfLayout* aParentLayout = NULL );
-
-    /**
-     * Destructor.
-     */
-    ~CIRStationLogoControl();
-    
-    /**
-     * Prepares the logo graphics for specified ID.
-     * 
-     * @param aId The identifier for the logo.
-     */
-    void PrepareLogoL( TInt aId );
-    
-    /**
-     * Switches to specified logo.
-     * 
-     * @param aId   The identifier for the logo.
-     */
-    TBool SwitchToLogoL( TInt aId );
-    
-    /**
-     * Sets the raw data for all the logos.
-     * 
-     * @param aIdArray Identifiers to be used for the logos.
-     * @param aRawData The raw graphics data for each logo.
-     */
-    void SetLogosL( const RArray<TInt>& aIdArray, const CPtrC8Array& aRawData );
-    
-    /**
-     * Updates one logo.
-     * 
-     * @param   aId         The ID of the logo to be updated. 
-     *                      If such ID is not found, it is added.
-     * @param   aRawData    The raw data of the logo.
-     *                      If the data is a KNullDesC8, it is removed.
-     */
-    void UpdateLogoL( TInt aId, const TDesC8& aRawData );
-    
-    
-    /**
-     * Sets logo fade style.
-     * 
-     * @param   aFadeStyle  The style of the logo fading. 
-     */
-    void SetLogoFadeStyle( TIRFadeStyle aFadeStyle );
-    /**
-     * Sets the observer for this control.
-     * 
-     * @param   aObserver  The observer for this control. 
-     */
-    void SetLogoControlObserver( MIRLogoControlObserver& aObserver );
-
-    // from CAlfControl
-    void VisualLayoutUpdated( CAlfVisual& aVisual );
-
-
-    // from MVRImageConverterObserver
-    void HandleImageConversionEventL( MIRImageConverterObserver::TIRImageConversionEvent aEvent, 
-                                      TInt aId, 
-                                      TInt aError );
-     void FadeOutLogo(TInt aId);                               
-
-private: // Methods
-
-    /**
-     * The types of delayed showing of logo.
-     */
-    enum TIRLogoFadeDelayType
-        {
-        EIRLogoNoDelay,
-        EIRDelayedTextureImage,
-        EIRDelayedDefaultImage
-        };
-
-    /**
-     * Default constructor.
-     */
-    CIRStationLogoControl();
-
-    /**
-     * Second phase constructor.
-     *
-     * @param aAlfEnv The Alfred environmennt.
-     * @param aControlGroupId The control group ID for the controls.
-     * @param aParentLayout The parent layout for the visuals.
-     */
-    void ConstructL( CAlfEnv& aAlfEnv, TInt aControlGroupId, CAlfLayout* aParentLayout );
-
-    /**
-     * Provides the station logo data for specified id.
-     * 
-     * @param aId The identifier for the logo.
-     */
-    CIRStationLogoData* LogoDataForId( TInt aId );
-
-    /**
-     * Starts to convert the graphics for specified logo
-     * 
-     * @param aLogoData The logo data to be converted
-     */
-    void StartConversionL( CIRStationLogoData& aLogoData );
-
-    /**
-     * Fades the station logo in.
-     * 
-     * @param aVisual The logo to be faded in.
-     */
-    void FadeInStationLogoL( CAlfVisual& aVisual );
-    
-    /**
-     * Fades the current logo out. If logo is not the default logo, deletes it's data
-     * after the fading (ansynchronously).
-     * 
-     * @param aVisual The logo to be faded out.
-     */
-    void FadeOutCurrentLogo( CAlfVisual& aVisual );
-
-    /**
-     * Returns target point for logo fade out.
-     * 
-     * @param aVisual The visual to be faded out.
-     * @return Target point.
-     */
-    TAlfTimedPoint FadeOutTargetPoint( CAlfVisual& aVisual ) const;
-
-    /**
-     * Returns start point for logo fade in.
-     * 
-     * @param aVisual The visual to be faded in.
-     * @return Start point.
-     */
-    TAlfTimedPoint FadeInStartPoint( CAlfVisual& aVisual ) const;
-
-
-    /**
-     * Updates iLogodata Array.
-     */
-     void DestroyPreviousLogosL( const RArray<TInt>& aIdArray, const CPtrC8Array& aRawData );
-     /**
-     * Updates iLogodata Array.
-     */
-     void DefaultlogoHandlingL( const RArray<TInt>& aIdArray, const CPtrC8Array& aRawData );
-
-
-private: // Members
-
-    /**
-     * The image converter.
-     * Owned.
-     */
-    CIRImageConverter* iCurrentImageConverter;
-
-    /**
-     * The logo data for all stations.
-     * Owned.
-     */
-    RPointerArray<CIRStationLogoData> iLogoData;
-
-    /**
-     * The parent layout for the logos.
-     * Not owned.
-     */
-    CAlfDeckLayout* iDeck;
-
-    /**
-     * The size that is used for image conversions
-     */
-    TSize iVisualSize;
-    
-    /**
-     * The mif bitmap id for default logo
-     */
-    TInt iBitmapId;
-    
-    /**
-     * The mif mask id for default logo
-     */
-    TInt iMaskId;
-    
-    /**
-     * The ID for the current logo. KErrNotFound for the default logo
-     */
-    TInt iCurrentId;
-    
-    /**
-     * The fading identification for situations when the graphics aren't ready
-     */
-    TIRLogoFadeDelayType iDelayedFadeIn;
-
-    /**
-     * Style of the logo fading.
-     */
-    TIRFadeStyle iFadeStyle;
-    /**
-     * Used to store logo.
-     */
-    TInt iCount;
-    /**
-     * Used for logo storage.
-     */
-     TInt iRet;
-     /**
-     * Used for logo storage.
-     */
-     TInt iLogoDisplay;
-    /**
-     * Used for Handling Error Conditions
-     * During Logo Conversion.
-     */
-     TInt iError;
-    /**
-     * Used for Handling Logo FadeOut
-     */
-     TBool iFadeOut;
-     
-    MIRLogoControlObserver* iLogoControlObserver;
-    };
-
-#endif // C_CIRSTATIONLOGOCONTROL_H
\ No newline at end of file
--- a/internetradio2.0/uicontrolsinc/irstationlogocontrolobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Observer interface for the logo control.
-*
-*/
-
-
-#ifndef M_IRSTATIONLOGOCONTROLOBSERVER_H
-#define M_IRSTATIONLOGOCONTROLOBSERVER_H
-
-/**
- * Observer interface for the image converter.
- */
-class MIRLogoControlObserver
-    {
-
-public:
-
-    /**
-     * Call back method that is called just before displaying the logo.
-     */
-    virtual void LogoReadyForDisplayL() = 0;
-
-    /**
-     * Call back method that is called when the logo conversion fails.
-     */
-    virtual void LogoConversionFailedL() = 0;
-    
-    };
-
-#endif // M_IRSTATIONLOGOCONTROLOBSERVER_H
--- a/internetradio2.0/uicontrolsinc/irstationlogodata.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Data for single station logo
-*
-*/
-
-
-#ifndef C_CIRSTATIONLOGODATA_H
-#define C_CIRSTATIONLOGODATA_H
-
-#include <alf/alfbitmapprovider.h>
-#include <alf/alfeventhandler.h>
-#include <e32base.h>
-
-class CAlfTexture;
-class CFbsBitmap;
-class CIRImageConverter;
-
-/**
- * Station Logo Data
- *
- * @since   S60 v3.2
- */
-class CIRStationLogoData : public CBase, 
-                           public MAlfBitmapProvider,
-                           public MAlfEventHandler
-    {
-public:
-
-    /**
-     * Logo related custom events
-     */
-    enum TIRLogoCustomEvents
-        {
-        EIRCustomEventLogoFadeOutComplete
-        };
-    
-    /**
-     * Two-phased constructor.
-     * Adds the control to the control group and to layout hierarchy
-     *
-     * @param aId The IID for this logo
-     * @param aRawData The graphics raw data for this logo
-     */
-    static CIRStationLogoData* NewLC( TInt aId, const TDesC8& aRawData );
-
-    /**
-     * Destructor.
-     */
-    ~CIRStationLogoData();
-
-    /**
-     * Sets the raw data for the graphics
-     * 
-     * @param aRawData reference to raw data
-     */
-    void SetRawData( const TDesC8& aRawData );
-
-    /**
-     * Provides the raw data for the graphics
-     * 
-     * @return reference to raw data
-     */
-    const TDesC8& RawData() const;
-    
-    /**
-     * Updates the texture according to the bitmaps provided. 
-     * Ownership of the bitmaps is transfered always, even if this method leaves.
-     * So the bitmap an mask must not be in cleanup stack
-     * 
-     * @param aBitmap The bitmap to be used
-     * @param aMask The mask to be used
-     */
-    void UpdateTextureL( CFbsBitmap* aBitmap, CFbsBitmap* aMask );
-
-    /**
-     * Destroys the texture and possible bitmaps
-     */
-    void DestroyTexture();
-
-    /**
-     * Sets the visual for this logo data.
-     * 
-     * @param aVisual The visual to be set. Transfers ownership
-     */
-    void SetVisual( CAlfImageVisual* aVisual );
-
-    /**
-     * Provides the image visual for this logo
-     * 
-     * @return Pointer to CAlfImageVisual, or NULL
-     */
-    CAlfImageVisual* Visual();
-
-    /**
-     * Destroys the visual for the logo
-     */
-    void DestroyVisual();
-
-    /**
-     * Provides the texture for this logo
-     * 
-     * @return The reference to texture
-     */
-    CAlfTexture* Texture();
-
-    /**
-     * Provides the ID for this logo
-     * 
-     * @return The ID
-     */
-    TInt Id() const ;
-
-    // from MAlfBitmapProvider
-    void ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMaskBitmap);
-
-    // from MAlfEventHandler
-    TBool OfferEventL( const TAlfEvent& aEvent );
-
-private: // Methods
-
-    /**
-     * Default constructor
-     *
-     * @param aId The IID for this logo
-     * @param aRawData The graphics raw data for this logo
-     */
-    CIRStationLogoData( TInt aId, const TDesC8& aRawData );
-
-    /**
-     * Second phase constructor
-     */
-    void ConstructL();
-
-private: // Members
-
-    /**
-     * The logo as a bitmap.
-     * Owned.
-     */
-    CFbsBitmap* iBitmap;
-
-    /**
-     * The logo bitmap mask.
-     * Owned.
-     */
-    CFbsBitmap* iMask;
-
-    /**
-     * The logo represented as a texture.
-     * Owned.
-     */
-    CAlfTexture* iTexture;
-
-    /**
-     * The visual for the logo
-     * Owned.
-     */
-    CAlfImageVisual* iVisual;
-
-    /**
-     * The raw data of graphics.
-     */
-    TPtrC8 iData;
-    
-    /**
-     * The ID that is used to identify the logo
-     */
-    TInt iId;
-    
-    /**
-     * The texture ID provided by the texture manager
-     */
-    TInt iTextureId;
-    };
-
-#endif // C_CIRSTATIONLOGODATA_H
--- a/internetradio2.0/uicontrolssrc/iradvertisinglistbox.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1060 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Listbox implementation supporting bitmap advertisement.
-*
-*/
-
-
-#include <gulicon.h>
-#include <stringloader.h>
-#include <internetradio.rsg>
-#include <aknbiditextutils.h> 
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknutils.h> 
-
-#include "irui.h"
-#include "irdebug.h"
-#include "irfavoritesdb.h"
-#include "irmainview.h"
-#include "irmaincontainer.h"
-#include "iradvertisinglistbox.h"
-
-const TInt KThree = 3;
-const TInt KFour = 4;
-const TInt KSix = 6;
-const TInt KTen = 10;
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::NewL
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData* CIRAdvertisingListBoxData::NewL()
-    {
-    CIRAdvertisingListBoxData* self = new (ELeave) CIRAdvertisingListBoxData();
-    CleanupStack::PushL( self );
-    self->ConstructLD();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::SetAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::SetAdvertisementIcon( CGulIcon* aIcon )
-    {
-    delete iIcon;
-    iIcon = aIcon;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRAdvertisingListBoxData::AdvertisementIcon()
-    {
-    return iIcon;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::SetControlFlag(TBool aControlFlag)
-    {
-    iControlFlag = aControlFlag;
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::GetControlFlag
-// ---------------------------------------------------------------------------
-//
-TBool CIRAdvertisingListBoxData::GetControlFlag()
-    {
-    return iControlFlag;
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::CIRAdvertisingListBoxData
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData::CIRAdvertisingListBoxData()
-    {
-    }
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawNoMatchesText
-// Draws the NoMatches Text on the view
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListL(CWindowGc &aGc,
-											   TPtrC aText,
-											   TRect aParentRect) const 
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBoxData::DrawEmptyListL - Entering" );
-    
-	MAknsSkinInstance* skin = AknsUtils::SkinInstance () ;
-
-
-    TRgb color( KRgbBlack );
-    if ( AknsUtils::AvkonSkinEnabled() )
-        {
-        TRgb c;
-        MAknsSkinInstance *skin = AknsUtils::SkinInstance();
-        TInt err = AknsUtils::GetCachedColor( skin,
-                                              c,
-                                              KAknsIIDQsnTextColors,
-                                              EAknsCIQsnTextColorsCG6 );
-        if ( !err )
-            {
-            color = c;
-            }
-        }
-
-	
-    if ( !aText.Length() )
-        {
-        return;
-        }
-
-    HBufC* hbuf = HBufC::New( aText.Size() + 3 * ( KAknBidiExtraSpacePerLine  +1 )
-                              + KTen );  // reserve space for newlines
-    if ( !hbuf )
-        { // can't really do anything
-        return;
-        }
-
-    TPtr buffer(hbuf->Des());
-    
-
-    /*
-    * input text can be either
-    * - "line1"
-    * - "line1 which will be wrapped to 2 lines and truncated with..."
-    * - "line1\nline2"
-    * - "line1\nMany other lines which will be wrapped to several lines"
-    *
-    * there are 3 layouts
-    * - 1 line with big font,
-    * - 2 lines with big font
-    * - 1 line with big font + 1..3 lines with small font (not for popup lists)
-    *
-    *  so first we need to check if given text has a newline,
-    *  if so, then we need to check if given text fits to 2 lines or
-    *  should it be split to several small font lines
-    */
-
-    TInt i, n;
-    n = 0;
-    for (i = 0; i < aText.Length(); i ++)
-        {
-        if ( aText[i] == '\n' )
-            {
-            n++;
-            }
-        }
-
-    
-    TAknTextComponentLayout layout1( AknLayoutScalable_Avkon::main_pane_empty_t1( 0 ) );
-    TAknTextComponentLayout layout2( AknLayoutScalable_Avkon::main_pane_empty_t2( 0 ) );
-    TAknLayoutText line1;
-    TAknLayoutText line2;
-
-    line1.LayoutText( aParentRect, layout1 );
-    TInt line1length = line1.TextRect().Size().iWidth;
-
-    line2.LayoutText( aParentRect, layout2 ); 
-    TInt line2length = line2.TextRect().Size().iWidth;
-
-    const CFont *font = line1.Font();
-
-    if ( n == 0 )
-        { // one line, or one line which will be wrapped to two
-        DrawEmptyListDrawUpToTwoLinesL( aGc,aText, line1, line2,
-                                                 line1length, line2length,
-                                                 font, color, buffer,
-                                                 aParentRect );
-
-        delete hbuf;
-        return;
-        }
-    
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-
-    wrapWidthArray->AppendL( line1length );
-    wrapWidthArray->AppendL( line2length );
-    wrapWidthArray->AppendL( line2length ); // allow wrap to 3 lines
-    
-    TRAPD( error,AknBidiTextUtils::ConvertToVisualAndWrapToStringL(
-        aText, *wrapWidthArray, *font, buffer, ETrue ));
-
-    CleanupStack::PopAndDestroy(wrapWidthArray); 
-
-
-    n = 0;
-    for ( i = 0; i < buffer.Length(); i ++)
-        {
-        if (buffer[i] == '\n')
-            {
-            n++;
-            }
-        }
-
-    // wrapping adds a \n to end of each line --> n < 3
-    
-    if ( error != KErrNone || n < KThree)
-        { // 2 lines which fit to 2 line space
-        DrawEmptyListDrawUpToTwoLinesL( aGc,aText, line1, line2,
-                                                 line1length, line2length,
-                                                 font, color, buffer,
-                                                 aParentRect );
-
-        }
-    else
-        { // 1 line with big font + 1..3 lines with small font
-        DrawEmptyListDrawMoreThanTwoLinesL( aGc,aParentRect, aText,
-        											 color, buffer );
-
-        }
-
-    delete hbuf;
-   
-    IRLOG_DEBUG( "CIRAdvertisingListBoxData::DrawEmptyListL - Exiting" );
-	}   
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLines
-// 
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL(CWindowGc &aGc,
-											  TPtrC aText,
-                                              TAknLayoutText &aLine1,
-                                              TAknLayoutText &aLine2,
-                                              TInt aLine1length,
-                                              TInt aLine2length,
-                                              const CFont* aFont,
-                                              TRgb aColor,
-                                              TDes& aBuffer,
-                                              TRect aParentRect) const 
-    {
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL-Entering" );
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-
-    wrapWidthArray->AppendL( aLine1length );
-    wrapWidthArray->AppendL( aLine2length );
-    
-    TRAPD( error,AknBidiTextUtils::ConvertToVisualAndWrapToStringL( 
-        aText, *wrapWidthArray, *aFont, aBuffer, ETrue ));
-    
-    CleanupStack::PopAndDestroy(wrapWidthArray); 
-    
-    if ( error != KErrNone )
-        {
-        aBuffer = aText;
-        }
-    
-    // Drawing text
-    aGc.Reset();
-    TBool oneline( EFalse );
-    TPtrC ptr = aBuffer;
-    TPtrC top = ptr;
-    TInt off = ptr.Locate('\n');
-    if ( off >= 0 )
-        {
-        top.Set(ptr.Left(off));
-        ptr.Set(ptr.Mid(off+1));
-
-        TInt off1 = ptr.Locate('\n');
-        if ( off1 >= 0 )
-            {
-            ptr.Set(ptr.Left(off1));
-            }
-        else
-            {
-            oneline = ETrue;
-            }
-        }
-    
-    aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
-    aGc.SetOpaque( ETrue ); // transparency off
-
-    // no layout exist for popup list - mainpane layout is ok for X
-    // coords, center vertically.  Also need to calculate vertical
-    // position for mainpane lists, since laf is broken as designed.
-    // If you don't believe this, try using laf values in phonebook.
-    aGc.UseFont( aFont );
-    aGc.SetPenColor( aColor );
-    
-    // center horizontally
-    CGraphicsContext::TTextAlign textAlign( CGraphicsContext::ECenter );
-    
-    // center vertically
-    TInt h = aParentRect.Height();
-    TInt lineh = aLine1.TextRect().Height();
-    TRect r1( aLine1.TextRect() );
-    TRect r2( aLine2.TextRect() );
-
-    // gap between lines - must be calculated this way, since no other
-    // way really exists. Could be calculated from layout data, but
-    // data is wrong, as 1st line is calculated from top of parent
-    // rect, and 2nd line is calculated from bottom of the parent
-    // rect. iAvkonAppUi->ClientRect() as parent rect would otherwise
-    // be ok and give nice results, but in phonebook ClientRect() is
-    // not what it should be - it is some strange amount too large.
-    // This can not be fixed unless layout data is fixed to use only
-    // top marginals.
-    TInt lineGap( lineh / KSix );
-
-    TInt m;  // // middle point of texts
-    m = aParentRect.iTl.iY + h / 2;// + lineh + lineGap / 2;
-    if ( oneline )
-        {
-        m += lineh / 2;
-        }
-    TInt b1( m - lineGap / 2 );           // bottom of 1st line
-    TInt b2( m + lineh + lineGap / 2 );   // botton of 2nd line
-    
-    
-    // rects of texts
-    r1.iTl.iY = b1 - lineh;
-    r1.iBr.iY = b1;
-        
-    r2.iTl.iY = b2 - lineh;
-    r2.iBr.iY = b2;
-        
-	TInt baseLineOffset = ((r1.iBr.iY - r1.iTl.iY - aFont->HeightInPixels())/2
-				+ aFont->AscentInPixels());
-
-    aGc.DrawText( top, r1, baseLineOffset, textAlign );
-    if ( !oneline )
-        {
-        aGc.DrawText( ptr, r2, baseLineOffset, textAlign );
-        }
-    
-    
-    aGc.DiscardFont();
-    aGc.SetOpaque( EFalse ); // transparency back on
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL-Exiting" );
-    }    
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLines
-// Draws the NoMatches Text on the view
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL(CWindowGc &aGc,
-												  TRect &aParentRect,
-                                                  TPtrC aText,
-                                                  TRgb aColor,
-                                                  TDes& buffer ) const
-
-    {
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL-Entering" );
-    // fetch layouts
-    TAknLayoutText line[KFour];
-    
-    line[0].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t1(2) );
-    line[1].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t3(0) );
-    line[2].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t4(0) );
-    line[3].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t5(0) );
-
-    TInt lineLength[KFour];
-    TInt i;
-    for ( i = 0; i < KFour; i++ )
-        {
-        lineLength[i] = line[i].TextRect().Width();
-        }
-    
-    const CFont *bigFont = line[0].Font();
-    const CFont *smallFont = line[1].Font(); 
-
-    // wrap text
-    TInt off = aText.Locate('\n');
-    TPtrC rest( aText );
-    rest.Set( aText.Right(aText.Length() - off - 1 ));
-
-    HBufC* firstLine = NULL;
-    
-    TRAPD( error1, 
-            {
-            firstLine = HBufC::NewL(
-                aText.Left(off).Length() + KAknBidiExtraSpacePerLine );
-            });
-
-    if (error1 == KErrNone)
-        {
-        TPtr firstLinePtr = firstLine->Des();
-        AknBidiTextUtils::ConvertToVisualAndClip(
-                                aText.Left(off),
-                                firstLinePtr,
-                                *bigFont,
-                                lineLength[0],
-                                lineLength[0] );
-        }
-    
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-    
-    // wrap small font lines
-    wrapWidthArray->Reset();
-    for ( i = 1; i < KFour; i++ )
-        {
-		TInt temp = lineLength[i];
-		if(wrapWidthArray->Count() >= 0  && wrapWidthArray->Count() < KTen)
-			{
-			wrapWidthArray->AppendL( temp );
-			}
-        }
-    
-    TRAPD( error2,AknBidiTextUtils::ConvertToVisualAndWrapToStringL( 
-        rest, *wrapWidthArray, *smallFont, buffer, ETrue ));
-    
-    CleanupStack::PopAndDestroy(wrapWidthArray);
-    
-    
-    TPtrC ptr[KFour];
-    TInt n = 0;
-    
-    if (error1 == KErrNone)
-        {
-        ptr[0].Set( firstLine->Des() );
-        }
-    if ( error1 != KErrNone || error2 != KErrNone )
-        {
-        ptr[0].Set(aText.Left(off));
-        }
-    else
-        {
-        TInt newlines[KThree];
-        n = 0;
-        for ( i = 0; i < buffer.Length(); i++ )
-            {
-            if ( buffer[i] != '\n' )
-                {
-                continue;
-                }
-            newlines[n] = i;
-            
-            n++;
-            if ( n >= KThree )
-                {
-                break;
-                }
-            }
-        
-        if ( n >= 1 )
-            {
-            ptr[1].Set( buffer.Left( newlines[0] ) );
-            }
-        if ( n >= 2 )
-            {
-            ptr[2].Set( buffer.Mid( newlines[0] + 1, newlines[1] - newlines[0] - 1 ) );
-            }
-        if ( n >= KThree )
-            {
-            ptr[3].Set( buffer.Mid( newlines[1] + 1, newlines[2] - newlines[1] - 1 ) );
-            }
-        }
-    
-    // draw texts
-    aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
-    aGc.SetOpaque( ETrue ); // transparency off
-    
-    for ( i = 0; i < KFour; i++ )
-        {
-        line[i].DrawText( aGc,ptr[i], EFalse, aColor );
-        }
- 
-    aGc.SetOpaque( EFalse ); // transparency back on  
-    delete firstLine;
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL-Exiting" );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::~CIRAdvertisingListBoxData
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData::~CIRAdvertisingListBoxData()
-    {
-    delete iIcon;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxDrawer::CIRAdvertisingListBoxDrawer
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxDrawer::CIRAdvertisingListBoxDrawer( MTextListBoxModel* aTextListBoxModel,
-                                                          const CFont* aFont,
-                                                          CIRAdvertisingListBoxData* 
-                                                          aFormattedCellData,
-                                                          CIRAdvertisingListBox* aListBox,
-                      									  CIRCategoryAdvertisingListBox* aCatListBox) 
-    : CFormattedCellListBoxItemDrawer( aTextListBoxModel, aFont, aFormattedCellData ),
-      iListBox(aListBox),
-      iCatListBox(aCatListBox)
-
-    {
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxDrawer::DrawActualItem
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxDrawer::DrawActualItem( TInt aItemIndex, 
-                                                  const TRect& aActualItemRect, 
-                                                  TBool aItemIsCurrent, 
-                                                  TBool aViewIsEmphasized, 
-                                                  TBool aViewIsDimmed,
-                                                  TBool aItemIsSelected) const
-	{
-	IRLOG_DEBUG( "CIRAdvertisingListBox::DrawActualItem - Entering" );
-	CIRAdvertisingListBoxData* formattedCellData = static_cast<CIRAdvertisingListBoxData*>
-														( FormattedCellData() );
-	if (aItemIndex == 0)
-		{
-		TBool flag(EFalse);
-		if (iListBox)
-			{
-			flag = iListBox->GetLastPlayed();
-			}
-		TBool selectedItem =aItemIsSelected;
-		if(flag)	
-			{
-			selectedItem = EFalse;	
-			}
-		CFormattedCellListBoxItemDrawer::DrawActualItem( aItemIndex, 
-		                                                 aActualItemRect, 
-		                                                 aItemIsCurrent, 
-		                                                 aViewIsEmphasized, 
-		                                                 aViewIsDimmed,
-		                                                 selectedItem);
-
-
-		// For MainView the folowing code is executed for hacking to make the
-		// (NoMatches) string to be visible. The icon used for drawing in main
-		// view is totally transparent, which makes it invisible.
-		if (aItemIndex == 0 && formattedCellData->AdvertisementIcon() )
-		    {
-		    const CFbsBitmap* bitmap = formattedCellData->AdvertisementIcon()->Bitmap();
-		    const CFbsBitmap* mask = formattedCellData->AdvertisementIcon()->Mask();
-		    TSize bitmapSize = bitmap->SizeInPixels();
-		    TRect maskRect;
-		    if ( mask )
-		        {
-		        maskRect.SetSize( mask->SizeInPixels() );
-		        }
-		    
-		    TPoint bitmapPos( aActualItemRect.iTl.iX + 
-		    				 (aActualItemRect.Width() - bitmapSize.iWidth)/2,
-		                      aActualItemRect.iTl.iY + 
-		                      (aActualItemRect.Height() - bitmapSize.iHeight)/2 );
-
-		    Gc()->BitBltMasked( bitmapPos, bitmap, maskRect, mask, EFalse );
-		    }
-
-		}
-	else
-		{
-		CFormattedCellListBoxItemDrawer::DrawActualItem( aItemIndex, 
-		                                                 aActualItemRect, 
-		                                                 aItemIsCurrent, 
-		                                                 aViewIsEmphasized, 
-		                                                 aViewIsDimmed,
-		                                                 aItemIsSelected);
-		}
-
-	IRLOG_DEBUG( "CIRAdvertisingListBox::DrawActualItem - Exiting" );
-	}
-        
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::CIRAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBox::CIRAdvertisingListBox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetGC
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetGC(CWindowGc& aGc)
-	{
-	iGc = &aGc;	
-	}
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetControlFlag(TBool aControlFlag)
-	{
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	irListBoxData->SetControlFlag(aControlFlag);	
-	}
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::Draw
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::Draw(const TRect& aRect) const 
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::Draw - Entering" );
-	CAknDoubleLargeStyleListBox::Draw(aRect);
-	
-    TInt count = Model()->NumberOfItems();
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	if(irListBoxData->GetControlFlag())
-		{
-		if(GetActiveView())
-			{	
-			if(GetFavouritesCount() != 0)
-				{
-				if(count == 0 && !GetLastPlayed())
-					{
-					TRAP_IGNORE(View()->SetListEmptyTextL(*iNoMatchesTextResource));
-					}
-				else if(count == 1 && GetLastPlayed())
-					{
-					TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iNoMatchesTextResource,Rect()));	
-					}
-				}
-			else
-				{
-				if(GetLastPlayed())
-					{
-					TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iFindStationsTextResource,Rect()));	
-					}
-				else
-					{
-					TRAP_IGNORE(View()->SetListEmptyTextL(*iFindStationsTextResource));	
-					}
-				}
-			}
-		else
-			{
-			if(count == 1 && irListBoxData->AdvertisementIcon())
-				{
-				TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iNoMatchesTextResource,Rect()));	
-				}
-			else
-				{
-				TRAP_IGNORE(View()->SetListEmptyTextL(*iNoMatchesTextResource));
-				}
-			}
-		irListBoxData->SetControlFlag(EFalse);
-		}
-
-    IRLOG_DEBUG( "CIRAdvertisingListBox::Draw - Exiting" );
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::~CIRAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBox::~CIRAdvertisingListBox()
-	{
-	IRLOG_DEBUG( "CIRAdvertisingListBox::~CIRAdvertisingListBox - Entering" );
-	if(iFindStationsTextResource)
-		{
-		delete iFindStationsTextResource;
-		iFindStationsTextResource = NULL;
-		}
-	if(iNoMatchesTextResource)
-		{
-		delete iNoMatchesTextResource;
-		iNoMatchesTextResource = NULL;	
-		}
-	IRLOG_DEBUG( "CIRAdvertisingListBox::~CIRAdvertisingListBox - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetListItemFormat
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetListItemFormat(  HBufC* aItemFormat)
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetListItemFormat - Entering" );
-	iItemFormat = aItemFormat;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetAdvertisementIconL
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetAdvertisementIconL( CGulIcon* aIcon,TBool aMainView )
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetAdvertisementIconL - Entering" );
-    
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    
-    // add listitem only, if it doesn't exist yet.
-    if ( !aMainView && !irListBoxData->AdvertisementIcon() )
-        {
-        TInt currentItemIndex = CurrentItemIndex();
-        TInt topItemIndex = TopItemIndex();
-
-        
-        CAknFilteredTextListBoxModel* listBoxModel = static_cast<CAknFilteredTextListBoxModel*>
-        												( Model() );
-        CDesCArraySeg* items = static_cast<CDesCArraySeg*>( listBoxModel->ItemTextArray() );
-        items->InsertL( 0, *iItemFormat );
-        
-        HandleItemAdditionL();
-        if ( currentItemIndex >= 0 )
-            {
-            SetCurrentItemIndex( currentItemIndex + 1 );
-            }
-        if ( topItemIndex > 0 )
-            {
-            SetTopItemIndex( topItemIndex + 1 );
-            }
-        }
-    // always replace the existing image.
-    irListBoxData->SetAdvertisementIcon( aIcon );
-    
-    DrawDeferred();     
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetAdvertisementIconL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::ClearAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::ClearAdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ClearAdvertisementIcon - Entering" );
-   CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    irListBoxData->SetAdvertisementIcon( NULL );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ClearAdvertisementIcon - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRAdvertisingListBox::AdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::AdvertisementIcon - Entering" );
-  	CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::AdvertisementIcon - Exiting" );
-    return irListBoxData->AdvertisementIcon();
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::CreateItemDrawerL
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::CreateItemDrawerL()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::CreateItemDrawerL - Entering" );
-    CIRAdvertisingListBoxData* formattedCellListBoxData = CIRAdvertisingListBoxData::NewL();
-    CleanupStack::PushL( formattedCellListBoxData );
-    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
-    
-    iItemDrawer = new (ELeave) CIRAdvertisingListBoxDrawer( Model(), font,
-                                                            formattedCellListBoxData,this, NULL );
-    CleanupStack::Pop( formattedCellListBoxData );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::CreateItemDrawerL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::ConstructL()
-// 
-// --------------------------------------------------------------------------
-void CIRAdvertisingListBox::ConstructL(const CCoeControl* aParent, 
-                    TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel)
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ConstructL - Entering" );
-    iModel=aFilteredmodel;
-    CreateItemDrawerL();
-
-    EnableExtendedDrawingL();
-    iItemDrawer->SetDrawMark(EFalse);
-    
-	if(iFindStationsTextResource)
-		{
-		delete iFindStationsTextResource;
-		iFindStationsTextResource = NULL;
-		}
-	HBufC* findStationsTextResource = StringLoader::LoadLC(R_IRAPP_FAVOURITES_LIST_EMPTY);
-	iFindStationsTextResource = HBufC::NewL(findStationsTextResource->Length());
-	iFindStationsTextResource->Des().Append(findStationsTextResource->Des());
-	CleanupStack::PopAndDestroy( findStationsTextResource );
-	
-	if(iNoMatchesTextResource)
-		{
-		delete iNoMatchesTextResource;
-		iNoMatchesTextResource = NULL;	
-		}
-	HBufC* noMatchesTextResource = StringLoader::LoadLC(R_IRAPP_STATIONLIST_NOMATCHES);
-	iNoMatchesTextResource = HBufC::NewL(noMatchesTextResource->Length());
-	iNoMatchesTextResource->Des().Append(noMatchesTextResource->Des());
-	CleanupStack::PopAndDestroy( noMatchesTextResource );
-
-    CEikListBox::ConstructL(aParent,aFlags);
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ConstructL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetLastPlayed()
-// sets the status of lastplayed
-// --------------------------------------------------------------------------
-void CIRAdvertisingListBox::SetLastPlayed(TBool aLastPlayed)
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetLastPlayed " );
-	iLastPlayed = aLastPlayed;	
-	}
-
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetLastPlayed()
-// return the status of lastplayed
-// --------------------------------------------------------------------------
-TBool  CIRAdvertisingListBox::GetLastPlayed() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetLastPlayed " );
-	return iLastPlayed;	
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetFavouritesCount()
-// returns the number of favourates present.
-// --------------------------------------------------------------------------
-TInt CIRAdvertisingListBox::GetFavouritesCount() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-	TInt favCount = appUi->iFavPresets->iFavPresetList.Count();
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount - Exiting" );
-    return favCount;
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetFavouritesCount()
-// returns the number of favourates present.
-// --------------------------------------------------------------------------
-TBool CIRAdvertisingListBox::GetFilteredFlag() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-	TBool flag = appUi->iMainView->GetMainContainer()->GetFilteredFlag();
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount - Exiting" );
-    return flag;
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetActiveView()
-// returns whether the active view is mainView or not.
-// --------------------------------------------------------------------------
-TBool CIRAdvertisingListBox::GetActiveView() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetActiveView " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetActiveView - Exiting" );
-	if(appUi->iMainView->GetMainContainer())
-		{
-		return ETrue;	
-		}
-	else
-		{
-		return EFalse;	
-		}
-	}
-/******************************Advertisement Listbox for Category View************/
-
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::CIRCategoryAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRCategoryAdvertisingListBox::CIRCategoryAdvertisingListBox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetGC
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetGC(CWindowGc& aGc)
-	{
-	iGc = &aGc;	
-	}
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetControlFlag(TBool aControlFlag)
-	{
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	irListBoxData->SetControlFlag(aControlFlag);	
-	}
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::Draw
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::Draw(const TRect& aRect) const 
-	{
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::Draw - Entering" );
-	CAknDoubleStyleListBox::Draw(aRect);
-
-    TInt count = Model()->NumberOfItems();
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    if(irListBoxData->GetControlFlag())
-	    {
-	    if(count == 1 && irListBoxData->AdvertisementIcon())
-		    {
-			TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iTextResource,Rect()));	
-			}
-	    else if(count == 0)
-		    {
-			TRAP_IGNORE(View()->SetListEmptyTextL(*iTextResource));
-		    }
-		irListBoxData->SetControlFlag(EFalse);
-	    }
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::Draw - Exiting" );
-    }
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox()
-	{
-	IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox - Entering" );
-	if(iTextResource)
-		{
-		delete iTextResource;
-		iTextResource = NULL;
-		}
-	IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetListItemFormat
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetListItemFormat(  HBufC* aItemFormat )
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetListItemFormat - Entering" );
-	__ASSERT_ALWAYS( !iItemFormat, User::Panic( KNullDesC, KErrCorrupt ) );
-    iItemFormat = aItemFormat;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetAdvertisementIconL
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetAdvertisementIconL( CGulIcon* aIcon )
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetAdvertisementIconL - Entering" );
-	__ASSERT_ALWAYS( iItemFormat, User::Panic( KNullDesC, KErrCorrupt  ) );
-    
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    
-    // add listitem only, if it doesn't exist yet.
-    if ( !irListBoxData->AdvertisementIcon() )
-        {
-        TInt currentItemIndex = CurrentItemIndex();
-        TInt topItemIndex = TopItemIndex();
-
-     
-        CAknFilteredTextListBoxModel* listBoxModel = static_cast<CAknFilteredTextListBoxModel*>
-        											( Model() );
-        CDesCArraySeg* items = static_cast<CDesCArraySeg*>( listBoxModel->ItemTextArray() );
-        items->InsertL( 0, *iItemFormat );
-        
-        HandleItemAdditionL();
-        if ( currentItemIndex >= 0 )
-            {
-            SetCurrentItemIndex( currentItemIndex + 1 );
-            }
-        if ( topItemIndex > 0 )
-            {
-            SetTopItemIndex( topItemIndex + 1 );
-            }
-        }
-    // always replace the existing image.
-    irListBoxData->SetAdvertisementIcon( aIcon );
-    
-    DrawDeferred();     
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetAdvertisementIconL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::ClearAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::ClearAdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ClearAdvertisementIcon - Entering" );
-   CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    irListBoxData->SetAdvertisementIcon( NULL );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ClearAdvertisementIcon - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRCategoryAdvertisingListBox::AdvertisementIcon()
-    {
-     IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::AdvertisementIcon - Entering" );
-  CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::AdvertisementIcon - Exiting" );
-    return irListBoxData->AdvertisementIcon();
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::CreateItemDrawerL
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::CreateItemDrawerL()
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::CreateItemDrawerL - Entering" );
-    CIRAdvertisingListBoxData* formattedCellListBoxData = CIRAdvertisingListBoxData::NewL();
-    CleanupStack::PushL( formattedCellListBoxData );
-    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
-    
-    iItemDrawer = new (ELeave) CIRAdvertisingListBoxDrawer( Model(), font,
-                                                            formattedCellListBoxData,NULL, this );
-    CleanupStack::Pop( formattedCellListBoxData );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::CreateItemDrawerL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::ConstructL()
-// 
-// --------------------------------------------------------------------------
-void CIRCategoryAdvertisingListBox::ConstructL(const CCoeControl* aParent, 
-                    TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel)
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ConstructL - Entering" );
-    iModel=aFilteredmodel;
-    CreateItemDrawerL();
-
-    EnableExtendedDrawingL();
-    iItemDrawer->SetDrawMark(EFalse);
-
-	if(iTextResource)
-		{
-		delete iTextResource;
-		iTextResource = NULL;
-		}
-	HBufC* textResource = StringLoader::LoadLC(R_IRAPP_STATIONLIST_NOMATCHES);
-	iTextResource = HBufC::NewL(textResource->Length());
-	iTextResource->Des().Append(textResource->Des());
-	CleanupStack::PopAndDestroy( textResource );
-
-    CEikListBox::ConstructL(aParent,aFlags);
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ConstructL - Exiting" );
-    }
--- a/internetradio2.0/uicontrolssrc/iriconloader.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +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 <akniconutils.h>
-#include <gulicon.h>
-
-#include "irdebug.h"
-#include "iriconloader.h"
-
-//---------------------------------------------------------------------------- 
-// Function:CIconFileProvider
-// this function is the Default constructor
-//---------------------------------------------------------------------------- 
-EXPORT_C CIconFileProvider::CIconFileProvider()
-	{
-	IRLOG_DEBUG( "CIconFileProvider::CIconFileProvider" );
-	}
-
-
-//---------------------------------------------------------------------------- 
-//  CIconFileProvider::NewL(..)
-//  Creates a new instance of CIconFileProvider view
-//  @param aRect Sets the control's extent, specifying a rectangle.
-//  @return An instance of CIconFileProvider
-//---------------------------------------------------------------------------- 
-//
-EXPORT_C CIconFileProvider* CIconFileProvider::NewL(const TDesC& aFilename)
-	{
-    IRLOG_DEBUG( "CIconFileProvider::NewL" );  
-    CIconFileProvider* self = new (ELeave) CIconFileProvider();
-    CleanupStack::PushL(self);
-    self->ConstructL(aFilename);
-    CleanupStack::Pop( self ); // self
-    IRLOG_DEBUG( "CIconFileProvider::NewL - Exiting." );
-    return self;
-	}
-
-//---------------------------------------------------------------------------- 
-//  CIconFileProvider::ConstructL(..)
-//  Second phase constructor
-//  @param aFilename Full private path of the application
-//  @return void
-//---------------------------------------------------------------------------- 
-//
-void CIconFileProvider::ConstructL(const TDesC& aFilename)
-	{
-    IRLOG_DEBUG( "CIconFileProvider::ConstructL" );
-	iFilename = aFilename.AllocL();
-    IRLOG_DEBUG( "CIconFileProvider::ConstructL - Exiting." );
-	}
-
-
-//---------------------------------------------------------------------------- 
-// CIconFileProvider:: ~CIconFileProvider()
-// Default Destructor
-//----------------------------------------------------------------------------
-CIconFileProvider::	~CIconFileProvider()
-	{
-	IRLOG_DEBUG( "CIconFileProvider::~CIconFileProvider" );
-	delete iFilename;
-	}
-
-
-//---------------------------------------------------------------------------- 
-//  CIconFileProvider::CreateIconL(..)
-//  Creates an icon.
-//  The icon is created by loading the image bitmap identified by aBitmapId 
-//  and the mask identified by aMaskId. It returns a pointer to the icon and 
-// transfers ownership.
-//---------------------------------------------------------------------------- 
-//
-EXPORT_C CGulIcon* CIconFileProvider::CreateIconL(TInt aBitmapId,
-	TInt aMaskId) const
-	{
-    IRLOG_DEBUG( "CIconFileProvider::CreateIconL" );
-	CGulIcon* icon = CGulIcon::NewL();
-	CFbsBitmap* mask = NULL;
-	CFbsBitmap* bitmap = NULL;
-	AknIconUtils::CreateIconL(bitmap , mask , *iFilename, aBitmapId , aMaskId);    
-	icon->SetBitmap(bitmap);
-	icon->SetMask(mask);
-    IRLOG_DEBUG( "CIconFileProvider::CreateIconL - Exiting." );
-	return icon;
-	}
-
-//---------------------------------------------------------------------------- 
-//  CIconFileProvider::CreateIconL(.)
-//  Creates an icon.
-//  The icon is created by loading the image bitmap identified by aBitmapId.
-//  It returns a pointer to the icon and transfers ownership.
-//  @param aBitmapId The bitmap ID.
-//  @param aMaskId The bitmap mask ID.
-//  @return A pointer to the icon
-//---------------------------------------------------------------------------- 
-//
-EXPORT_C CFbsBitmap* CIconFileProvider::CreateIconL(TInt aBitmapId) const
-	{
-    IRLOG_DEBUG( "CIconFileProvider::CreateIconL" );
-	if(aBitmapId!=-1)
-		{
-		CFbsBitmap* bitmap = NULL;
-		
-		//The icon is created by loading the image bitmap identified
-		// by aBitmapId.
-		bitmap = AknIconUtils::CreateIconL(*iFilename, aBitmapId);    
-		return bitmap;
-		}
-    IRLOG_DEBUG( "CIconFileProvider::CreateIconL - Exiting." );
-	return NULL;
-	}
-
--- a/internetradio2.0/uicontrolssrc/irimageconverter.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Image converter
-*
-*/
-
-
-#include "irimageconverter.h"
-#include "irimageconverterimpl.h"
-
-/**
- * Image converter private data.
- */ 
-struct CIRImageConverter::TIRImageConverterPrivateData
-    {
-    
-    /**
-     * Image converter implementation.
-     * Not owned.
-     */
-    CIRImageConverterImpl* iConverterImpl;
-    
-    };
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRImageConverter* CIRImageConverter::NewL()
-    {
-    CIRImageConverter* self = new ( ELeave ) CIRImageConverter;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRImageConverter::CIRImageConverter()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::ConstructL()
-    {
-    iData = new ( ELeave ) TIRImageConverterPrivateData;
-    
-    iData->iConverterImpl = CIRImageConverterImpl::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CIRImageConverter::~CIRImageConverter()
-    {
-    if ( iData )
-        {
-        delete iData->iConverterImpl;
-        }
-    delete iData;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the raw image data to be converted.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::SetDataL( const TDesC8& aData )
-    {
-    iData->iConverterImpl->SetDataL( aData );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the image conversion observer.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::SetObserver( MIRImageConverterObserver* aObserver )
-    {
-    iData->iConverterImpl->SetObserver( aObserver );
-    }
-
-// ---------------------------------------------------------------------------
-// Enables or disables animations.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::EnableAnimations( TBool aEnable )
-    {
-    iData->iConverterImpl->EnableAnimations( aEnable );
-    }
-
-// ---------------------------------------------------------------------------
-// Return a flag indicating whether the current raw image data is animated.
-// ---------------------------------------------------------------------------
-//
-TBool CIRImageConverter::IsAnimated() const
-    {
-    return iData->iConverterImpl->IsAnimated();
-    }
-
-// ---------------------------------------------------------------------------
-// Enables or disables maintaining the aspect ratio when scaling.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::MaintainAspectRatio( TBool aMaintain )
-    {
-    iData->iConverterImpl->MaintainAspectRatio( aMaintain );
-    }
-
-// ---------------------------------------------------------------------------
-// Starts the image conversion.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::StartL( const TSize& aTarget, TInt aId )
-    {
-    iData->iConverterImpl->StartL( aTarget, aId );
-    }
-
-// ---------------------------------------------------------------------------
-// Stops the conversion.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::Stop()
-    {
-    iData->iConverterImpl->Stop();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the converted bitmap.
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CIRImageConverter::Bitmap() const
-    {
-    return iData->iConverterImpl->Bitmap();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the converted mask.
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CIRImageConverter::Mask() const
-    {
-    return iData->iConverterImpl->Mask();
-    }
-
-// ---------------------------------------------------------------------------
-// Transfers ownership of the converted bitmap and mask to the caller.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverter::TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-    {
-    iData->iConverterImpl->TransferBitmapOwnership( aBitmap, aMask );
-    }
--- a/internetradio2.0/uicontrolssrc/irimageconverterimpl.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,801 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Internal image converter implementation
-*
-*/
-
-
-#include <aknlayoutfont.h>
-#include <aknutils.h>
-#include <bitmaptransforms.h>
-#include <coemain.h>
-#include <gulicon.h>
-#include <ihlbitmaputil.h>
-#include <imageconversion.h>
-#include <svgengineinterfaceimpl.h>
-
-
-#include "irimageconverterimpl.h"
-#include "irimageconverterobserver.h"
-#include "irdebug.h"
-// Image decoder options.
-const CImageDecoder::TOptions KIRImageDecoderOptions = CImageDecoder::EOptionAlwaysThread;
-// Bitmap scaler quality.
-const CBitmapScaler::TQualityAlgorithm KIRBitmapScalerQualityAlgorithm = 
-											CBitmapScaler::EMaximumQuality;
-const TInt KFour=4;
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::NewL()
-// ---------------------------------------------------------------------------
-//
-CIRImageConverterImpl* CIRImageConverterImpl::NewL()
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::NewL - Entering" );
-    CIRImageConverterImpl* self = new ( ELeave ) CIRImageConverterImpl;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRImageConverterImpl::CIRImageConverterImpl()
-    : CActive( CActive::EPriorityStandard ),
-      iEnableAnimations( ETrue ),
-      iMaintainAspectRatio( ETrue )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::ConstructL()
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::ConstructL - entering" );
-    iNotifyObserverCallBack = new ( ELeave ) CAsyncCallBack( 
-        TCallBack( StaticNotifyObserverCallBack, this ), CActive::EPriorityHigh );
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::~CIRImageConverter()
-// ---------------------------------------------------------------------------
-//
-CIRImageConverterImpl::~CIRImageConverterImpl()
-    {
-    Cancel();
-
-    iFrames.ResetAndDestroy();
-    iFrames.Close();
-    
-    delete iDecoder;
-    delete iScaler;
-    delete iSvgEngine;
-    delete iProcessedBitmap;
-    delete iProcessedMask;
-    delete iBitmap;
-    delete iMask;
-    delete iLastFrameBitmap;
-    delete iLastFrameMask;
-    delete iNotifyObserverCallBack;
-    delete iFrameTimer;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::SetDataL( const TDesC8& aData )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::SetDataL( const TDesC8& aData )
-    {
-    IRRDEBUG2( "CIRImageConverterImpl::SetDataL - Entering", KNullDesC );
-    Cleanup( ETrue );
-    iData.Set( aData );
-    CreateDataHandlerL();
-    IRRDEBUG2( "CIRImageConverterImpl::SetDataL - Exiting", KNullDesC );
-   }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::SetObserver( MIRImageConverterObserver* aObserver )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::SetObserver( MIRImageConverterObserver* aObserver )
-    {
-    iObserver = aObserver;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::EnableAnimations( TBool aEnable )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::EnableAnimations( TBool aEnable )
-    {
-    __ASSERT_DEBUG( iState == EIRStateIdle, User::Invariant() );
-    iEnableAnimations = aEnable;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::IsAnimated() const
-// ---------------------------------------------------------------------------
-//
-TBool CIRImageConverterImpl::IsAnimated() const
-    {
-    __ASSERT_DEBUG( iState != EIRStateIdle, User::Invariant() );
-    return iIsAnimated;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::MaintainAspectRatio( TBool aMaintain )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::MaintainAspectRatio( TBool aMaintain )
-    {
-    __ASSERT_DEBUG( iState == EIRStateIdle, User::Invariant() );
-    iMaintainAspectRatio = aMaintain;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::StartL( const TSize& aTarget, TInt aId )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::StartL( const TSize& aTarget, TInt aId )
-	{
-    IRRDEBUG2( "CIRImageConverterImpl::StartL - Entering", KNullDesC );
-	if ( iState != EIRStateBitmapDecoderInitialized && iState != EIRStateSvgEngineInitialized )
-		{
-		if ( iState == EIRStateIdle )
-			{
-		    IRRDEBUG2("CIRImageConverterImpl::StartL, leave with KErrNotReady", KNullDesC);
-			User::Leave( KErrNotReady );
-			}
-		else
-			{
-		    IRRDEBUG2("CIRImageConverterImpl::StartL, leave with KErrInUse", KNullDesC);
-			User::Leave( KErrInUse );
-			}
-		}
-	iTargetSize = aTarget;
-	iId = aId;
-	if ( iState == EIRStateSvgEngineInitialized )
-		{
-		// The SVG-T engine has been initialized with dummy 0x0 bitmaps, so updating those must be handled here.
-	    IRRDEBUG2( "CIRImageConverterImpl::StartL - if begin", KNullDesC );
-		CreateBitmapL( iTargetSize, iBitmap, iMask );
-		iSvgEngine->SetFrameBuffer( iBitmap );
-		iState = EIRStateConvertingSvg;
-		iSvgEngine->Start();
-		IRRDEBUG2( "CIRImageConverterImpl::StartL - if end", KNullDesC );
-		}
-	else
-		{
-	    IRRDEBUG2( "CIRImageConverterImpl::StartL - else begin", KNullDesC );
-		iState = EIRStateConvertingBitmap;
-		IRRDEBUG2( "CIRImageConverterImpl::StartL, iDecorder = %d", iDecoder);
-		iDecoder->Convert( &iStatus, *iBitmap, *iMask );
-		IRRDEBUG2( "CIRImageConverterImpl::StartL - else-exit call setactive", KNullDesC );
-		SetActive();
-		}
-	IRRDEBUG2( "CIRImageConverterImpl::StartL - Exiting", KNullDesC );
-	}
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::Stop()
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::Stop()
-	{
-    IRRDEBUG2( "CIRImageConverterImpl::Stop - Entering", KNullDesC );
-	Cancel();
-	if ( iSvgEngine )
-	    {
-	    iSvgEngine->Stop();
-	    }
-	TIRImageConverterState state = iState;
-	Cleanup();
-	if ( state != EIRStateIdle && state != EIRStateBitmapDecoderInitialized && 
-		state != EIRStateSvgEngineInitialized )
-	    {
-	    NotifyObserver( KErrCancel );
-	    }
-	IRRDEBUG2( "CIRImageConverterImpl::Stop - Exiting",KNullDesC );
-	}
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::Bitmap() const
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CIRImageConverterImpl::Bitmap() const
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::Bitmap - Entering" );
-    return iProcessedBitmap;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::Mask() const
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CIRImageConverterImpl::Mask() const
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::Mask - Entering" );
-    return iProcessedMask;
-    }
-
-// ---------------------------------------------------------------------------
-// @see CIRImageConverter::TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::TransferBitmapOwnership( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-    {
-    aBitmap = iProcessedBitmap;
-    iProcessedBitmap = NULL;
-    aMask = iProcessedMask;
-    iProcessedMask = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Invoked when the active object is cancelled.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::DoCancel()
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::DoCancel - Entering" );
-    if ( iDecoder )
-        {
-        iDecoder->Cancel();
-        }
-    if ( iScaler )
-        {
-        iScaler->Cancel();
-        }
-	IRLOG_DEBUG( "CIRImageConverterImpl::DoCancel - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Invoked when the active object completes an asynchronous request.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::RunL()
-	{
-	IRLOG_DEBUG( "CIRImageConverterImpl::RunL - Entering" );
-	if ( iStatus.Int() == KErrNone )
-		{
-		switch ( iState )
-			{
-			case EIRStateConvertingBitmap:
-				{
-				if ( iIsAnimated && iEnableAnimations )
-					{
-					CGulIcon* icon = CGulIcon::NewLC();
-
-					icon->SetBitmapsOwnedExternally( EFalse );
-					icon->SetBitmap( iBitmap );
-					icon->SetMask( iMask );
-
-					iBitmap = NULL;
-					iMask = NULL;
-
-					iFrames.AppendL( icon );
-					CleanupStack::Pop( icon );
-
-					if ( iFrames.Count() < iDecoder->FrameCount() )
-						{
-						CreateBitmapL( iDecoder->FrameInfo( iFrames.Count() ).iOverallSizeInPixels,
-								 iBitmap, iMask );
-
-						iDecoder->Convert( &iStatus, *iBitmap, *iMask, iFrames.Count() );
-						SetActive();
-						}
-					else
-						{
-						StartBitmapAnimationL();
-						}
-					}
-				else
-					{
-					iState = EIRStateScalingBitmap;
-					iScaler->Scale( &iStatus, *iBitmap, iTargetSize, iMaintainAspectRatio );
-					SetActive();
-					}
-				}
-			break;
-			case EIRStateScalingBitmap:
-			iState = EIRStateScalingBitmapMask;
-			iScaler->Scale( &iStatus, *iMask, iTargetSize, iMaintainAspectRatio );
-			SetActive();
-			break;
-			case EIRStateScalingBitmapMask:
-			NotifyObserver( KErrNone );
-			break;
-			default:
-			break;
-			}
-		}
-	else
-		{
-		NotifyObserver( iStatus.Int() );
-		}
-	IRLOG_DEBUG( "CIRImageConverterImpl::RunL - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Invoked when RunL leaves.
-// ---------------------------------------------------------------------------
-//
-TInt CIRImageConverterImpl::RunError( TInt aError )
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::NewL - Entering" );
-    NotifyObserver( aError );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSvgRequestObserver.
-// Invoked when the bitmap has been updated by the SVG-T engine.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::UpdateScreen()
-    {
-    iSvgEngine->GenerateMask( iMask );
-    // SVG-T engine MUST NOT be destroyed here as its internal implementation
-    // relies on it existing after execution leaves this method. This means
-    // that the observer notification must be asynchronous
-    NotifyObserver( KErrNone, EFalse );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSvgRequestObserver.
-// Not implemented.
-// ---------------------------------------------------------------------------
-//
-TBool CIRImageConverterImpl::ScriptCall( const TDesC& /*aScript*/, CSvgElementImpl* 
-											/*aCallerElement*/ )
-    {
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSvgRequestObserver.
-// Not implemented.
-// ---------------------------------------------------------------------------
-//
-TInt CIRImageConverterImpl::FetchImage( const TDesC& /*aUri*/, RFs& /*aSession*/, RFile& 
-																		/*aFileHandle*/ )
-    {
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSvgRequestObserver.
-// Not implemented.
-// ---------------------------------------------------------------------------
-//
-TInt CIRImageConverterImpl::FetchFont( const TDesC& /*aUri*/, RFs& /*aSession*/, RFile& 
-																		/*aFileHandle*/ )
-    {
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSvgRequestObserver.
-// Not implemented.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::UpdatePresentation( const TInt32& /*aNoOfAnimation*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Performs cleanup on the converter object.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::Cleanup( TBool aThorough )
-    {
-    Cancel();
-    if ( aThorough )
-        {
-        delete iProcessedBitmap;
-        iProcessedBitmap = NULL;
-        
-        delete iProcessedMask;
-        iProcessedMask = NULL;
-        }
-    if(iDecoder)
-	    {
-	    delete iDecoder;
-	    iDecoder = NULL;
-	    }
-    if(iScaler)
-	    {
-	    delete iScaler;
-	    iScaler = NULL;
-	    }
-	    
-	if(iSvgEngine)
-		{
-	    delete iSvgEngine;
-	    iSvgEngine = NULL;
-		}
-	if(iFrameTimer)
-		{
-	    delete iFrameTimer;
-	    iFrameTimer = NULL;
-		}
-	if(iBitmap)
-		{
-	    delete iBitmap;
-	    iBitmap = NULL;
-		}
-	if(iMask)
-		{
-	    delete iMask;
-	    iMask = NULL;
-		}
-	if(iLastFrameBitmap)
-		{
-	    delete iLastFrameBitmap;
-	    iLastFrameBitmap = NULL;
-		}
-	if(iLastFrameMask)
-		{
-	    delete iLastFrameMask;
-	    iLastFrameMask = NULL;
-		}
-
-    iFrames.ResetAndDestroy();
-
-    iNotifyObserverCallBack->Cancel();
-
-    iFrameIndex = 0;
-    iIsAnimated = EFalse;
-    iError = KErrNone;
-    iState = EIRStateIdle;
-    }
-
-// ---------------------------------------------------------------------------
-// Creates the proper handler for the raw image data.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::CreateDataHandlerL()
-    {
-    IRRDEBUG2( "CIRImageConverterImpl::CreateDataHandlerL - Entering", KNullDesC );
-    TBuf8<KMaxDataTypeLength> mimeType;
-    TRAPD( err, CImageDecoder::GetMimeTypeDataL( iData, mimeType ) )
-
-	if ( err == KErrNone ) // Image decoder can handle this MIME type.
-		{
-
-		TRAPD(err1,iDecoder = CImageDecoder::DataNewL( CCoeEnv::Static()->FsSession(), iData,
-		KIRImageDecoderOptions );)
-		if(err1!=KErrNone)
-			{  
-			if ( iObserver )
-				{
-			    IRRDEBUG2( "CIRImageConverterImpl::CreateDataHandlerL, err = %d", err1);
-				NotifyObserver( err1 );
-				IRRDEBUG2( "CIRImageConverterImpl::CreateDataHandlerL, error is notified", KNullDesC);
-				}
-			}
-		else
-			{
-        iScaler = CBitmapScaler::NewL();
-        iScaler->SetQualityAlgorithm( KIRBitmapScalerQualityAlgorithm );
-        iScaler->UseLowMemoryAlgorithm( ETrue ); // Return value ignored on purpose; it's ok if low memory algorithm cannot be used when scaling.
-
-        if ( iDecoder->FrameCount() > 1 )
-            {
-            iFrameTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-            iIsAnimated = ETrue;
-            }
-
-        CreateBitmapL( iDecoder->FrameInfo().iOverallSizeInPixels, iBitmap, iMask );
-        }
-		}
-    else // Try using the SVG-T engine for decoding the image.
-        {
-        
-        TFontSpec fontSpec = AknLayoutUtils::LayoutFontFromId( 
-        						EAknLogicalFontSecondaryFont )->FontSpecInTwips();
-
-        // The SVG-T engine requires that the bitmap is created prior to its instantiation.
-        // As the dummy bitmaps created here are 0x0, StartL must take care of instantiating them to
-        // proper sizes and updating the SVG-T engine's frame buffer manually before starting the conversion.
-        
-        CreateBitmapL( TSize( 0, 0 ), iBitmap, iMask );
-        
-        iSvgEngine = CSvgEngineInterfaceImpl::NewL( iBitmap, this, fontSpec );
-        MSvgError* svgErr = iSvgEngine->Load( iData );
-        if ( svgErr && svgErr->HasError() )
-            {
-            err = svgErr->SystemErrorCode();
-            }
-        else
-            {
-            err = KErrNone;
-            iIsAnimated = iSvgEngine->SvgHasAnimation( iSvgEngine->SvgDocument() );
-            }
-        }
-
-    if ( err )
-        {
-        Cleanup( ETrue );
-        User::Leave( KErrNotSupported );
-        }
-    else
-        {
-        iState = iSvgEngine ? EIRStateSvgEngineInitialized : EIRStateBitmapDecoderInitialized;
-        }
-
-    IRRDEBUG2( "CIRImageConverterImpl::CreateDataHandlerL - Exiting" , KNullDesC);
-   }
-
-// ---------------------------------------------------------------------------
-// Creates new bitmaps of the given size.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::CreateBitmapL( const TSize& aSize, CFbsBitmap*& aBitmap, 
-										CFbsBitmap*& aMask )
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::CreateBitmapL - Entering" );
-    CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap;
-    CleanupStack::PushL( bitmap );
-    User::LeaveIfError( bitmap->Create( aSize, CCoeEnv::Static()->ScreenDevice()
-    									->DisplayMode() ) );
-    
-    CFbsBitmap* mask = new ( ELeave ) CFbsBitmap;
-    CleanupStack::PushL( mask );
-    User::LeaveIfError( mask->Create( aSize, EGray256 ) );
-    
-    delete aBitmap;
-    aBitmap = bitmap;
-    
-    delete aMask;
-    aMask = mask;
-    
-    CleanupStack::Pop( 2, bitmap );
-	IRLOG_DEBUG( "CIRImageConverterImpl::CreateBitmapL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// Creates exact copies of the supplied bitmaps.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::CreateBitmapCopyL( const CFbsBitmap& aSourceBitmap, 
-                                               const CFbsBitmap& aSourceMask, 
-                                               CFbsBitmap*& aBitmap, 
-                                               CFbsBitmap*& aMask )
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::CreateBitmapCopyL - Entering" );
-    CFbsBitmap* bitmap = IHLBitmapUtil::CopyBitmapLC( aSourceBitmap );
-    CFbsBitmap* mask = IHLBitmapUtil::CopyBitmapLC( aSourceMask );
-    
-    delete aBitmap;
-    aBitmap = bitmap;
-    
-    delete aMask;
-    aMask = mask;
-
-    CleanupStack::Pop( 2, bitmap );
-	IRLOG_DEBUG( "CIRImageConverterImpl::CreateBitmapCopyL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// Starts the bitmap animation.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::StartBitmapAnimationL()
-    {
-    __ASSERT_DEBUG( iFrames.Count() == iDecoder->FrameCount(), User::Invariant() );
-    
-    RenderBitmapAnimationFrameL( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// Renders the current bitmap animation frame.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::RenderBitmapAnimationFrameL( TBool aFirstTime )
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::RenderBitmapAnimationFrameL - Entering" );
-    __ASSERT_DEBUG( iFrames.Count() && iFrames.Count() > iFrameIndex, User::Invariant() );
-    
-    
-    const TGifImageControl* gifImageControl = static_cast<const TGifImageControl*>
-    							( iDecoder->FrameData( iFrameIndex ).GetFrameData( 0 ) );
-    if ( gifImageControl )
-        {
-        if ( aFirstTime )
-            {
-            // When rendering the animation for the very first time, we just make a copy of the first frame.
-            CreateBitmapCopyL( *iFrames[0]->Bitmap(), *iFrames[0]->Mask(), 
-            				iLastFrameBitmap, iLastFrameMask );
-            }
-        else
-            {
-            CFbsBitmapDevice* lastFrameBitmapDevice = CFbsBitmapDevice::NewL( iLastFrameBitmap );
-            CleanupStack::PushL( lastFrameBitmapDevice );
-            CFbsBitGc* lastFrameBitmapGc = CFbsBitGc::NewL();
-            CleanupStack::PushL( lastFrameBitmapGc );
-            lastFrameBitmapGc->Activate( lastFrameBitmapDevice );
-            
-            CFbsBitmapDevice* lastFrameMaskDevice = CFbsBitmapDevice::NewL( iLastFrameMask );
-            CleanupStack::PushL( lastFrameMaskDevice );
-            CFbsBitGc* lastFrameMaskGc = CFbsBitGc::NewL();
-            CleanupStack::PushL( lastFrameMaskGc );
-            lastFrameMaskGc->Activate( lastFrameMaskDevice );
-            
-            TRect rect = iDecoder->FrameInfo( iFrameIndex ).iFrameCoordsInPixels;
-            
-
-            switch ( gifImageControl->iDisposalMethod )
-                {
-                case TGifImageControl::ENone:
-                    // The new frame is completely self-sufficient, so no information about the previous frame is required.
-                    lastFrameBitmapGc->BitBlt( rect.iTl, iFrames[iFrameIndex]->Bitmap(), 
-                    							TRect( TPoint(), rect.Size() ) );
-                    lastFrameMaskGc->BitBlt( rect.iTl, iFrames[iFrameIndex]->Mask(),
-                    						 TRect( TPoint(), rect.Size() ) );
-                    break;
-                case TGifImageControl::ELeaveInPlace:
-                    // The new frame only contains a partial update on the image, so we have to retain the previous frame state.
-                    lastFrameBitmapGc->BitBltMasked( rect.iTl, iFrames[iFrameIndex]->Bitmap(), 
-                    								TRect( TPoint(), rect.Size() ),
-                    								iFrames[iFrameIndex]->Mask(), EFalse );
-                    break;
-                case TGifImageControl::ERestoreToBackground:
-                    // The new frame is restored to the background color defined in its data.
-                    lastFrameBitmapGc->SetBrushColor( 
-                    					iDecoder->FrameInfo( iFrameIndex ).iBackgroundColor );
-                    lastFrameBitmapGc->Clear();
-                    lastFrameMaskGc->SetBrushColor( KRgbBlack );
-                    lastFrameMaskGc->Clear();
-                    lastFrameBitmapGc->BitBlt( rect.iTl, iFrames[iFrameIndex]->Bitmap(), 
-                    						TRect( TPoint(), rect.Size() ) );
-                    lastFrameMaskGc->BitBlt( rect.iTl, iFrames[iFrameIndex]->Mask(),
-                    						 TRect( TPoint(), rect.Size() ) );
-                    break;
-                case TGifImageControl::ERestoreToPrevious:
-                    // The new frame is exactly the same as the previous one, so no special processing is required.
-                    break;
-                default:
-                    break;
-                }
-    
-            CleanupStack::PopAndDestroy( KFour, lastFrameBitmapDevice );
-            }
-        
-        CreateBitmapCopyL( *iLastFrameBitmap, *iLastFrameMask, iBitmap, iMask );
-        }
-    else
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    iState = EIRStateScalingBitmap;
-    iScaler->Scale( &iStatus, *iBitmap, iTargetSize, iMaintainAspectRatio );
-    SetActive();
-	IRLOG_DEBUG( "CIRImageConverterImpl::RenderBitmapAnimationFrameL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// Notifies the observer either synchronously or asynchronously.
-// ---------------------------------------------------------------------------
-//
-void CIRImageConverterImpl::NotifyObserver( TInt aError, TBool aSynchronous )
-    {
-    IRRDEBUG2( "CIRImageConverterImpl::NotifyObserver - Entering, aError = %d", aError );
-    iError = aError;
-    iNotifyObserverCallBack->Cancel();
-
-    if ( aSynchronous )
-        {
-        StaticNotifyObserverCallBack( this );
-        }
-    else
-        {
-        iNotifyObserverCallBack->CallBack();
-        }
-    IRRDEBUG2( "CIRImageConverterImpl::NotifyObserver - Exiting", KNullDesC );
-    }
-
-// ---------------------------------------------------------------------------
-// Call back for notifying the observer.
-// ---------------------------------------------------------------------------
-//
-TInt CIRImageConverterImpl::StaticNotifyObserverCallBack( TAny* aSelf )
-    {
-	IRLOG_DEBUG( "CIRImageConverterImpl::StaticNotifyObserverCallBack - Entering" );
-    CIRImageConverterImpl* self = static_cast<CIRImageConverterImpl*>( aSelf );
-    if ( self )
-        {
-        TInt err = self->iError;
-        MIRImageConverterObserver::TIRImageConversionEvent event = MIRImageConverterObserver::
-        														EIRImageConversionCompleted;
-        
-        if ( err == KErrNone )
-            {
-            if ( self->iSvgEngine && self->iIsAnimated && self->iEnableAnimations )
-                {
-                TRAP( err, self->CreateBitmapCopyL( *self->iBitmap, *self->iMask, 
-                		self->iProcessedBitmap, self->iProcessedMask ) )
-                }
-            else
-                {
-                delete self->iProcessedBitmap;
-                self->iProcessedBitmap = self->iBitmap;
-                self->iBitmap = NULL;
-                delete self->iProcessedMask;
-                self->iProcessedMask = self->iMask;
-                self->iMask = NULL;
-                }
-            
-            if ( !err && self->iIsAnimated && self->iEnableAnimations )
-                {
-                event = MIRImageConverterObserver::EIRFrameConversionCompleted;
-
-                if ( self->iDecoder )
-                    {
-                    self->iState = EIRStateBetweenBitmapAnimationFrames;
-                    
-                    self->iFrameTimer->Cancel();
-                    self->iFrameTimer->Start( static_cast<TInt>( self->iDecoder->
-                    				FrameInfo( self->iFrameIndex ).iDelay.Int64() ), 0, 
-                                              TCallBack( StaticNextFrameCallBack, self ) );
-
-                    self->iFrameIndex++;
-                    if ( self->iFrameIndex >= self->iDecoder->FrameCount() )
-                        {
-                        self->iFrameIndex = 0;
-                        }
-                    }
-                }
-            }
-
-        if ( err || event == MIRImageConverterObserver::EIRImageConversionCompleted )
-            {
-            self->Cleanup();
-            }
-        
-        if ( self->iObserver )
-            {
-            TRAP_IGNORE( self->iObserver->HandleImageConversionEventL( event, self->iId, err ) )
-            }
-        }
-    
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// Call back for advancing to the next frame when bitmap animations are used.
-// ---------------------------------------------------------------------------
-//
-TInt CIRImageConverterImpl::StaticNextFrameCallBack( TAny* aSelf )
-    {
-    CIRImageConverterImpl* self = static_cast<CIRImageConverterImpl*>( aSelf );
-    if ( self )
-        {
-        self->iFrameTimer->Cancel();
-        TRAPD( err, self->RenderBitmapAnimationFrameL() )
-        if ( err )
-            {
-            self->NotifyObserver( err );
-            }
-        }
-    return KErrNone;
-    }
--- a/internetradio2.0/uicontrolssrc/irlayoututils.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Utilities for layouting purposes
-*
-*/
-
-
-#include <aknutils.h>
-
-#include <internetradio.rsg>
-#include "irlayoututils.h"
-
-// ---------------------------------------------------------------------------
-// IRLayoutUtils::PresetBigLogoSize
-// The size for the big logo is calculated from the scren size
-// ---------------------------------------------------------------------------
-//
-TSize IRLayoutUtils::PresetBigLogoSize()
-    {
-    TSize screenSize;
-    AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, screenSize );
-    TInt side = Min( screenSize.iWidth, screenSize.iHeight );
-    return TSize( side, side );
-    }
-
-// ---------------------------------------------------------------------------
-// IRLayoutUtils::PresetSmallLogoSizeL
-// The size for the small logo is taken from the application settings
-// ---------------------------------------------------------------------------
-//
-/*TSize IRLayoutUtils::PresetSmallLogoSizeL()
-    {
-    TInt width = 0;
-    TInt height = 0;
-    CVRRepositoryManager::GetRepositoryValueL( KVRCRUid, KVRCRPresetSmallLogoWidth, width );
-    CVRRepositoryManager::GetRepositoryValueL( KVRCRUid, KVRCRPresetSmallLogoHeight, height );
-    return TSize( width, height );
-    }*/
-
-// ---------------------------------------------------------------------------
-// IRLayoutUtils::AdvertisementSizeL
-// ---------------------------------------------------------------------------
-//
-TSize IRLayoutUtils::AdvertisementSizeL()
-    {
-    TRect parentRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, parentRect );
-    
-    TAknLayoutRect layoutRect;
-    layoutRect.LayoutRect( parentRect, R_IR_ADVERTISEMENT_SIZE );
-
-    return TSize( layoutRect.Rect().Size() );
-    }
-
--- a/internetradio2.0/uicontrolssrc/irmarqueeclet.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Controlet to implement marquee functionality for visuals
-*
-*/
-
-
-#include <alf/alfcontrol.h>
-#include <alf/alfenv.h>
-#include <alf/alfevent.h>
-#include <alf/alfviewportlayout.h>
-#include <alf/alftimedvalue.h>
-#include <alf/alftextvisual.h>
-
-#include "irmarqueeclet.h"
- 
-// Default scroll style.
-const TIRMarqueeClet::TIRScrollStyle KVRDefaultScrollStyle = TIRMarqueeClet::EIRScrollStyleOnce;
-// Default scroll direction.
-const TIRMarqueeClet::TIRScrollDirection KVRDefaultScrollDirection = 
-										TIRMarqueeClet::EIRScrollDirectionLeft;
-// Default scroll speed in pixels per second.
-const TInt KVRDefaultScrollSpeed = 30;
-//Default Scroll Time
-const TInt KVRScrollTime=1000;
-// Spaces needed when creating continuously scrolling text. 
-_LIT( KVRSpace, "     " );
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-TIRMarqueeClet::TIRMarqueeClet() :
-    iViewport( NULL ), iTextVisual( NULL ), iScrollSize(), 
-    iScrollSpeed( KVRDefaultScrollSpeed ), iScrollDirection( KVRDefaultScrollDirection ), 
-    iScrollStyle( KVRDefaultScrollStyle ), iSnoozeTime( 0 ), iOrigin(), iOriginalTextWidth( 0 )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-TIRMarqueeClet::~TIRMarqueeClet()
-    {
-    if ( iTextVisual )
-        {
-        iTextVisual->Owner().Env().CancelCustomCommands( this );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the required information for this marquee controlet.
-// ---------------------------------------------------------------------------
-//
-void TIRMarqueeClet::Set( CAlfViewportLayout& aViewport, CAlfTextVisual& aTextVisual )
-    {
-    aTextVisual.Owner().Env().CancelCustomCommands( this );
-
-    iViewport = &aViewport;
-    iTextVisual = &aTextVisual;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets scroll speed in pixels per second.
-// ---------------------------------------------------------------------------
-//
-void TIRMarqueeClet::SetScrollSpeed( TInt aScrollSpeed )
-    {
-    iScrollSpeed = aScrollSpeed;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the scroll direction.
-// ---------------------------------------------------------------------------
-//
-void TIRMarqueeClet::SetScrollDirection( TIRScrollDirection aScrollDirection )
-    {
-    iScrollDirection = aScrollDirection; 
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the scroll style.
-// ---------------------------------------------------------------------------
-//
-void TIRMarqueeClet::SetScrollStyle( TIRScrollStyle aScrollStyle )
-    {
-    iScrollStyle = aScrollStyle;
-    }
-
-// ---------------------------------------------------------------------------
-// Starts scrolling.
-// ---------------------------------------------------------------------------
-//
-void TIRMarqueeClet::StartL( TInt aDelay, TInt aSnooze )
-    {
-    ASSERT( iViewport );
-    ASSERT( iTextVisual );
-
-    iViewport->SetViewportSize( TAlfRealPoint( 1.0f, 1.0f ), 0 );
-    iViewport->SetVirtualSize( TAlfRealPoint( 1.0f, 1.0f ), 0 );
-    iViewport->SetViewportPos( TAlfRealPoint( 0.0f, 0.0f ), 0 );
-
-    iTextVisual->Owner().Env().CancelCustomCommands( this );
-
-    iSnoozeTime = aSnooze;
-
-    // Get original text width in pixels.
-    iOriginalTextWidth = iTextVisual->TextExtents().iWidth;
-    TInt targetWidth = iViewport->Size().Target().AsSize().iWidth;
-
-    // Check if loop scrolling and if the text does not fit to the viewport size.
-    if ( iScrollStyle == TIRMarqueeClet::EIRScrollStyleLoop && iOriginalTextWidth > targetWidth )
-        {
-        // Create continuously scrolling text (text + 5 spaces + text).
-        RBuf buffer;
-        CleanupClosePushL( buffer );
-        buffer.CreateL( 2 * iOriginalTextWidth + KVRSpace().Length() );
-        buffer.Append( iTextVisual->Text() );
-        buffer.Append( KVRSpace );
-        buffer.Append( iTextVisual->Text() );
-        iTextVisual->SetTextL( buffer );
-        CleanupStack::PopAndDestroy(&buffer);// buffer
-        }
-    
-    // Text size to display.
-    iScrollSize = iTextVisual->TextExtents();
-
-    // Check if text must be scrolled.
-    if ( iScrollSize.iWidth > targetWidth )
-        {
-        // Set line wrapping to truncate: if text does not fit to the viewport width, the text is
-        // truncated with ellipsis (...).
-        iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
-        // Decides the correct directionality for the scroll.
-        TBidiText::TDirectionality directionality = TBidiText::
-        					TextDirectionality( iTextVisual->Text() );
-        if ( directionality == TBidiText::ELeftToRight )
-            {
-            SetScrollDirection( TIRMarqueeClet::EIRScrollDirectionLeft ); 
-            }
-        else
-            {
-            SetScrollDirection( TIRMarqueeClet::EIRScrollDirectionRight ); 
-            }
-        // Align horizontally.
-        iTextVisual->SetAlign( EAlfAlignHLocale, EAlfAlignVCenter );
-        // Start scrolling.
-        iTextVisual->Owner().Env().Send( TAlfCustomEventCommand( 
-            TIRMarqueeClet::EIRCustomEventScrollStarted, this ), aDelay );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class CAlfControl.
-// Event handler.
-// ---------------------------------------------------------------------------
-//
-TBool TIRMarqueeClet::OfferEventL( const TAlfEvent& aEvent )
-    {
-    TBool eventHandled = EFalse;
-    
-    if ( aEvent.IsCustomEvent() && iViewport )
-        {
-        switch ( aEvent.CustomParameter() )
-            {
-            case TIRMarqueeClet::EIRCustomEventScrollCompleted:
-                {
-                // Viewport is reset.
-                iViewport->SetVirtualSize( TAlfRealPoint( 1.0f, 1.0f ), 0 );
-                iViewport->SetViewportPos( TAlfRealPoint( 0.0f, 0.0f ), 0 );
-                // Set line wrapping to truncate.
-                iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
-                eventHandled = ETrue;
-                break;
-                }
-            case TIRMarqueeClet::EIRCustomEventScrollStarted:
-                {
-                 // Visible scroll space width.
-                TReal32 visibleWidth = iViewport->Size().Target().iX;
- 
-                // One scroll width.
-                TReal32 overflowWidth( 0.0f );
-                switch ( iScrollStyle )
-                    {
-                    case TIRMarqueeClet::EIRScrollStyleOnce:
-                        overflowWidth = iScrollSize.iWidth - visibleWidth;
-                        break;
-                    case TIRMarqueeClet::EIRScrollStyleLoop:
-                        // In EIRScrollStyleLoop mode, the scrolling width is 
-                        // the width of the original text + the trailing spaces.
-                        overflowWidth = iScrollSize.iWidth - iOriginalTextWidth;
-                        break;
-                    default:
-                        break;
-                    }
-
-                // Width ratio.
-                TReal32 widthRatio = overflowWidth / visibleWidth;
-                // Target position.
-                TAlfRealPoint target( iViewport->Pos().Target() );
-                // Coordinate space used for scrolling.
-                TAlfRealPoint virt( widthRatio + 1.0f, 1.0f );
-                // Start position.
-                iOrigin = iViewport->Pos().ValueNow();
-                // Scrolling time in milliseconds.
-                TInt scrollTime = KVRScrollTime *
-                				 static_cast<TInt>( overflowWidth / iScrollSpeed );
-                
-                switch ( iScrollDirection )
-                    {
-                    case TIRMarqueeClet::EIRScrollDirectionLeft:
-                        iOrigin.iX = 0.0f;
-                        target.iX = widthRatio;
-                        break;
-                    case TIRMarqueeClet::EIRScrollDirectionRight:
-                        iOrigin.iX = widthRatio;
-                        target.iX = 0.0f;
-                        break;
-                    default:
-                        break;
-                    }
-
-                // Set virtual size for scrolling.
-                iViewport->SetVirtualSize( virt, 0 );
-                // Set viewport to start position.
-                iViewport->SetViewportPos( iOrigin, 0 );
-                // Start scrolling to target position.
-                iViewport->SetViewportPos( target, scrollTime );
-
-                // Set line wrapping to manual.
-                iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapManual );
-
-                switch ( iScrollStyle )
-                    {
-                    case TIRMarqueeClet::EIRScrollStyleOnce:
-                        // Send EIRCustomEventScrollCompleted after scrolling is ended.
-                        iTextVisual->Owner().Env().Send( TAlfCustomEventCommand(
-                            TIRMarqueeClet::EIRCustomEventScrollCompleted, this ), 
-                            scrollTime + iSnoozeTime );
-                        break;
-                    case TIRMarqueeClet::EIRScrollStyleLoop:
-                        // Start loop scrolling immediately after previous scrolling has ended.
-                        iTextVisual->Owner().Env().Send( TAlfCustomEventCommand(
-                            TIRMarqueeClet::EIRCustomEventScrollStarted, this ), scrollTime );
-                        break;
-                    default:
-                        break;
-                    }
-
-                eventHandled = ETrue;
-                break;
-                }
-             default:
-                break;
-            }
-        }
-
-
-    return eventHandled;
-    }
-
-// End of file
--- a/internetradio2.0/uicontrolssrc/irstationinformationdata.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Station information data container
-*
-*/
-
-
-#include <stringloader.h>
-#include <internetradio.rsg>
-
-#include "irstationinformationdata.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Static two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRStationInformationData* CIRStationInformationData::NewL( CCoeEnv& aCoeEnv )
-    {
-    CIRStationInformationData* self = new ( ELeave ) CIRStationInformationData( aCoeEnv );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRStationInformationData::CIRStationInformationData( CCoeEnv& /*aCoeEnv*/ )
-    //: iCoeEnv( aCoeEnv )
-    {
-    }
-    
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::ConstructL()
-    {
-    iName.CreateL( KNullDesC );
-    iRdsPsName.CreateL( KNullDesC );
-    iIndex.CreateL( KNullDesC );
-    
-    }
-    
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CIRStationInformationData::~CIRStationInformationData()
-    {
-    
-
-    iName.Close();
-    iRdsPsName.Close();
-    iIndex.Close();
-
-    }
-
-    
-// ---------------------------------------------------------------------------
-// Sets the name.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetNameL( const TDesC& aName )
-    {
-    iName.Close();
-    iName.CreateL( aName );
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the RDS PS name.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetRdsPsNameL( const TDesC& aRdsPsName )
-    {
-    iRdsPsName.Close();
-    iRdsPsName.CreateL( aRdsPsName );
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the index.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetIndexL( TInt aIndex )
-    {
-    if ( aIndex >= 0 )
-        {
-        HBufC* index = StringLoader::LoadLC( R_IRAPP_STATIONS_NUMBERING, aIndex + 1);
-        CleanupStack::Pop( index );
-        
-        iIndex.Close();
-        iIndex.Assign( index );
-        }
-    }
-    
-
-// ---------------------------------------------------------------------------
-// Sets the visual service enabled or disabled.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetServiceEnabled( TBool aServiceEnabled )
-    {
-    iServiceEnabled = aServiceEnabled;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the display style in use.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetDisplayStyle( TIRDisplayStyle aDisplayStyle )
-    {
-    iDisplayStyle = aDisplayStyle;
-    }
-    
-// ---------------------------------------------------------------------------
-// Sets the fade directionality.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationData::SetFadeDirectionality( TIRFadeStyle aFadeDirectionality )
-    {
-    iFadeDirectionality = aFadeDirectionality;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the frequency as a descriptor.
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationInformationData::Frequency() const
-    {
-    return iFrequency;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the name.
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationInformationData::Name() const
-    {
-    return iName;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the RDS PS name.
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationInformationData::RdsPsName() const
-    {
-    return iRdsPsName;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the index as a descriptor.
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationInformationData::Index() const
-    {
-    return iIndex;
-    }
-    
-// ---------------------------------------------------------------------------
-// Returns the location.
-// ---------------------------------------------------------------------------
-//
-const TDesC& CIRStationInformationData::Location() const
-    {
-    return iLocation;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns whether or not visual service is enabled.
-// ---------------------------------------------------------------------------
-//
-TBool CIRStationInformationData::ServiceEnabled() const
-    {
-    return iServiceEnabled;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the display style.
-// ---------------------------------------------------------------------------
-//
-TIRDisplayStyle CIRStationInformationData::DisplayStyle() const
-    {
-    return iDisplayStyle;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the fade directionality.
-// ---------------------------------------------------------------------------
-//
-TIRFadeStyle CIRStationInformationData::FadeDirectionality() const
-    {
-    return iFadeDirectionality;
-    }
-
--- a/internetradio2.0/uicontrolssrc/irstationinformationdisplay.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,633 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Control that displays current station information
-*
-*/
-
-
-#include <aknsconstants.h>
-#include <aknutils.h>
-#include <biditext.h>
-
-#include <alf/alfcontrolgroup.h>
-#include <alf/alfdecklayout.h>
-#include <alf/alfenv.h>
-#include <alf/alfevent.h>
-#include <alf/alflayout.h>
-#include <alf/alfgridlayout.h>
-#include <alf/alftextvisual.h>
-#include <alf/alfviewportlayout.h>
-
-
-//#include "vrdebug.h"
-#include "irstationinformationdata.h"
-#include "irstationinformationdisplay.h"
-#include "irdebug.h"
-
-// Tag to identify a text visual with.
-_LIT8( KVRTagTextVisual, "KVRTagTextVisual" );
-// Tag to identify a layout visual with.
-_LIT8( KVRTagLayout, "KVRTagLayout" );
-
-// Time in milliseconds to spend animating the displays moving in and out of the screen.
-const TInt KVRDisplayFadeTime = 400;
-
-// This is context-sensitive per scrollable visual, so the actual start time depends on the additional application logic.
-const TInt KVRScrollDelayTime = 1000;
-// Time in milliseconds to snooze after scrolling has completed.
-// This is used to halt the scrolling at the very end for a period of time, making it visually more pleasing.
-const TInt KVRScrollSnoozeTime = 1000;
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRStationInformationDisplay* CIRStationInformationDisplay::NewL( CAlfEnv& aEnv, 
-								TInt aControlGroupId,CAlfLayout* aParentLayout )
-    {
-    
-    CIRStationInformationDisplay* self = new ( ELeave ) 
-    						CIRStationInformationDisplay( *aParentLayout );
-    CleanupStack::PushL( self );
-    self->ConstructL( aEnv, aControlGroupId, aParentLayout );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRStationInformationDisplay::CIRStationInformationDisplay( CAlfLayout& aParentLayout )
-    : iParentAnchorLayout( aParentLayout )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::ConstructL( CAlfEnv& aEnv, TInt aControlGroupId, 
-												CAlfLayout* aParentLayout )
-    {
-    CAlfControl::ConstructL( aEnv );
-
-    
-    // Base layout is created here so the control can be as independent from the parent layout as possible.
-    iBaseLayout = CAlfDeckLayout::AddNewL( *this, aParentLayout );
-    
-    aEnv.ControlGroup( aControlGroupId ).AppendL( this ); // Takes ownership. No leaving code allowed after this call.
-    iLandScapSetFalg=EFalse;    
-    
-    }
-
-// <TUNING TEMP>
-CIRStationInformationDisplay::~CIRStationInformationDisplay()
-    {
-    Env().CancelCustomCommands( this );
-    iRdsDataText.Close();
-    }
-
-
-// ---------------------------------------------------------------------------
-// Sets the displayed data.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::SetDisplayedDataL( const CIRStationInformationData& aData )
-    {
-    FadeOutDisplay( aData );
-    CreateDisplayL( aData );
-    FadeInDisplay( aData );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the RDS data display which is used only in landscape.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::SetDisplayOrientation( TBool aLandscape )
-    {
-    if ( iLandscape && !aLandscape )
-         {
-         // Going from landscape to portrait: Remove separate display for RDS data.
-        iParentAnchorLayout.Remove( iRdsDataLayout, 0 );
-         }
-    iLandscape = aLandscape;
-    }
-
-TIRFadeStyle  CIRStationInformationDisplay::FadeStyle()
-    {
-    return iFadeStyle;
-    }
-// ---------------------------------------------------------------------------
-// Sets the RDS data.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::RdsDataReceivedL( const TDesC& aRdsData )
-    {
-
-    if ( iRdsData )
-        {
-        TBool rdsDataExisted = iRdsData->Text().Length() ? ETrue : EFalse;
-        TAlfTimedValue opacity( iRdsData->Opacity().ValueNow() );
-
-        if ( aRdsData.Length() )
-            {
-            if ( rdsDataExisted )
-                {
-                if( iRdsDataText != aRdsData )
-                    {
-                iRdsDataText.Close();
-                iRdsDataText.CreateL( aRdsData );
-                 // Fade out previous text.
-                opacity.SetTarget( 0.0f, KVRDisplayFadeTime );
-                FadeVisual( *iRdsData, opacity );
-                // Displaying RDS text will be started after fade out is done.
-                Env().Send( 
-                	TAlfCustomEventCommand( EIRCustomEventVisualFadeOutCompleted, this ),
-                	 KVRDisplayFadeTime );
-                    }
-
-                }
-            else
-                {
-                iRdsDataText.Close();
-                iRdsDataText.CreateL( aRdsData );
-                iRdsData->SetTextL( iRdsDataText );
-                // Start to display RDS text.
-                DisplayRdsDataL();
-                // Fade in.
-                if ( !iLandscape )
-                    {
-                    // Orientation is portrait.
-                    iLayout->SetRowsL( iLayout->RowCount() + 1 );
-                    iLayout->Reorder( *iRdsDataLayout, iLayout->RowCount() - 1, 
-                    				KVRDisplayFadeTime );
-                    iRdsData->SetFlag( EAlfVisualFlagManualPosition );
-                    iName->SetFlag( EAlfVisualFlagManualPosition );
-                    iLayout->UpdateChildrenLayout( KVRDisplayFadeTime );
-                    iRdsData->ClearFlag( EAlfVisualFlagManualPosition );
-                    iName->ClearFlag( EAlfVisualFlagManualPosition );
-                    }
-                opacity.SetTarget( 1.0f, KVRDisplayFadeTime );
-                FadeVisual( *iRdsData, opacity );
-                }
-            }
-        else // RDS data has been lost.
-            {
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class CAlfControl.
-// Called when a visual's layout has been updated.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::VisualLayoutUpdated( CAlfVisual& aVisual )
-    {
-    CAlfControl::VisualLayoutUpdated( aVisual );
-
-    // TO be done  Special handling for scrolling required while changing orientation...
-    }
-
-// ---------------------------------------------------------------------------
-// From class CAlfControl.
-// Event handler.
-// ---------------------------------------------------------------------------
-//
-TBool CIRStationInformationDisplay::OfferEventL( const TAlfEvent& aEvent )
-    {
-    TBool eventHandled = EFalse;
-    
-    if ( aEvent.IsCustomEvent() )
-        {
-
-        
-        switch ( aEvent.CustomParameter() )
-            {
-            case EIRCustomEventDisplayFadeInCompleted:
-                {
-                 // When a display has faded in, its position will be handled by the framework and text scrolling should start.
-                reinterpret_cast<CAlfGridLayout*>( aEvent.CustomEventData() )->ClearFlag( 
-                												EAlfVisualFlagManualPosition );
-                // Start to display name.to be changed
-                iNameMarqueeClet.StartL( KVRScrollDelayTime, KVRScrollSnoozeTime );
-                // Start to display RDS data.
-                DisplayRdsDataL();
-                eventHandled = ETrue;
-                break;
-                }
-            case EIRCustomEventDisplayFadeOutCompleted:
-                {
-                // When display has faded out old layout needs to be destroyed
-                reinterpret_cast<CAlfGridLayout*>
-                			( aEvent.CustomEventData() )->RemoveAndDestroyAllD();
-                eventHandled = ETrue;
-                break;
-                }
-             case EIRCustomEventVisualFadeOutCompleted:
-                {
-                iRdsData->SetTextL( iRdsDataText );
-                if ( iRdsDataText.Length() )
-                    {
-                    // Start to display RDS data.
-                    DisplayRdsDataL();
-                    // Fade in.
-                    TAlfTimedValue opacity( iRdsData->Opacity().ValueNow() );
-                    opacity.SetTarget( 1.0f, KVRDisplayFadeTime );
-                    FadeVisual( *iRdsData, opacity );
-                    }
-                eventHandled = ETrue;
-                break;
-                }
-            default:
-                break;
-            }
-        }
-
-    return eventHandled;
-    }
-
-// ---------------------------------------------------------------------------
-// Creates a new display that is used to show the supplied data.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::CreateDisplayL( const CIRStationInformationData& aData )
-    {
-
-    iFadeStyle = aData.FadeDirectionality();
-    iLayout = CAlfGridLayout::AddNewL( *this, 1, 1, iBaseLayout );
-
-    // A separate layout has to be created for the station's index and its name as 
-    // the index has to be a separate entity from the name due to scrolling issues.
-    // This layout will contain both of these texts, but only the name can scroll.
-    // Index is never scrolled, and both fields are center-aligned to the display.
-    iNameIndexLayout = CAlfGridLayout::AddNewL( *this, 2, 1, iLayout );
-    iNameIndexLayout->SetTagL( KVRTagLayout );
-
-    iIndex = CAlfTextVisual::AddNewL( *this, iNameIndexLayout );
-    iIndex->SetTextL( aData.Index() );
-    iIndex->SetTagL( KVRTagTextVisual );
-    iIndex->SetOpacity( 0.0f );
-    iIndex->SetColor( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-    iIndex->SetStyle( EAlfTextStyleSmall );
-    iIndex->SetAlign( EAlfAlignHLocaleMirrored, EAlfAlignVCenter ); // Right-aligned normally, left-aligned in mirrored.
-
-    CAlfViewportLayout* nameViewport = CAlfViewportLayout::AddNewL( *this, iNameIndexLayout );
-    nameViewport->SetFlag( EAlfVisualFlagLayoutUpdateNotification );
-    nameViewport->SetTagL( KVRTagLayout );
-    
-    iName = CAlfTextVisual::AddNewL( *this, nameViewport );
-    iName->SetTextL( aData.Name() );
-    iName->SetTagL( KVRTagTextVisual );
-    iName->SetOpacity( 0.0f );
-    iName->SetColor( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-    iName->SetStyle( EAlfTextStyleSmall );
-    iName->SetAlign( EAlfAlignHLocale, EAlfAlignVCenter );
-    iName->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
-
-    // Forces the viewport marquee to use a linear interpolation style.
-    TAlfTimedPoint point( 0.0f, 0.0f );
-    point.SetStyle( EAlfTimedValueStyleLinear );
-    iName->SetPos( point );
-
-
-    if ( AknLayoutUtils::LayoutMirrored() ) 
-        {
-        // In mirrored layouts the name is on the left side.
-
-        iNameIndexLayout->Reorder( *nameViewport, 0, 0 );
-        }
-
-    // Decides the correct directionality for the scroll.
-    iNameMarqueeClet.Set( *nameViewport, *iName );
-
-// This is added due to possible scrolling issues.
-    // Grid layout (iRdsDataLayout) for RDS data is added due to possible scrolling issues.
-    // For some reason scrolling won’t work without this extra grid layout.
-    if ( iLandscape )
-        {
-        // Landscape: Create own separate display for RDS data.
-        iLandScapSetFalg=ETrue;
-        iRdsDataLayout = CAlfGridLayout::AddNewL( *this, 1, 1, &iParentAnchorLayout );
-        }
-    else
-        {
-        // Portrait: RDS data will be displayed below the station information.
-        iRdsDataLayout = CAlfGridLayout::AddNewL( *this, 1, 1, iLayout );
-        }
-    iRdsDataLayout->SetTagL( KVRTagLayout );
-
-    // RDS data view port.
-    CAlfViewportLayout* rdsDataViewport = CAlfViewportLayout::AddNewL( *this, iRdsDataLayout );
-    rdsDataViewport->SetFlag( EAlfVisualFlagLayoutUpdateNotification );
-    rdsDataViewport->SetTagL( KVRTagLayout );
-
-    // RDS data text visual.
-    iRdsDataText.Close();
-    iRdsDataText.CreateL( aData.RdsPsName() );
-    iRdsData = CAlfTextVisual::AddNewL( *this, rdsDataViewport );
-    iRdsData->SetTextL( iRdsDataText );
-    iRdsData->SetTagL( KVRTagTextVisual );
-    iRdsData->SetOpacity( 0.0f );
-    iRdsData->SetColor( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-    iRdsData->SetStyle( EAlfTextStyleSmall );
-    iRdsData->SetWrapping( CAlfTextVisual::ELineWrapManual );
-    iRdsData->SetPos( point );
-
-    // Set RDS data.
-    iRdsDataMarqueeClet.Set( *rdsDataViewport, *iRdsData );
-    // RDS data scrolling style is continuous scrolling.
-    iRdsDataMarqueeClet.SetScrollStyle( TIRMarqueeClet::EIRScrollStyleLoop );
-
-    // Determining the initial row count for the grid and reordering its elements.
-    TInt rowCount = 1;//1
-	if ( iIndex->Text().Length() || iName->Text().Length() )
-        {
-        //rowCount++;
-        }
-    if ( iRdsData->Text().Length() && !iLandscape  )
-        {
-        rowCount++;
-        // RDS data will always be the last element in the grid.
-        iLayout->Reorder( *iRdsDataLayout, rowCount - 1, 0 );//3rd 0
-        }
-
-
-    iLayout->SetRowsL( rowCount );
-    // Calculates the layout for station index and name by using grid weights.
-    // Two cases are considered:
-    //      1) Index and name fit on the screen without scrolling.
-    //         In this case they are center-aligned on the screen.
-    //      2) Index and name do not fit on the screen, scrolling must be used.
-    //         In this case the index is aligned to either to the left or right,
-    //         depending on the used locale, and the name will scroll as a separate
-    //         entity.
-    
-    
-    TInt layoutWidth = static_cast<TInt>( iNameIndexLayout->Size().ValueNow().iX );
-
-    TInt indexWidth = iIndex->TextExtents().iWidth;
-    TInt nameWidth = iName->TextExtents().iWidth;
-    
-    if ( layoutWidth < indexWidth + nameWidth )
-        {
-        nameWidth = layoutWidth - indexWidth;
-        }
-    else
-        {
-        TInt overflow = layoutWidth - indexWidth - nameWidth;
-
-        // Overlowing part of the layout is split evenly between the index and the name.
-        indexWidth += overflow / 2;
-        nameWidth += overflow / 2;
-        }
-    
-    RArray<TInt> weights;
-    CleanupClosePushL( weights );
-    if ( AknLayoutUtils::LayoutMirrored() )
-        {
-        weights.AppendL( nameWidth );
-        weights.AppendL( indexWidth );
-        }
-    else
-        {
-        weights.AppendL( indexWidth );
-        weights.AppendL( nameWidth );
-        }
-    iNameIndexLayout->SetColumnsL( weights );
-    CleanupStack::PopAndDestroy( &weights );
-    iLayout->UpdateChildrenLayout();
-
-    }
-
-// ---------------------------------------------------------------------------
-// Fades in the current display.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::FadeInDisplay( const CIRStationInformationData& aData )
-    {
-    if ( iLayout )
-        {
-        TAlfRealPoint size = iLayout->Size().ValueNow();
-        TAlfRealPoint pos = iLayout->Pos().ValueNow();
-        
-        TAlfTimedValue opacity( 0.0f );
-        opacity.SetStyle( EAlfTimedValueStyleDecelerate );
-
-        TInt fadeTime = KVRDisplayFadeTime;
-        
-        TAlfTimedPoint point( pos.iX, pos.iY, KVRDisplayFadeTime );
-        point.SetStyle( EAlfTimedValueStyleDecelerate );
-        
-        switch ( aData.FadeDirectionality() )
-            {
-            case EIRFadeUnknown:
-                point.iX.SetValueNow( pos.iX );
-                point.iY.SetValueNow( pos.iY );
-                break;
-            case EIRFadeLeftToRight:
-                point.iX.SetValueNow( pos.iX - size.iX );
-                point.iY.SetValueNow( pos.iY );
-                break;
-            case EIRFadeRightToLeft:
-                point.iX.SetValueNow( pos.iX + size.iX );
-                point.iY.SetValueNow( pos.iY );
-                break;
-            case EIRFadeTopToBottom:
-                point.iX.SetValueNow( pos.iX );
-                point.iY.SetValueNow( pos.iY - size.iY );
-                break;
-            case EIRFadeBottomToTop:
-                point.iX.SetValueNow( pos.iX );
-                point.iY.SetValueNow( pos.iY + size.iY );
-                break;
-            case EIRFadeNoFade:
-                fadeTime = 0;
-                point.iX.SetValueNow( pos.iX );
-                point.iY.SetValueNow( pos.iY );
-                point.SetTarget( pos, fadeTime );
-                break;
-            default:
-                break;
-            }
-
-        opacity.SetTarget( 1.0f, fadeTime );
-
-        iLayout->SetFlag( EAlfVisualFlagManualPosition );
-        iLayout->SetPos( point );
-        FadeLayout( *iLayout, opacity );
-
-        if ( iLandscape )
-            {
-            // If the orientation is landscape the RDS text layout needs to be visible regardless
-            // how we got in this point, be it startup, orientation change, skin change or something
-            // else. This needs to be done here because RDS text may have already been available
-            // and if there is not a change in RDS text then there is no notification to update
-            // RDS text which leads to not showing the available RDS text
-            Env().Send( TAlfCustomEventCommand( EIRCustomEventVisualFadeOutCompleted, this ), 0 );
-            }
-        Env().Send( TAlfCustomEventCommand( EIRCustomEventDisplayFadeInCompleted, this,
-        			 reinterpret_cast<TInt>( iLayout ) ), 0 );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Fades out the current display.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::FadeOutDisplay( const CIRStationInformationData& aData )
-    {
-    if ( iLayout )
-        {
-        TAlfRealPoint size = iLayout->Size().ValueNow();
-        TAlfRealPoint pos = iLayout->Pos().ValueNow();
-
-        TAlfTimedValue opacity( iLayout->Opacity().ValueNow() );
-        opacity.SetStyle( EAlfTimedValueStyleAccelerate );
-        opacity.SetTarget( 0.0f, KVRDisplayFadeTime );
-        
-        TAlfTimedPoint point( pos.iX, pos.iY );
-        point.SetStyle( EAlfTimedValueStyleAccelerate );
-
-        TAlfRealPoint target = iLayout->Pos().Target();
-
-        TInt fadeTime = KVRDisplayFadeTime;
-        
-        switch ( aData.FadeDirectionality() )
-            {
-            case EIRFadeUnknown:
-                point.SetTarget( TAlfRealPoint( target.iX, target.iY ), KVRDisplayFadeTime );
-                break;
-            case EIRFadeLeftToRight:
-                point.SetTarget( TAlfRealPoint( target.iX + size.iX, target.iY ),
-                				 KVRDisplayFadeTime );
-                break;
-            case EIRFadeRightToLeft:
-                point.SetTarget( TAlfRealPoint( -size.iX, target.iY ), KVRDisplayFadeTime );
-                break;
-            case EIRFadeTopToBottom:
-                point.SetTarget( TAlfRealPoint( target.iX, target.iY + size.iY ),
-                								 KVRDisplayFadeTime );
-                break;
-            case EIRFadeBottomToTop:
-                point.SetTarget( TAlfRealPoint( target.iX, target.iY - size.iY ), 
-                								KVRDisplayFadeTime );
-                break;
-            case EIRFadeNoFade:
-                fadeTime = 0;
-                point.SetTarget( TAlfRealPoint( target.iX, target.iY ), fadeTime );
-                opacity.SetTarget( 0.0f, fadeTime );
-                break;
-            default:
-                break;
-            }
-
-        iLayout->SetFlag( EAlfVisualFlagManualPosition );
-        iLayout->SetPos( point );
-        FadeLayout( *iLayout, opacity );
-
-        Env().CancelCustomCommands( this, EIRCustomEventDisplayFadeInCompleted );
-        if ( iRdsDataLayout && iLayout != iRdsDataLayout->Layout() )
-            {
-
-            // In landscape orientation RDS data is not part of the station information data and no fading out is needed.
-            // RDS data can be removed and destroyed at once.
-            Env().Send( TAlfCustomEventCommand( EIRCustomEventDisplayFadeOutCompleted, this,
-            			 reinterpret_cast<TInt>( iRdsDataLayout ) ), 0 );
-
-            }
-        Env().Send( TAlfCustomEventCommand( EIRCustomEventDisplayFadeOutCompleted, this,
-        			 reinterpret_cast<TInt>( iLayout ) ), fadeTime );
-        }
-
-    // Saved pointers to the visuals will later on be invalid, as they will get deleted in the custom event handler.
-    
-    iLayout = NULL;
-    iNameIndexLayout = NULL;
-    iRdsDataLayout = NULL;
-    iName = NULL;
-    iIndex = NULL;
-
-    iRdsData = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Fades a single visual.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::FadeVisual( CAlfVisual& aVisual,const TAlfTimedValue& aOpacity)
-    {
-    TAlfTimedValue opacity( aVisual.Opacity().ValueNow() );
-    opacity.SetTarget( aOpacity.Target(), aOpacity.TimeToTargetinMilliSeconds() );
-    
-    if ( aVisual.Tag() == KVRTagTextVisual )
-        {
-        CAlfTextVisual& visual = static_cast<CAlfTextVisual&>( aVisual );
-        if ( visual.Text().Length() )
-            {
-            visual.SetOpacity( opacity );
-            visual.SetShadowOpacity( opacity );
-            }
-        }
-    else
-        {
-        aVisual.SetOpacity( opacity );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Fades all visuals contained within the supplied layout.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::FadeLayout( CAlfLayout& aLayout, const TAlfTimedValue& aOpacity)
-    {
-    for ( TInt i = 0; i < aLayout.Count(); i++ )
-        {
-        CAlfVisual& visual = aLayout.Visual( i );
-        if ( visual.Tag() == KVRTagLayout )
-            {
-            FadeLayout( static_cast<CAlfLayout&>( visual ), aOpacity );
-            }
-        else
-            {
-            FadeVisual( visual, aOpacity );
-            }
-        }
-        
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// Starts to display RDS data.
-// ---------------------------------------------------------------------------
-//
-void CIRStationInformationDisplay::DisplayRdsDataL()
-    {
-    // Set default alignment.
-    if ( iLandscape )
-        {
-        //iRdsData->SetAlign( EAlfAlignHLocale, EAlfAlignVCenter )
-        iRdsData->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
-
-        }
-    else
-        {
-        iRdsData->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
-        }
-    // Start displaying.
-    iRdsDataMarqueeClet.StartL( KVRScrollDelayTime + KVRDisplayFadeTime);
-    }
--- a/internetradio2.0/uicontrolssrc/irstationlogocontrol.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,704 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Control for single station logo
-*
-*/
-
-
-#include <alf/alfcommand.h>
-#include <alf/alfcontrolgroup.h>
-#include <alf/alfdecklayout.h>
-#include <alf/alfenv.h>
-#include <alf/alfimagevisual.h>
-#include <alf/alftexture.h>
-#include <alf/alftexturemanager.h>
-#include <alf/alftimedvalue.h>
-
-#include "irdebug.h"
-
-#include "irimageconverter.h"
-#include "irstationlogocontrolobserver.h"
-#include "irstationlogocontrol.h"
-#include "irstationlogodata.h"
-
-// Time in milliseconds to spend animating the displays moving in and out of the screen
-const TInt KVRLogoFadeTime = 400;
-const TInt KTwo=-2;
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoControl::CIRStationLogoControl() : iCurrentId( KErrNotFound ),iError(KErrNone)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::ConstructL( CAlfEnv& aAlfEnv, TInt aControlGroupId, 
-										CAlfLayout* aParentLayout )
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoControl::ConstructL()");
-    CAlfControl::ConstructL( aAlfEnv );
- 
-    iDeck = CAlfDeckLayout::AddNewL( *this, aParentLayout );
-	iFadeOut=EFalse;
-    iCurrentImageConverter = CIRImageConverter::NewL();
-    iCurrentImageConverter->SetObserver( this );
-	iVisualSize = DisplayArea().Size();
-
-    CAlfControlGroup& group = Env().ControlGroup( aControlGroupId );
-    group.AppendL( this ); // Transfers ownership
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoControl* CIRStationLogoControl::NewL( CAlfEnv& aAlfEnv, 
-                                                    TInt aControlGroupId, 
-                                                    CAlfLayout* aParentLayout )
-    {
-    CIRStationLogoControl* self = new( ELeave ) CIRStationLogoControl;
-    CleanupStack::PushL( self );
-    self->ConstructL( aAlfEnv, aControlGroupId, aParentLayout );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoControl::~CIRStationLogoControl()
-    {
-    iLogoControlObserver = NULL;
-    delete iCurrentImageConverter;
-    
-    for( TInt i = 0 ; i < iLogoData.Count() ; i++ )
-    {
-    Env().CancelCustomCommands( iLogoData[i] );
-    }
-    iLogoData.ResetAndDestroy();
-    iLogoData.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Prepares the graphics for the logo that is to be displayed
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::PrepareLogoL( TInt aId )
-    {
-    IRLOG_DEBUG2(" *** S60VisualRadio -- CIRStationLogoControl::PrepareLogoL(aId=%d)", aId);
-    CIRStationLogoData* logoData = LogoDataForId( aId );
-    if( logoData && !logoData->Texture() )
-        {
-        StartConversionL( *logoData );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Switches the logo that is to be displayed
-// ---------------------------------------------------------------------------
-//
-TBool CIRStationLogoControl::SwitchToLogoL( TInt aId )
-    {
-    IRLOG_DEBUG2(" CIRStationLogoControl::SwitchToLogoL(aId=%d)", aId);
-    // No need to fade out or load new logo.
-    if ( aId != KErrNotFound )
-        {
-        PrepareLogoL( aId );
-        }
-
-    CIRStationLogoData* previousLogoData = LogoDataForId( iCurrentId );
-    CIRStationLogoData* newData = LogoDataForId( aId );
-    
-    // No need to fade out or load new logo.
-    if ( aId == iCurrentId && previousLogoData && previousLogoData->Visual() )
-        {
-        return ETrue;
-        }
-    // To Do 
-    // Fade the current logo out.Handled in View
-    /*if ( previousLogoData && previousLogoData->Visual() )
-        {
-        // Station logo.
-        FadeOutCurrentLogo( *previousLogoData->Visual() );
-        }*/
-		if(iError!=KErrNone)
-		{
-		return EFalse;
-		}
-    TBool logoAdded = EFalse;
-    iCurrentId = aId;
-    if( newData )
-        {
-        Env().CancelCustomCommands( newData, 
-        		CIRStationLogoData::EIRCustomEventLogoFadeOutComplete );
-        if( !newData->Visual() )
-            {
-            iDelayedFadeIn = EIRLogoNoDelay;
-
-            CAlfImageVisual* visual = NULL;
-            if( !newData->Visual() )
-                {
-                visual = CAlfImageVisual::AddNewL( *this, iDeck );
-                visual->SetOpacity( TAlfTimedValue( 0.0f ) );
-                visual->SetScaleMode( CAlfImageVisual::EScaleFitInside );
-                newData->SetVisual( visual );
-                }
-            else
-                {
-                visual = newData->Visual();
-                }
- 
-            if( newData->Texture() )
-                {
-                visual->SetImage( TAlfImage( *newData->Texture() ) );
-                    FadeInStationLogoL( *visual );
-                }
-            else
-                {
-                if( newData != previousLogoData )
-                    {
-                    iDelayedFadeIn = EIRDelayedTextureImage;
-                    }
-                else
-                    {
-                    visual->SetOpacity( TAlfTimedValue( 1.0f ) );
-                    }
-                }
-            }
-        logoAdded = ETrue;
-        }
-
-    return logoAdded;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// Setter for logo data
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::SetLogosL( const RArray<TInt>& aIdArray , const CPtrC8Array& aRawData )
-	{
-	IRLOG_DEBUG2(" *** S60VisualRadio -- CIRStationLogoControl::SetLogosL() -- %d items", aRawData.Count());
-	iFadeOut=EFalse;
-	iError=KErrNone;
-	DestroyPreviousLogosL(aIdArray, aRawData);
-	iRet=0;
-	iLogoDisplay=EFalse;
-	}
-
-void CIRStationLogoControl::UpdateLogoL( TInt aId, const TDesC8& aRawData )
-    {
-    IRLOG_DEBUG2(" *** S60VisualRadio -- CIRStationLogoControl::UpdateLogoL(aId=%d)", aId);
-    TBool idFound = EFalse;
-    for( TInt i = 0 ; i < iLogoData.Count() ; i++ )
-        {
-        if( aId == iLogoData[i]->Id() )
-            {
-            // Update existing logo
-            if( aRawData == KNullDesC8 )
-                {
-                delete iLogoData[i];
-                iLogoData.Remove( i );
-                }
-            else
-                {
-                iLogoData[i]->SetRawData( aRawData );
-                }
-            idFound = ETrue;
-            i = iLogoData.Count();
-            }
-        }
-    if( !idFound && aRawData != KNullDesC8 )
-        {
-        CIRStationLogoData* data = CIRStationLogoData::NewLC( aId, aRawData );
-        iLogoData.AppendL( data );
-        CleanupStack::Pop( data );
-        }
-    CIRStationLogoData* logoData = LogoDataForId( iCurrentId );
-    if( logoData && logoData->Id() == aId )
-        {
-        StartConversionL( *logoData );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Setter for logo fade style.
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::SetLogoFadeStyle( TIRFadeStyle aFadeStyle )
-    {
-    iFadeStyle = aFadeStyle;
-    }
-
-// ---------------------------------------------------------------------------
-// From class CAlfControl.
-// VisualLayoutUpdated
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::VisualLayoutUpdated( CAlfVisual& /*aVisual*/ )
-    {
-    IRLOG_DEBUG(" CIRStationLogoControl::VisualLayoutUpdated()");
-
-        // Start the converter for current logo for animation purposes
-        CIRStationLogoData* logoData = LogoDataForId( iCurrentId );
-        if( logoData )
-            {
-            TRAP_IGNORE( StartConversionL( *logoData ) )
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CIRStationLogoControl::SetLogoControlObserver
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::SetLogoControlObserver( MIRLogoControlObserver& aObserver )
-    {
-    IRLOG_DEBUG(" CIRStationLogoControl::SetLogoControlObserver()");
-    iLogoControlObserver = &aObserver;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MVRImageConverterObserver.
-// HandleImageConversionEventL
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::HandleImageConversionEventL( MIRImageConverterObserver::
-														TIRImageConversionEvent /*aEvent*/, 
-                                                         TInt aId, 
-                                                         TInt aError )
-    {
-    IRLOG_DEBUG3(" *** S60VisualRadio -- CIRStationLogoControl::HandleImageConversionEventL(aId=%d, aError=%d)", aId, aError);
-    iError=aError;
-    if( aError == KErrNone )
-        {
-        CFbsBitmap* bitmap = NULL;
-        CFbsBitmap* mask = NULL;
-        iCurrentImageConverter->TransferBitmapOwnership( bitmap, mask );
-        CIRStationLogoData* convertedLogoData = LogoDataForId( aId );
-        if( convertedLogoData )
-            {
-            convertedLogoData->UpdateTextureL( bitmap, mask ); // transfers ownership
-            }
-        else
-            {
-            delete bitmap;
-            delete mask ;
-            }
-        CIRStationLogoData* currentLogoData = LogoDataForId( iCurrentId );
-        if( currentLogoData && currentLogoData->Visual() && currentLogoData == convertedLogoData )
-            {
-             // Logo is ready for display, check that everything is OK before displaying the logo.
-            iLogoControlObserver->LogoReadyForDisplayL();
-            // Display the logo.
-            currentLogoData->Visual()->SetImage( TAlfImage( *currentLogoData->Texture() ) );
-            if( iDelayedFadeIn == EIRDelayedTextureImage )
-                {
-                FadeInStationLogoL( *currentLogoData->Visual() );
-                }
-            }
-        }
-    else
-        {
-        iLogoControlObserver->LogoConversionFailedL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Maps the logo ID to station logo data
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoData* CIRStationLogoControl::LogoDataForId( TInt aId )
-    {
-    CIRStationLogoData* logo = NULL;
-    for( TInt i = 0 ; i < iLogoData.Count() ; i++ )
-        {
-        if( iLogoData[i]->Id() == aId )
-            {
-            logo = iLogoData[i];
-            i = iLogoData.Count();
-            }
-        }
-    return logo;
-    }
-
-// ---------------------------------------------------------------------------
-// Starts the conversion for hte current logo
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::StartConversionL( CIRStationLogoData& aLogoData )
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoControl::StartConversionL()");
-    if( iVisualSize.iWidth && iVisualSize.iHeight )
-        {
-        iCurrentImageConverter->SetDataL( aLogoData.RawData() );
-        if(iError==KErrNone)
-	        {
-	        iCurrentImageConverter->StartL( iVisualSize, aLogoData.Id() );
-	        }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Fades the station logo in.
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::FadeInStationLogoL( CAlfVisual& aVisual )
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoControl::FadeInCurrent()");
-
-    iDelayedFadeIn = EIRLogoNoDelay;
-
-    // Get start point and fade time.
-    TAlfTimedPoint point = FadeInStartPoint( aVisual );
-    TInt fadeTime = point.iX.TimeToTargetinMilliSeconds();
-
-    // Fade the logo in.
-    TAlfTimedValue opacity( 0.0f );
-    opacity.SetStyle( EAlfTimedValueStyleDecelerate );
-    opacity.SetTarget( 1.0f, fadeTime );
-
-    aVisual.SetFlag( EAlfVisualFlagManualPosition );
-    aVisual.SetPos( point );
-    aVisual.SetOpacity( opacity );
-
-	return;
-    }
-
-// ---------------------------------------------------------------------------
-// Fades the current logo out. If logo is not the default logo, deletes it's
-// data after the fading (ansynchronously).
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::FadeOutCurrentLogo( CAlfVisual& aVisual )
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoControl::FadeOutCurrentLogo");
-
-    CIRStationLogoData* logoData = LogoDataForId( iCurrentId );
-
-    // Get target point.
-    TAlfTimedPoint point = FadeOutTargetPoint( aVisual );
-    TInt fadeTime = point.iX.TimeToTargetinMilliSeconds();
-
-    // Fade the logo out.
-    TAlfTimedValue opacity( aVisual.Opacity().ValueNow() );
-    opacity.SetStyle( EAlfTimedValueStyleAccelerate );
-    opacity.SetTarget( 0.0f, fadeTime );
-
-    aVisual.SetFlag( EAlfVisualFlagManualPosition );
-    aVisual.SetPos( point );
-    aVisual.SetOpacity( opacity );
-
-    if( logoData ) 
-        {
-        // This is not default logo, send event to destroy logo data.
-        IRLOG_DEBUG2(" *** S60VisualRadio -- CIRStationLogoControl::FadeOutAndDeleteCurrent() -- sending custom event to delete logo data: 0x%x", logoData);
-        Env().Send( TAlfCustomEventCommand( CIRStationLogoData::EIRCustomEventLogoFadeOutComplete, 
-                                            logoData, 
-                                            NULL), KVRLogoFadeTime );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Returns fades out target point.
-// ---------------------------------------------------------------------------
-//
-TAlfTimedPoint CIRStationLogoControl::FadeOutTargetPoint( CAlfVisual& aVisual ) const
-    {
-    TAlfTimedPoint point( 0.0f, 0.0f );
-    point.SetStyle( EAlfTimedValueStyleDecelerate );
-
-    TAlfRealPoint size = aVisual.Size().ValueNow();
-    TAlfRealPoint pos = aVisual.Pos().ValueNow();
-    
-    point = TAlfTimedPoint( pos.iX, pos.iY );
-
-    TAlfRealPoint target = aVisual.Pos().Target();
-    
-    switch ( iFadeStyle )
-        {
-        case EIRFadeUnknown:
-            point.SetTarget( TAlfRealPoint( target.iX, target.iY ), KVRLogoFadeTime );
-            break;
-        case EIRFadeLeftToRight:
-            point.SetTarget( TAlfRealPoint( target.iX + size.iX, target.iY ), KVRLogoFadeTime );
-            break;
-        case EIRFadeRightToLeft:
-            point.SetTarget( TAlfRealPoint( target.iX - size.iX, target.iY ), KVRLogoFadeTime );
-            break;
-        case EIRFadeTopToBottom:
-            point.SetTarget( TAlfRealPoint( target.iX, target.iY + size.iY ), KVRLogoFadeTime );
-            break;
-        case EIRFadeBottomToTop:
-            point.SetTarget( TAlfRealPoint( target.iX, target.iY - size.iY ), KVRLogoFadeTime );
-            break;
-        case EIRFadeNoFade:
-            point.SetTarget( TAlfRealPoint( target.iX, target.iY ), 0 );
-            break;
-        default:
-            break;
-        }
-    return point;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns fade in start point.
-// ---------------------------------------------------------------------------
-//
-TAlfTimedPoint CIRStationLogoControl::FadeInStartPoint( CAlfVisual& aVisual ) const
-    {
-    TAlfTimedPoint point( 0.0f, 0.0f );
-    point.SetStyle( EAlfTimedValueStyleDecelerate );
-
-    TAlfRealPoint size = aVisual.Size().ValueNow();
-    TAlfRealPoint pos = aVisual.Pos().ValueNow();
-    
-    point = TAlfTimedPoint( pos.iX, pos.iY, KVRLogoFadeTime );
-    
-    switch ( iFadeStyle )
-        {
-        case EIRFadeUnknown:
-            point.iX.SetValueNow( pos.iX );
-            point.iY.SetValueNow( pos.iY );
-            break;
-        case EIRFadeLeftToRight:
-            point.iX.SetValueNow( pos.iX - size.iX );
-            point.iY.SetValueNow( pos.iY );
-            break;
-        case EIRFadeRightToLeft:
-            point.iX.SetValueNow( pos.iX + size.iX );
-            point.iY.SetValueNow( pos.iY );
-            break;
-        case EIRFadeTopToBottom:
-            point.iX.SetValueNow( pos.iX );
-            point.iY.SetValueNow( pos.iY - size.iY );
-            break;
-        case EIRFadeBottomToTop:
-            point.iX.SetValueNow( pos.iX );
-            point.iY.SetValueNow( pos.iY + size.iY );
-            break;
-        case EIRFadeNoFade:
-            point.iX.SetValueNow( pos.iX );
-            point.iY.SetValueNow( pos.iY );
-            point.SetTarget( pos, 0 );
-            break;
-        default:
-            break;
-        }
-    return point;
-    }
-
-    
-// ---------------------------------------------------------------------------
-// Sets the default image to the current visual
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::DestroyPreviousLogosL( const RArray<TInt>& aIdArray , 
-										const CPtrC8Array& aRawData )
-	{
-	
-	for(TInt value=0;value<iLogoData.Count();value++)
-	{
-	TInt Value=iLogoData[value]->Id();	
-	}
-	if(iCount==0)
-			{
-			iCurrentId=KTwo;
-			iCount++;
-			iLogoData.ResetAndDestroy();
-			for( TInt i = 0 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}
-				}
-			}
-
-	else if(iCount==1)
-		{
-		if(aRawData.Count()==1)
-			{
-			iCurrentId=KTwo;
-			TInt i=0;
-			delete iLogoData[i];
-			iLogoData.Remove( i);
-			for( TInt i = 0 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}	
-				}
-			}
-		else
-			{
-			for( TInt i = 1 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}
-				}
-			}
-		iCount++;		
-		}
-
-	else if(iCount>1)
-		{
-		if(aRawData.Count()==1)
-			{
-			iLogoData.ResetAndDestroy();
-			iLogoDisplay=ETrue;
-
-			for( TInt i = 0 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}
-				}
-			}
-		else if(aRawData.Count()==2 && iLogoData.Count()==1)
-			{
-			for( TInt i = 1 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}
-				}
-			}
-		else if(iLogoData.Count()==1&&!iLogoDisplay)
-			{
-			for( TInt i = 1 ; i < aRawData.Count() ; i++ )
-				{
-				if(aIdArray.Count())
-					{
-
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-					iLogoData.AppendL( data );
-					CleanupStack::Pop( data );
-					}
-				}
-			iLogoDisplay=ETrue;
-			}
-		else if(!iLogoDisplay)
-			{
-
-
-			for(TInt j = 0;j<aRawData.Count();j++)
-				{
-				if(aIdArray.Count())
-					{
-
-					CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[j], aRawData[j] );
-
-					for(TInt i = 0;i<iLogoData.Count();i++)
-						{
-						if(!(data->Id()==iLogoData[i]->Id())&&(!iRet))
-							{
-							if(i==1)
-								{
-								DefaultlogoHandlingL(aIdArray, aRawData);
-								}
-							else
-								{
-								delete iLogoData[i];
-								iLogoData.Remove( i);
-								for( TInt i = 1 ; i < aRawData.Count() ; i++ )
-									{
-									if(aIdArray.Count())
-										{
-
-										CIRStationLogoData* data = CIRStationLogoData::
-											NewLC( aIdArray[i], aRawData[i] );
-										iLogoData.AppendL( data );
-										CleanupStack::Pop( data );
-										}
-									}
-								iRet++;
-								}
-
-							}
-
-
-						}
-
-					CleanupStack::PopAndDestroy( data );
-					}
-				}
-			}
-
-
-		}
-}
-// ---------------------------------------------------------------------------
-// Sets the default image to the current visual
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::DefaultlogoHandlingL( const RArray<TInt>& aIdArray , 
-								const CPtrC8Array& aRawData )
-	{
-	  for(TInt j = 0;j<aRawData.Count();j++)
-	  {
-	  	TInt i=0;
-	  	delete iLogoData[i];
-		iLogoData.Remove( i);
-		for( TInt i = 1 ; i < aRawData.Count() ; i++ )
-			{
-			if(aIdArray.Count())
-			{
-			CIRStationLogoData* data = CIRStationLogoData::NewLC( aIdArray[i], aRawData[i] );
-			iLogoData.AppendL( data );
-			CleanupStack::Pop( data );
-			}
-			}
-	  }
-	}
-
-// ---------------------------------------------------------------------------
-// Sets the default image to the current visual
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoControl::FadeOutLogo(TInt /*aId*/)
-	{
-	CIRStationLogoData* previousLogoData = LogoDataForId( iCurrentId );
-	// Fade the current logo out.
-    if ( previousLogoData && previousLogoData->Visual() )
-        {
-        // Station logo.
-        iFadeOut=ETrue;
-        FadeOutCurrentLogo( *previousLogoData->Visual() );
-        }
-	 iCurrentId=KTwo;
-	}
--- a/internetradio2.0/uicontrolssrc/irstationlogodata.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  Data for single station logo
-*
-*/
-
-
-#include <alf/alfenv.h>
-#include <alf/alfevent.h>
-#include <alf/alfimagevisual.h>
-#include <alf/alftexture.h>
-#include "irdebug.h"
-
-#include "irstationlogodata.h"
-
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoData::CIRStationLogoData( TInt aId, const TDesC8& aRawData ) : 
-    iData( aRawData ),    
-    iId( aId ), 
-    iTextureId( KErrNotFound )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::ConstructL()
-    {
- 	//TO DO :: The line can be removed in future nad written to fix
-	return;
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoData* CIRStationLogoData::NewLC( TInt aId, const TDesC8& aRawData )
-    {
-    CIRStationLogoData* self = new( ELeave ) CIRStationLogoData( aId, aRawData );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRStationLogoData::~CIRStationLogoData()
-    {
-    DestroyVisual();
-    DestroyTexture();
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the raw data
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::SetRawData( const TDesC8& aRawData )
-    {
-    iData.Set( aRawData );
-    }
-
-// ---------------------------------------------------------------------------
-// Provides the raw data
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CIRStationLogoData::RawData() const
-    {
-    return iData;
-    }
-
-// ---------------------------------------------------------------------------
-// Updates the texture
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::UpdateTextureL( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoData::UpdateTextureL()");
-    DestroyTexture();
-    iBitmap = aBitmap;
-    iMask = aMask;
-    iTexture = &CAlfEnv::Static()->TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId, 
-    								this, EAlfTextureFlagRetainResolution );
-    }
-
-// ---------------------------------------------------------------------------
-// Destroys the texture
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::DestroyTexture()
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoData::DestroyTexture()");
-    if( iTextureId != KErrNotFound )
-        {
-        CAlfEnv::Static()->TextureManager().UnloadTexture( iTextureId );
-        }
-    delete iTexture;
-    iTexture = NULL;
-    
-    delete iBitmap;
-    iBitmap = NULL;
-    delete iMask;
-    iMask = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the visual for this logo data
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::SetVisual( CAlfImageVisual* aVisual )
-    {
-    DestroyVisual();
-    iVisual = aVisual;
-    }
-
-// ---------------------------------------------------------------------------
-// Provides the visual
-// ---------------------------------------------------------------------------
-//
-CAlfImageVisual* CIRStationLogoData::Visual()
-    {
-    return iVisual;
-    }
-
-// ---------------------------------------------------------------------------
-// Destroys the visual
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::DestroyVisual()
-    {
-    IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoData::DestroyVisual()");
-    if( iVisual )
-        {
-        iVisual->RemoveAndDestroyAllD();
-        }
-    iVisual = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Provides the texture
-// ---------------------------------------------------------------------------
-//
-CAlfTexture* CIRStationLogoData::Texture()
-    {
-    return iTexture;
-    }
-
-// ---------------------------------------------------------------------------
-// Provides the ID
-// ---------------------------------------------------------------------------
-//
-TInt CIRStationLogoData::Id() const 
-    {
-    return iId;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MAlfBitmapProvider.
-// Provides the bitmap for the texture
-// ---------------------------------------------------------------------------
-//
-void CIRStationLogoData::ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMaskBitmap)
-    {
-    IRLOG_DEBUG2(" *** S60VisualRadio -- CIRStationLogoData::ProvideBitmapL(aId=%d)", aId);
-    iTextureId = aId;
-    // Ownership is transfered so the members are NULLED
-    aBitmap = iBitmap;
-    iBitmap = NULL;
-    aMaskBitmap = iMask;
-    iMask = NULL;
-
-	return;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MAlfEventHandler.
-// Handles the Alf events
-// ---------------------------------------------------------------------------
-//
-TBool CIRStationLogoData::OfferEventL( const TAlfEvent& aEvent )
-    {
-    TBool eventHandled( EFalse );
-    if( aEvent.IsCustomEvent() && aEvent.CustomParameter() == EIRCustomEventLogoFadeOutComplete )
-        {
-        IRLOG_DEBUG(" *** S60VisualRadio -- CIRStationLogoData::OfferEventL() -- deleting visual and texture");
-        DestroyVisual();
-        DestroyTexture();
-        eventHandled = ETrue;
-        }
-
-    return eventHandled;
-    }
--- a/internetradio2.0/xmlparserinc/irparserobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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 MIRPARSEROBSERVER
-#define MIRPARSEROBSERVER
-
-#include <e32def.h>
-
-class MIRParserObserver
-	{
-public:
-    /**
-    * Function : ParseError
-    * Called on Parser Error
-    */
-    virtual void ParseError( TInt aErrorCode ) = 0;
-    
-    /**
-    * Function : ParsedStructureL
-    * called for parsed result
-    */    
-    virtual void ParsedStructureL(TInt aChoice) = 0;
-   };
-
-#endif //MIRPARSEROBSERVER
--- a/internetradio2.0/xmlparserinc/irxmlcontenthandler.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +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 IRXMLCONTENTHANDLER_H
-#define IRXMLCONTENTHANDLER_H
-
-#include <contenthandler.h>
-
-class CIRAdvertisement;
-class CIRBrowseCatagoryItems;
-class CIRBrowseChannelItems;
-class CIRCacheMgmt;
-class CIRHttpResponseData;
-class CIRIsdsPreset;
-class CIROTAUpdate;
-class MIRCacheObserver;
-class MIRParserObserver;
-
-namespace Xml
-    {
-    class CParser;
-    }
-
-//constant declaration   
-_LIT8(KFile,"text/xml");    
-const TInt KSessionLogResponse = 5;
-
-using namespace Xml;
-
-/**
-* Parse data from xml file
-*
-* @code 
-*
-* classA* ParserObserver;//class classA : public MIRParserObserver
-* classB* CacheObserver;//class classB : public MIRCacheObserver
-* CIRHttpResponseData* ResponseHeader;
-* CIRHttpResponseData* parser = CIRXMLContentHandler::NewL (*ParserObserver,*CacheObserver); 
-* parser->ParseXmlL(FilePath,CachePath,ResponseHeader);
-*
-* @endcode
-*
-*/
-
-class CIRXMLContentHandler : public CBase,
-                        public MContentHandler
-    {
- public:             
-    /**
-    * Gets the Filepath of the XML file
-    * @param aFilePath Contains the filepath of the file
-    * @return ErrorCode if the file cannot be opened
-    */
-	IMPORT_C void ParseXmlL(const TDesC& aFilePath, const TDesC& aCachePath,
-					   const CIRHttpResponseData& aResponseHeaders);
-
-    /**
-    * Default Constructor
-    * @param aObserver Contains the reference to the MClass Observer
-    */    
-    IMPORT_C static CIRXMLContentHandler* NewL 
-    (MIRParserObserver &aObserver, MIRCacheObserver &aCacheObserver);       
-    /**
-    * Destructing the object
-    */  
-    ~CIRXMLContentHandler();
-    /**
-    * This method is a callback to indicate the start of the document
-    * @param aDocParam Specifies the various parameters of the document
-    * @param aErrorCode KErrNone if successfull. 
-    * @return None
-    */         
-    virtual void OnStartDocumentL(const RDocumentParameters &aDocParam,
-    	 TInt aErrorCode);
-    /**
-    * This method is a callback to indicate the end of the document
-    * @param aErrorCode KErrNone if successfull. 
-    * @return None
-    */                  
-    virtual void OnEndDocumentL(TInt aErrorCode);
-    /**
-    * This method is a callback to indicate an element has been parsed. 
-    * @param aElement is a handle to the element's details. 
-    * @param aAttributes contains the attributes for the element
-    * @param aErrorCode KErrNone if successfull. 
-    */    
-    virtual void OnStartElementL(const RTagInfo &aElement, 
-    	const RAttributeArray &aAttributes, TInt aErrorCode);
-    /**
-    * This method is a callback to indicate the end of the element has been reached. 
-    * @param aElement is a handle to the element's details. 
-    * @param aErrorCode KErrNone if successfull. 
-    */   
-    virtual void OnEndElementL(const RTagInfo &aElement, TInt aErrorCode);
-    /**
-    * This method is a callback that sends the content of the element.The data may be sent in chunks
-    * @param aBytes is the raw content data for the element. 
-    * @param aErrorCode KErrNone if successfull. 
-    */  
-    virtual void OnContentL(const TDesC8 &aBytes, TInt aErrorCode);
-    /**
-    * This method is a notification of the beginning of the scope of a prefix-URI Namespace mapping.
-    * @param aPrefix is the Namespace prefix being declared 
-    * @param aUri is the Namespace URI the prefix is mapped to
-    * @param aErrorCode KErrNone if successfull. 
-    */  
-    virtual void OnStartPrefixMappingL(const RString &aPrefix, 
-    	const RString &aUri, TInt aErrorCode);
-    /**
-    * This method is a notification of the end of the scope of a prefix-URI mapping
-    * @param aPrefix is the Namespace prefix that was mapped. 
-    * @param aErrorCode KErrNone if successfull. 
-    */  
-    virtual void OnEndPrefixMappingL(const RString &aPrefix, TInt aErrorCode);
-    /**
-    * This method is a notification of ignorable whitespace in element content. 
-    * @param aBytes are the ignored bytes from the document being parsed.. 
-    * @param aErrorCode KErrNone if successfull. 
-    */  
-    virtual void OnIgnorableWhiteSpaceL(const TDesC8 &aBytes, TInt aErrorCode);
-    /**
-    * This method is a notification of a skipped entity
-    * @param aName is the name of the skipped entity. 
-    * @param aErrorCode KErrNone if successfull. 
-    */ 
-    virtual void OnSkippedEntityL(const RString &aName, TInt aErrorCode);
-    /**
-    * This method is a receive notification of a processing instruction.
-    * @param aTarget is the processing instruction target. 
-    * @param aData is the processing instruction data. If empty none was supplied.. 
-    * @param aErrorCode KErrNone if successfull. 
-    */ 
-    virtual void OnProcessingInstructionL(const TDesC8 &aTarget, 
-    	const TDesC8 &aData, TInt aErrorCode);
-    /**
-    * This method indicates an error has occurred.
-    * @param aErrorCode contains the errorcode. 
-    */ 
-    virtual void OnError(TInt aErrorCode);
-    /**
-    * This method obtains the interface matching the specified uid. 
-    * @param aUid the uid identifying the required interface 
-    * @return 0 if no interface matching the uid is found. Otherwise, the this pointer cast to that interface
-    */ 
-    virtual TAny *GetExtendedInterface(const TInt32 aUid); 
-    /**
-    * This method maps the errorcode
-    * @param aError conatins the errorcode
-    * @return the type of the error
-    */ 
-    TInt ParseError(TInt aError);
-    /**
-    * This method stringpool handle
-    * @param aError conatins the errorcode
-    * @return the type of the error
-    */ 
-    RStringPool& StringPool ();
-    
-    void ResetValues();
-
-protected:
-    
-    /**
-    * Default Constructor
-    * @param aObserver Contains the reference to the MClass Observer
-    */  
-    CIRXMLContentHandler(MIRParserObserver &aObserver,MIRCacheObserver &aCacheObserver);
-
-    /**
-    * Two-Phase Constructor
-    */
-    void ConstructL();
-    
-   private :
-    
-    // Buffer for the URL
-    HBufC* iBufGetOperation;
-    
-    // Buffer for Size
-    HBufC* iSize;  
-  
-    // Count of the bitrates
-    TBool iIRID;
-
-    TInt iBitrateCounter;   
-    
-    // Indicating for Channels/Preset
-    TInt iFlag;
-    
-    // Indicating for Channels
-    TInt iChannelFlag;
-    
-    // Bool Value to indicate the class
-    TBool iPresets;
-    TBool iCategories;
-    TBool iCat;
-    TBool iChannels;
-    TBool iChan;
-    TBool iAdvertisement;
-    TBool iOTAUpdate;
-	TBool iTimeStamp; //checks the header has a time stamp
-    TInt  iEOD;
-    // Pointer to the PresetData
-    CIRIsdsPreset *iPreset;
-    
-    // Pointer to the CategoryData
-    CIRBrowseCatagoryItems *iCategory;
-    
-    // Pointer to the ChannelData
-    CIRBrowseChannelItems *iChannel;
-    
-    // Pointer to the Advertisement
-    
-    CIRAdvertisement *iAdv;
-    
-    //! An Handle to Stringpool
-      
-    RStringPool    iStringPool;
-    
-    //! Reference to the CallBack Class
-    
-    MIRParserObserver& iParseObserver;
-    
-    CParser* iParser;
-
-    //Caching 
-    CIRCacheMgmt *iCache;
-    
-    MIRCacheObserver &iCacheObserver;
-    
-    TBuf<256> iFileToCache;
-
-// For Advertisement
-    TBool iAdvts;
-    TBool iAdvertisementTagFlag;
-    HBufC*   iUrlContentForAds;  //to store the content of the tag
-
-
-
-public:
-
-    // Count of the bitrates
-    
-    TBuf<30>      iRID;
-
-    // Array of Pointers to PresetClass
-    
-    CArrayPtrFlat<CIRIsdsPreset>* iPtrPreset;
-    
-    // Array of Pointers to CategoryClass
-    
-    CArrayPtrFlat<CIRBrowseCatagoryItems>* iPtrCategory;
-    
-    // Array of Pointers to BrowseCategoryClass
-    
-    CArrayPtrFlat<CIRBrowseChannelItems>* iPtrChannel;
-    // Pointer to the OTAUpdate
-    
-    CIROTAUpdate *iOTA;
-    
-    
-      
-};
-
-#endif //IRXMLCONTENTHANDLER_H
--- a/internetradio2.0/xmlparserinc/irxmlelements.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +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 IRXMLELEMENTS_H
-#define IRXMLELEMENTS_H
-
-#include <e32cmn.h>
-#include <stringtablesupport.h>
-
-//Literals to instantiate the class
- _STLIT8(KGetOp,"getOperation");
- _LIT8(KCatGenre,"genres");
- _STLIT8(KCatLang,"languages");
- _STLIT8(KCatCountry,"countries");
- _STLIT8(KChannels,"channels");
- _STLIT8(KPresets,"presets");
- _STLIT8(KIRID,"irid");
- _STLIT8(KTimeStamp,"timestamp"); 
- _STLIT8(KIRVersion,"iRAPPVersion"); 
- _STLIT8(KAdv,"advertisement");
- _STLIT8(KPreset,"preset");
- _STLIT8(KServers,"servers"); 
- _STLIT8(KGenre,"genre");
- _STLIT8(KLanguage,"language");
- _STLIT8(KCountry,"country");
- _STLIT8(KChannel,"channel");
- _STLIT8(KAd,"ad");
- _STLIT8(KAdvertisements,"advertisements");
- _STLIT8(KBanner,"banner");
- _STLIT8(KClickthroughUrl,"clickthrough-url");
-
-
-//! Enum for the attributes
-enum TIRXMLElement
-    {
-     EGetOperation,
-     
-    // List of Genres/Language/Contry
-    EName,
-    EID,
-    ESize,
-    
-    //! Channels 
-    EShortDesC,
-    EBitrateValue,
-    
-    // Preset
-    ESdsID,
-    ELangCode,
-    ELang,
-    ECountryCode,
-    ECountry,
-    ELastUpdated,
-    EDesc,
-    EImgURL,
-    EAdvImgURL,
-    EAdvInUse,
-    EGenreID,
-    EURL,
-    EMusicStoreEnabled,
-    EBitrate,
-    
-    // Log Usage
-    EIRID,
-    
-    // OTA Update
-    EVersion,
-    EUpdateInterval,
-    EUpdateMethod,
-    
-    //Advertisement
-    EInUse,
-    EUsageVisibleTimes,
-    EVisibleTime,
-    /**
-    Unknown Element
-    */    
-    EElementIDUnknown,
-     }; 
- 
-class RStringPool;
-
-/**
-* This class handles the XML string pool
-* not accessible outside the dll
-*/
-class TIRXMLElementFormat
-    {
- public : 
-    /**
-    * Creates an initialised string pool with no pre-loaded string tables.
-    * @param aStringPool Stringpool
-    */
-    static void OpenStringPoolL(RStringPool& aStringPool);
-    /**
-    * The ElementId of the element from the StringPool
-    * @param aElement the element name to be searched in the pool
-    * @param aStringPool stringpool reference
-    * @return the enum for the element
-    */
-    static TIRXMLElement GetElementIdL(const TDesC8& aElement, 
-                                const RStringPool& aStringPool);
-    /**
-    * Closes the StringPool
-    * @param aStringPool Stringpool
-    */                                     
-    static void CloseStringPoolL(RStringPool& aStringPool);                                    
-    }; 
- 
- 
-#endif //IRXMLELEMENTS_H
--- a/internetradio2.0/xmlparsersrc/irxmlcontenthandler.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1025 +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 <f32file.h>
-#include <parser.h>
-#include <utf.h>
-
-#include "iradvertisement.h"
-#include "irbrowsecatagoryitems.h"
-#include "irbrowsechannelitems.h"
-#include "ircachemgmt.h"
-#include "irdebug.h"
-#include "irisdspreset.h"
-#include "irparserobserver.h"
-#include "irotaupdate.h"
-#include "irxmlcontenthandler.h"
-#include "irxmlelements.h"
-
-const TInt KLargeArraySize = 256;
-const TUint8 KAttributeBufferSize = 100;
-const TUint8 KBitRateCounterValue0 = 0;
-const TUint8 KBitRateCounterValue1 = 1;
-const TUint8 KBitRateCounterValue2 = 2;
-const TUint8 KCategoriesItemSelect = 0;
-const TUint8 KChannelItemSelect = 1;
-const TUint8 KPresetItemSelect = 2;
-const TUint8 KOTAUpdateItemSelect = 3;
-const TUint8 KIRIDSelect = 4;
-const TUint8 KTen = 10; 
-
-// ---------------------------------------------------------------------------
-// Gets the Filepath of the XML file
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRXMLContentHandler::ParseXmlL(const TDesC& aFilePath,
-  											   const TDesC& aCachePath,
-											   const CIRHttpResponseData& aResponseHeaders)
-    { 
-    IRLOG_DEBUG( "CIRXMLContentHandler::ParseXmlL" );
-    iFileToCache.Zero();
-    iFileToCache.Copy(aCachePath);     
-     
-    RFs fs;
-    CleanupClosePushL(fs);
-    User::LeaveIfError(fs.Connect());           
-    Xml::ParseL(*iParser,fs,aFilePath);
-    CleanupStack::PopAndDestroy(&fs);
-
-   
-    //! Error in the Document
-    if(iEOD != KErrNone )
-		{
-        ResetValues();
-        iParseObserver.ParseError( iEOD ); 
-		}
-    else
-		{    
-		if(iCategories)
-			{
-			TRAP_IGNORE(iCache->CacheCategoryItemsL(*iPtrCategory, 
-				iFileToCache ,aResponseHeaders))
-            ResetValues();    
-            iParseObserver.ParsedStructureL(KCategoriesItemSelect);
-			}
-    
-		if(iChan)            
-			{        
-            if(iFileToCache.Length()!=0)
-				{
-				TRAP_IGNORE(iCache->CacheChannelItemsL(*iPtrChannel, 
-					iFileToCache ,aResponseHeaders))
-				}
-            ResetValues();
-            iParseObserver.ParsedStructureL(KChannelItemSelect);
-			}
-    
-		if(iPresets)
-			{
-			if( 0 < iPtrPreset->Count() )
-				{
-				TRAP_IGNORE(iCache->CachePresetItemL(*iPtrPreset,
-					iFileToCache,aResponseHeaders))
-	            ResetValues();
-	            iParseObserver.ParsedStructureL(KPresetItemSelect);     
-				}			   
-			}  
-		if(iOTAUpdate)
-			{
-			TRAP_IGNORE(iCache->CacheOtaInfoL(*iOTA,
-					iFileToCache,aResponseHeaders))
-            ResetValues();
-            iParseObserver.ParsedStructureL(KOTAUpdateItemSelect);
-			} 
-		if(iIRID)
-			{
-            ResetValues();
-            iParseObserver.ParsedStructureL(KIRIDSelect);
-			}      
-		if( iTimeStamp )
-			{
-			//session log response is obtained
-			ResetValues();
-			iParseObserver.ParsedStructureL(KSessionLogResponse);		
-			}
-		}
-    IRLOG_DEBUG( "CIRXMLContentHandler::ParseXmlL - Exiting." );		
-	}  
-
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler ::NewL
-// Constructor
-// ---------------------------------------------------------------------------
-// 
-EXPORT_C CIRXMLContentHandler* CIRXMLContentHandler ::NewL(MIRParserObserver 
-	&aObserver,MIRCacheObserver &aCacheObserver)
-    {    
-    IRLOG_DEBUG( "CIRXMLContentHandler::NewL" );
-    CIRXMLContentHandler* self = new (ELeave) CIRXMLContentHandler(aObserver,
-    	aCacheObserver);    
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    IRLOG_DEBUG( "CIRXMLContentHandler::NewL - Exiting." );
-    return(self); 
-    }
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler ::CIRXMLContentHandler
-// Default Constructor
-// ---------------------------------------------------------------------------
-//
-CIRXMLContentHandler ::CIRXMLContentHandler(MIRParserObserver &aObserver,
-	MIRCacheObserver &aCacheObserver):iParseObserver(aObserver),
-	iCacheObserver(aCacheObserver)
-    {
-    IRLOG_DEBUG( "CIRXMLContentHandler::CIRXMLContentHandler" );
-    }
-    
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler ::ConstructL
-// Two-Phase Constructor
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler ::ConstructL()
-    {
-    IRLOG_DEBUG( "CIRXMLContentHandler::ConstructL" );
-    ResetValues();    
-    TIRXMLElementFormat::OpenStringPoolL(iStringPool);
-    
-    iPtrCategory = new (ELeave) CArrayPtrFlat<CIRBrowseCatagoryItems>(
-    	KLargeArraySize);
-    iPtrChannel = new (ELeave) CArrayPtrFlat<CIRBrowseChannelItems>(
-    	KLargeArraySize);
-    iPtrPreset = new (ELeave) CArrayPtrFlat<CIRIsdsPreset>(KLargeArraySize);
-    
-    iParser = CParser::NewL(KFile,*this);
-    iCache = CIRCacheMgmt::OpenL(iCacheObserver);
-
-    iBufGetOperation = HBufC::NewL(0);
-    iSize = HBufC::NewL(0);
-    IRLOG_DEBUG( "CIRXMLContentHandler::ConstructL - Exiting." );
-    }
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::~CIRXMLContentHandler()
-// Destructing the object
-// ---------------------------------------------------------------------------
-//
-CIRXMLContentHandler::~CIRXMLContentHandler()
-    {    
-	IRLOG_DEBUG( "CIRXMLContentHandler::~CIRXMLContentHandler." );           
-	TRAP_IGNORE(TIRXMLElementFormat::CloseStringPoolL(iStringPool))
-	delete iParser;
-	if(iUrlContentForAds)
-		{
-		delete iUrlContentForAds;
-    	iUrlContentForAds = NULL;
-		}
-	if(iPtrPreset)
-		{
-	    iPtrPreset->ResetAndDestroy();    
-		}
-    delete iPtrPreset;
-	if(iPtrCategory)
-	    {
-	    iPtrCategory->ResetAndDestroy();
-		}       
-    delete iPtrCategory;
-	if(iPtrChannel)
-	    {
-	    iPtrChannel->ResetAndDestroy();
-	    }
-    delete iPtrChannel;
-
-    delete iOTA;
-    delete iAdv;
-
-    if (iCache)
-        {
-        iCache->Close();
-        }
-
-    delete iPreset;
-    delete iCategory;
-    delete iChannel;
-    delete iBufGetOperation;
-    delete iSize;
-    
-	IRLOG_DEBUG( "CIRXMLContentHandler::~CIRXMLContentHandler - Exiting." );       
-	}
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::ResetValues
-// Reseting the Values
-// ---------------------------------------------------------------------------
-//
-
-void CIRXMLContentHandler::ResetValues()
-	{
-    IRLOG_DEBUG( "CIRXMLContentHandler::ResetValues" );
-    iFlag = 1;
-    iPresets = EFalse;
-    iCategories=EFalse;
-    iCat=EFalse;
-    iChannels=EFalse;
-    iChan=EFalse;
-    iAdvertisement=EFalse;
-    iOTAUpdate=EFalse;
-    iIRID = EFalse;
-    iTimeStamp = EFalse;
-    iChannel = NULL;
-    iCategory = NULL;
-    iAdvts = EFalse;
-	iAdvertisementTagFlag = EFalse;   
-    IRLOG_DEBUG( "CIRXMLContentHandler::ResetValues - Exiting." );
-	}    
- 
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler:: OnStartDocumentL
-// This method is a callback to indicate the start of the document
-// ---------------------------------------------------------------------------
-//   
-void CIRXMLContentHandler:: OnStartDocumentL(const Xml::RDocumentParameters& 
-	/*aDocParam*/ , TInt /*aErrorCode*/ )
-    {                
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartDocumentL" );
-    iEOD = KErrNone;
-    }
-    
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::OnEndDocumentL
-// This method is a callback to indicate the end of the document
-// ---------------------------------------------------------------------------
-// 
-void CIRXMLContentHandler::OnEndDocumentL(TInt /*aErrorCode*/)
-    {
-    //No Implementation
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndDocumentL" );
-	return;
-    }
- 
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::OnStartElementL
-// This method is a callback to indicate an element has been parsed. 
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler::OnStartElementL(const Xml::RTagInfo &aElement, 
-			const Xml::RAttributeArray &aAttributes, TInt /*aErrorCode*/)
-    {     
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnStartElementL" );     
-    //Compare the element name to identify the type - //TO DO String Pool        
-    TInt genre = (aElement.LocalName().DesC()).Compare(KGenre);
-    TInt lang = (aElement.LocalName().DesC()).Compare(KLanguage);
-    TInt country = (aElement.LocalName().DesC()).Compare(KCountry);
-    TInt channel = (aElement.LocalName().DesC()).Compare(KChannel);
-    TInt preset = (aElement.LocalName().DesC()).Compare(KPreset);
-    TInt advertisements = (aElement.LocalName().DesC()).Compare(KAdvertisements);
-    TInt ad = (aElement.LocalName().DesC()).Compare(KAd);
-
-    TInt genres = (aElement.LocalName().DesC()).Compare(KCatGenre);
-    TInt countries = (aElement.LocalName().DesC()).Compare(KCatCountry);
-    TInt languages = (aElement.LocalName().DesC()).Compare(KCatLang);
-    TInt channels = (aElement.LocalName().DesC()).Compare(KChannels);
-    TInt presets = (aElement.LocalName().DesC()).Compare(KPresets);
-
-    TInt IRID = (aElement.LocalName().DesC()).Compare(KIRID);
-    TInt timestamp = (aElement.LocalName().DesC()).Compare(KTimeStamp);
-    TInt irappversion = (aElement.LocalName().DesC()).Compare(KIRVersion);
-    TInt adv = (aElement.LocalName().DesC()).Compare(KAdv);
-    TInt banner = (aElement.LocalName().DesC()).Compare(KBanner);
-
-   
-    if(iUrlContentForAds)
-		{
-		delete(iUrlContentForAds);
-		iUrlContentForAds = NULL;
-		}
-
-    TInt bufSize(KTen);
-    iUrlContentForAds = HBufC::NewL( bufSize );//this is because, the OnContentL method gives chunck by chunck
-
-	if(ad == 0)
-        {   
-    	//We want to take the first Ad only so if an Ad has already been created
-    	//iChannel and iCategory will not be NULL hence the new Ad should not be added
-    	if( !iChannel && !iCategory )
-    	{
-   			iChannel = CIRBrowseChannelItems::NewL();  
-			iCategory = CIRBrowseCatagoryItems::NewL();  
-			
-    	}
-		}
-    if(advertisements == 0 )
-        { 
-        iAdvertisementTagFlag = ETrue;   
-        }
-     if(iAdvertisementTagFlag && banner == 0)
-		{
-		iAdvts = ETrue;
-		}
-    // Creates the instance of the class Browse by Genre/Language/Country
-    if(iFlag)
-        {
-        if(genre == 0 || lang == 0 || country == 0)
-			{
-			//If there are ads then destroy the list and put the ads
-			//as ads will the first in the xml
-			if((iAdvts)  && (iCategory))
-				{	
-				iPtrCategory->ResetAndDestroy();
-				iPtrCategory->AppendL(iCategory);
-				iCategory = NULL;
-				delete iChannel; 
-				iChannel = NULL;
-				iAdvts = EFalse;
-				}
-            iCategory = CIRBrowseCatagoryItems::NewL();
-            iCat = ETrue;                
-            }
-        }
-    if(iFlag)
-        {
-		// In case of browse by genres, country and lanaguages
-         if(genres == 0 || countries == 0 || languages == 0)
-            { 
-            if(iAdvts == EFalse)
-            	{
-            	iPtrCategory->ResetAndDestroy();
-            	}
-            if(genres == 0)
-				{
-				iFileToCache.Zero();
-				iFileToCache.Copy(KCatGenre);
-                }
-			if(countries == 0)                        
-				{
-				iFileToCache.Zero();
-				iFileToCache.Copy(KCatCountry);
-				}
-			if(languages == 0)                        
-				{      
-				iFileToCache.Zero();
-				iFileToCache.Copy(KCatLang);
-				}
-
-	        iCategories = ETrue;                           
-            }
-        }
-    // Creates the instance of the class Channel
-    if(channel == 0)
-        {
-        	//If there are ads then destroy the list and put the ads
-			//as ads will the first in the xml
-			if((iAdvts)   && (iChannel)) 
-			{	iPtrChannel->AppendL(iChannel);
-				iChannel = NULL;
-				delete iCategory; 
-				iCategory = NULL;
-				iAdvts = EFalse;
-			}
-		iChannel = CIRBrowseChannelItems::NewL();    
-		iChannels = ETrue;
-		iBitrateCounter = 0;
-        }
-    if(channels == 0 )
-        { 
-        iPtrChannel->ResetAndDestroy();   
-        iChan = ETrue;
-		iChannelFlag = 0;    
-        }
-    // Creates the instance of the class for Preset Data
-    if(preset == 0)
-        {    
-         iPreset = CIRIsdsPreset::NewL();    
-         iPresets = ETrue;           
-        }
-    if(presets == 0)
-        {     
-        iPtrPreset->ResetAndDestroy();  
-        iFlag = 0;
-        }
-    if(IRID == 0)
-        {
-        iIRID = ETrue;    
-        }
-    if(timestamp == 0)
-        {
-		//time stamp is obtained when session log is obtained in isds 
-		iTimeStamp = ETrue;
-        }
-    if(irappversion == 0)
-        {
-		iOTA = CIROTAUpdate::NewL();
-		iOTAUpdate = ETrue;
-        }
-    if(adv == 0)
-        {
-		iAdv = CIRAdvertisement::NewL();
-		iAdvertisement = ETrue;
-        }
-    TBuf<KAttributeBufferSize> BufParam1;
-    TBuf<KAttributeBufferSize> BufParam2; 
-    
-    // Parses the attributes and the value of the element
-     TInt nAttributes = aAttributes.Count();
-     for (TInt indexofattribute = 0; indexofattribute < nAttributes; 
-     											++indexofattribute )
-         {
-		const RAttribute& attribute = aAttributes[indexofattribute];
-		const RTagInfo& nameInfo = attribute.Attribute();
-	   
-		//!Gets the elementId from the Pool for the specified attributename
-		TIRXMLElement ATTelementId = TIRXMLElementFormat::GetElementIdL(
-								(nameInfo.LocalName().DesC()),iStringPool); 
-	   
-        HBufC* converted = CnvUtfConverter::ConvertToUnicodeFromUtf8L( attribute.Value().DesC() );
-		CleanupStack::PushL(converted);
-
-        switch(ATTelementId) 
-			{
-            case EGetOperation: 
-				{
-				delete iBufGetOperation;
-				iBufGetOperation = NULL;
-				iBufGetOperation = converted->Des().AllocL();
-                }
-                break;
-                                   
-            case EName:
-				{
-				//if name is parsed
-				if(iCat)
-					{                                                                    
-					//if category
-					iCategory->SetGetOperation(*iBufGetOperation);                                          
-					BufParam1.Copy(*converted);                
-					}
-			   if(iChannels)
-					{
-				   //if channel
-					iChannel->SetGetOperationL(*iBufGetOperation);
-					iChannel->SetSize(*iSize);
-					BufParam1.Copy(*converted);
-					} 
-				if(iPresets)
-					{
-					if((aElement.LocalName().DesC()) == KPreset)
-						{
-						//for preset
-						iPreset->SetName(*converted);
-						}                                
-					BufParam1.Copy(*converted);
-					}                        
-                 }
-                 break;    
-                                     
-            case EID:
-                {
-			    //getting id
-                if(iCat)
-				    {
-				    //for category
-				    iCategory->SetTextL(BufParam1,*converted);    
-				    }
-                   
-                if(iChannels)
-				    {
-				    //for channel
-					BufParam2.Copy(*converted);          
-				    }     
-				if(iPresets)
-					{
-				    //for preset
-					iPreset->SetGenreInfo(*converted,BufParam1);
-					}  
-				if(iIRID)
-					{
-				    //ir id
-					iRID.Copy(*converted);
-					}
-                }
-                break;
-                     
-            case ESize: 
-                {
-                delete iSize;
-			    iSize = NULL;
-			    iSize = converted->Des().AllocL();
-				if(iCat)
-				    {
-					iCategory->SetSize(*iSize);
-					}                       
-                }
-                break;
-                     
-              case EShortDesC:
-                    {
-				    //getting short description
-				    if(iChannels)              
-						{
-						iChannel->SetTextL(BufParam1,BufParam2,*converted);
-						}
-                    if(iPresets)
-                        {
-                        iPreset->SetShortDesc(*converted);
-                        }             
-                    }
-                    break;
-                      
-               case EBitrateValue:
-                    {
-				    //parsing bit rate
-                    if(iChannels)
-                        {
-                        if(iBitrateCounter == KBitRateCounterValue0)
-							{
-							 iChannel->SetBitrate(*converted);
-							 BufParam1.Copy(*converted);
-							}
-                                  
-						if(iBitrateCounter == KBitRateCounterValue1)
-							 {
-							 iChannel->SetBitrate(BufParam1,*converted);     
-							 BufParam2.Copy(*converted);
-							 }
-                                 
-                        if(iBitrateCounter == KBitRateCounterValue2)
-							 {
-							  iChannel->SetBitrate(BufParam1,BufParam2,*converted);
-							 }
-                                 
-                        iBitrateCounter++;
-                        }
-                    }                       
-                    break;
-                     
-               case ESdsID:
-                    {                   
-                    if(iPresets)
-						{
-						iPreset->SetId(*converted);
-                        }                                         
-                    }
-                    break;
-                       
-               case ELangCode:
-                    {
-				    //language code
-                    if(iPresets)
-						{
-                        iPreset->SetLangCode(*converted);
-                        }                
-                    }
-                    break;
-                       
-               case ELang:
-                    {                       
-				    //language
-                    if(iPresets)
-						{
-                        iPreset->SetLang(*converted);    
-                        }
-                    }
-                    break;
-                       
-               case ECountryCode:
-                    {
-				    //country code
-				    if(iPresets)
-					    {
-						iPreset->SetCountryCode(*converted);    
-					    }
-                    }
-                    break;
-                
-               case ECountry:
-                    {
-			        //country
-                    if(iPresets)
-						{
-                        iPreset->SetCountryName(*converted);    
-                        }
-                    }
-                    break;
-                       
-               case ELastUpdated:
-                    {
-				    //last modified time
-                    if(iPresets)
-                        {
-                        iPreset->SetLastModifiedTime(*converted);    
-                        }
-                    }
-                    break;
-                       
-               case EDesc:
-                    {
-				    //description
-                    if(iPresets)
-                        {
-						iPreset->SetDescription(*converted);
-                        }
-                    }
-                    break;
-                       
-               case EImgURL:
-                    {
-				    //image url
-                    if(iChannels)                  
-						{
-                        iChannel->SetImageUrl(*converted);
-                        }
-                    if(iPresets)
-					    {
-						iPreset->SetImgUrl(*converted);    
-					    }
-                    }
-                    break;
-                       
-               case EAdvImgURL:
-                    {
-				    //advertisement url
-					if(iPresets)
-						{
-						iPreset->SetAdvertisementUrl(*converted);    
-						}
-                    }
-                    break;
-                      
-               case EAdvInUse:
-                    {
-				    //advertisement in use
-				    if(iPresets)
-					    {
-					    iPreset->SetAdvertisementInUse(*converted);    
-					    }
-                    }
-                    break;
-                       
-               case EGenreID:
-                    {
-				    //genre id
-                    if(iPresets)
-						{
-                        iPreset->SetGenreInfo(BufParam1,*converted);    
-                        }
-                    }
-                    break;
-                      
-               case EURL:
-                    {
-				    //url
-                    if(iPresets)
-						{
-                        BufParam2.Copy(*converted);    
-                        }
-                    if(iAdvertisement)
-                        {
-                        iAdv->SetURL(*converted);
-                        } 
-                    }
-                    break;
-                    
-                case EMusicStoreEnabled:
-                    {                   
-                    if(iPresets)
-						{
-						iPreset->SetMusicStoreStatus(*converted);
-                        }                                         
-                    }
-                    break;     
-                    
-               case EBitrate:
-                    {
-				    //set url
-					if(iPresets)
-						{
-						iPreset->SetUrlL(BufParam1,BufParam2,*converted);
-						}
-                    }
-                    break;
-                       
-               case EIRID:
-                    {
-                    //irid      
-                    }
-                    break;
-                       
-               case EVersion:
-                    {
-				    //for ota update
-                    if(iOTAUpdate)
-						{
-                        iOTA->SetVersion(*converted);
-                        } 
-                    }
-                    break;
-                       
-               case EUpdateInterval:
-                    {
-				    //update interval
-                    if(iOTAUpdate)
-						{
-                        iOTA->SetUpdateInterval(*converted);    
-                        }
-                    }
-                    break;
-                       
-               case EUpdateMethod:
-                    {
-				    //update method
-                    if(iOTAUpdate)
-						{
-                        iOTA->SetUpdateMethod(*converted);    
-                        }
-                    }
-                    break;
-                       
-               case EInUse:
-                    {
-				    //advertisement in use
-                    if(iAdvertisement)
-                        {
-                        iAdv->SetAdvInUse(*converted);
-                        }
-                    }
-                    break;
-                       
-               case EUsageVisibleTimes:
-                    {
-                    if(iAdvertisement)
-                        {
-                        iAdv->SetUsage(*converted);
-                        }
-                    }
-                    break;
-                       
-               case EVisibleTime:
-                    {
-				    //advertisement visible time
-                    if(iAdvertisement)
-						{
-	                    iAdv->SetVisibleTime(*converted);
-                        }
-                    }
-                    break;
-                       
-               case EElementIDUnknown:
-                    {
-				    //unknown
-                    }
-                    break;
-                      
-               default:
-                    {
-                    break;
-                    } 
-            }//End of Switch
-            CleanupStack::PopAndDestroy(converted);
-         } //End of for                    
-   IRLOG_DEBUG( "CIRXMLContentHandler::OnStartElementL - Exiting." );                         
-  }
- 
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::OnEndElementL
-// This method is a callback to indicate the end of the element has been reached. 
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler::OnEndElementL(const RTagInfo &aElement, TInt /*aErrorCode*/)
-    {    
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndElementL" );        
-    if((aElement.LocalName().DesC()) == KPreset)
-        {
-        if ( iPreset->GetUrlCount() > 0 )
-            {
-            // The ownership is transferred to the array.
-            iPtrPreset->AppendL(iPreset); 
-            }
-        else
-            {
-            // If there is not a single URL, we don't let it in.
-            iEOD = KErrCorrupt;
-            delete iPreset;
-            }
-        // Ownership transferred. Remove the pointer.
-        iPreset = NULL; 
-        }
-    if((aElement.LocalName().DesC()) == KBanner)
-	    {
-	    //get the content for the tag "banner"
-	    //assign it to "iBanner" of CIRBrowseChannelItems
-	    if(iUrlContentForAds)
-		    {
-				iChannel->SetBannerUrl(*iUrlContentForAds); 	    	
-				iCategory->SetBannerUrl(*iUrlContentForAds);					
-		    }
-	    }
-	if((aElement.LocalName().DesC()) == KClickthroughUrl)
-	    {
-	    //get the content for the tag "clickthrough-url"
-	    //assign it to "iClickThroughUrl" of CIRBrowseChannelItems 
-	    if(iUrlContentForAds)
-		    {
-	    	iChannel->SetClickThroughUrl(*iUrlContentForAds);		    	
-	    	iCategory->SetClickThroughUrl(*iUrlContentForAds);
-		    }
-	    }
-	    
-	if(iUrlContentForAds)
-       {
-       	delete iUrlContentForAds;
-       	iUrlContentForAds = NULL;
-       	
-       }
-    if(iFlag)
-        {
-        if((aElement.LocalName().DesC()) == KGenre ||
-          (aElement.LocalName().DesC()) == KLanguage || 
-          (aElement.LocalName().DesC()) == KCountry)
-            {         
-            iPtrCategory->AppendL(iCategory);
-            iCategory = NULL;
-            iCat = EFalse;
-            }
-        }
-    
-     if((aElement.LocalName().DesC()) == KChannel)
-        {
-        iPtrChannel->AppendL(iChannel);
-        iChannel = NULL;
-        iChannels = EFalse;         
-        } 
-    //appends the created channel(ad) to the array
-    /*
-    if((aElement.LocalName().DesC()) == KAd)
-        {
-		iPtrChannel->AppendL(iChannel);
-        iChannel = NULL;
-
-        } */
-   
-    if((aElement.LocalName().DesC()) == KServers)
-	{
-        if (iPreset)
-        {
-            iPreset->SetUrlCount();
-        }
-    }               
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnEndElementL - Exiting." );                   
-    }
- 
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler ::OnContentL
-// This method is a callback that sends the content of the element.The data 
-// may be sent in chunks
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler ::OnContentL(const TDesC8 &aBytes, TInt 
-	aErrorCode)
-    { 
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnContentL" );
-    
-    if ( KErrNone == aErrorCode )
-        {
-        
-        
-      	HBufC* buffertmp = HBufC::NewLC( aBytes.Length() + 1 );
-        TPtr buffertmpPtr( buffertmp->Des() );
-        buffertmpPtr.Copy( aBytes );
-		
-
-		TInt tempSize;
-		if(iUrlContentForAds)
-		{
-			tempSize = iUrlContentForAds->Length() + aBytes.Length();
-			iUrlContentForAds = iUrlContentForAds->ReAllocL( tempSize );
-			TPtr bufferPtr( iUrlContentForAds->Des() );
-			bufferPtr.Append(buffertmpPtr);
-		}
-		
-		CleanupStack::PopAndDestroy(buffertmp); // buffertmp
-        } 
-    
-    if ( iOTAUpdate )
-        {
-        HBufC* converted = CnvUtfConverter::ConvertToUnicodeFromUtf8L( aBytes );
-        CleanupStack::PushL( converted );
-        converted->Des().TrimAll();
-        if ( converted->Des().Length() )
-            {                    
-            iOTA->SetOTAUrl( *converted );
-            }
-        CleanupStack::PopAndDestroy( converted );
-        }
-    
-    IRLOG_DEBUG( "CIRXMLContentHandler::OnContentL - Exiting." );        
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler::OnStartPrefixMappingL
-// This method is a notification of the beginning of the scope of a 
-// prefix-URI Namespace mapping.
-// ---------------------------------------------------------------------------
-// 
-void CIRXMLContentHandler::OnStartPrefixMappingL(const RString& /*aPrefix*/, 
-	const RString& /*aUri*/, TInt /*aErrorCode*/)
-	{
-	//No Implementaion    
-	IRLOG_DEBUG( "CIRXMLContentHandler::OnStartPrefixMappingL" );      
-	}  
-      
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: OnEndPrefixMappingL
-// This method is a notification of the end of the scope of a prefix-URI mapping
-// ---------------------------------------------------------------------------
-//  
-void CIRXMLContentHandler :: OnEndPrefixMappingL(const RString& /*aPrefix*/, 
-	TInt /*aErrorCode*/)
-     {
-     //No Implementaion    
-     IRLOG_DEBUG( "CIRXMLContentHandler::OnEndPrefixMappingL" );    
-     }
-     
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: OnIgnorableWhiteSpaceL
-// This method is a notification of ignorable whitespace in element content. 
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler :: OnIgnorableWhiteSpaceL(const TDesC8&  /*aBytes*/, 
-	TInt /*aErrorCode*/)
-     {
-     //No Implementaion        
-     IRLOG_DEBUG( "CIRXMLContentHandler::OnIgnorableWhiteSpaceL" );        
-     }
-     
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: OnSkippedEntityL
-// This method is a notification of a skipped entity
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler :: OnSkippedEntityL(const RString& /*aName*/, 
-	TInt /*aErrorCode*/)
-     {
-     //No Implementaion    
-     IRLOG_DEBUG( "CIRXMLContentHandler::OnSkippedEntityL" );
-     }
-
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: OnProcessingInstructionL
-// This method is a receive notification of a processing instruction.
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler :: OnProcessingInstructionL(const TDesC8& 
-	/*aTarget*/, const TDesC8& /*aData*/, TInt /*aErrorCode*/)
-     {
-      //No Implementaion    
-     IRLOG_DEBUG( "CIRXMLContentHandler::OnProcessingInstructionL" );
-     }
- 
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: OnError
-// This method indicates an error has occurred.
-// ---------------------------------------------------------------------------
-//
-void CIRXMLContentHandler :: OnError(TInt aErrorCode )
-     {
-     iEOD = aErrorCode;         
-     IRLOG_ERROR2( "CIRXMLContentHandler::OnError (%d)", aErrorCode );
-     }
-  
-  
-// ---------------------------------------------------------------------------
-// CIRXMLContentHandler :: GetExtendedInterface
-// This method obtains the interface matching the specified uid. 
-// ---------------------------------------------------------------------------
-//
-TAny* CIRXMLContentHandler :: GetExtendedInterface(const TInt32 /*aUid*/)
-     {
-      //No Implementation
-      IRLOG_DEBUG( "CIRXMLContentHandler::GetExtendedInterface" );
-      return NULL;
-     }
- 
-
-
-GLDEF_C TInt E32Dll() 
-// DLL entry point
-    {
-    return(KErrNone);
-    }
-
-
--- a/internetradio2.0/xmlparsersrc/irxmlelements.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +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 <stringpool.h>
-
-#include "irdebug.h"
-#include "irxmlelements.h"
-
-//Ignores PC Lint Warning 618.
-
-//! Literals for the StringPool
-
-//! Literals for List of genres,languages,countries
- _STLIT8(KName,"name");
- _STLIT8(KID,"id");
- _STLIT8(KSize,"size");
- 
-//!Literals for the List of Channels
- _STLIT8(KShortDesC,"shortDesc");
-
- _STLIT8(KBitrate,"bitrate");
- _STLIT8(KValue,"value");
-//! Literals for the channel 
-
-_STLIT8(KSdsid,"sdsid");
-_STLIT8(KLangCode,"langCode");
-_STLIT8(KLang,"lang");
-_STLIT8(KCountryCode,"countryCode");
-_STLIT8(KLastUpdated,"lastUpdated");
-_STLIT8(KDescription,"description");
-_STLIT8(KImgURL,"imgUrl");
-_STLIT8(KAdvUrl,"advertiseImgUrl");
-_STLIT8(KAdvUse,"advertiseInUse");
-_STLIT8(KGenreId,"genreid");
-_STLIT8(KURL,"url");
-_STLIT8(KMusicStoreEnabled,"musicStoreEnabled");
-//!Literals for the log Usage
-
-_STLIT8(KIRId,"irid"); 
-//! Literals for the OTA Update
-
-_STLIT8(KVersion,"version");
-_STLIT8(KUpdateInterval,"updateInterval");
-_STLIT8(KUpdateMethod,"updateMethod");
-
- //! Literals for Advertisement
-_STLIT8(KInUse,"inUse");
-_STLIT8(KUsageVisibleTimes,"usageVisibleTimes");
-_STLIT8(KVisibleTime,"visibleTime");
- 
-const TInt KNoOfElementInTable = 27;
- 
- //! PoolTable
- const TAny* const IRXMLPoolContent[] =
-    { 
-	(const TAny*)         &KGetOp,    
-	(const TAny*)         &KName,       
-	(const TAny*)         &KID,    
-	(const TAny*)         &KSize,
-	(const TAny*)         &KShortDesC,
-	(const TAny*)         &KValue,        
-	(const TAny*)         &KSdsid,
-	(const TAny*)         &KLangCode,
-	(const TAny*)         &KLang,
-	(const TAny*)         &KCountryCode,
-	(const TAny*)         &KCountry,
-	(const TAny*)         &KLastUpdated,
-	(const TAny*)         &KDescription,
-	(const TAny*)         &KImgURL,
-	(const TAny*)         &KAdvUrl,    
-	(const TAny*)         &KAdvUse,
-	(const TAny*)         &KGenreId,
-	(const TAny*)         &KURL,    
-	(const TAny*)         &KMusicStoreEnabled,    
-	(const TAny*)         &KBitrate,
-	(const TAny*)         &KIRId,
-	(const TAny*)         &KVersion,
-	(const TAny*)         &KUpdateInterval,
-	(const TAny*)         &KUpdateMethod,
-	(const TAny*)          &KInUse,
-	(const TAny*)         &KUsageVisibleTimes,
-	(const TAny*)          &KVisibleTime
-    };
-    
-//! Pointer to a StringTable
-const static TStringTable IRPoolTable = 
-    {
-	KNoOfElementInTable,      
-	&IRXMLPoolContent[0],
-	EFalse
-    };     
-
-
-// ---------------------------------------------------------------------------
-// Creates an initialised string pool with no pre-loaded string tables.
-// ---------------------------------------------------------------------------
-//
-void TIRXMLElementFormat::OpenStringPoolL(RStringPool&  aStringPool)
-    {
-    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL" );
-    aStringPool.OpenL(IRPoolTable);
-    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL - Exiting." );
-    }
-
-
-// ---------------------------------------------------------------------------
-// TIRXMLElementFormat :: GetElementIdL
-// The ElementId of the element from the StringPool
-// ---------------------------------------------------------------------------
-//
-TIRXMLElement TIRXMLElementFormat::GetElementIdL(const TDesC8& aElement, 
-                                  const RStringPool& aStringPool)
-    {
-		IRLOG_DEBUG( "TIRXMLElementFormat::GetElementIdL" );
-		TBool validElement = EFalse;
-		TInt  tableEntries;
-		TInt  pos(0);
-        tableEntries = IRPoolTable.iCount;
-        while(pos < tableEntries && validElement == EFalse)
-			{
-			RStringF tableEntry;
-            tableEntry = aStringPool.StringF(pos,IRPoolTable);
-            HBufC8* ElementName = HBufC8::NewLC(tableEntry.DesC().Length());
-            ElementName->Des().Copy(tableEntry.DesC());
-            TLex8 string(*ElementName);
-            TPtrC8 token = string.NextToken();
-            TInt CompareResult = aElement.Compare(token);
-            if(CompareResult == 0)
-                {
-                 validElement = ETrue;
-                }
-            if(validElement == EFalse)
-                {
-                 pos++;
-                }
-            tableEntry.Close();
-            CleanupStack::PopAndDestroy(ElementName);        
-        }
-    if(validElement)
-        {
-        IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (1)." );
-        return static_cast<TIRXMLElement>(pos);
-        }        
-    IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (2)." );
-    return(EElementIDUnknown);
-    } 
-    
-// ---------------------------------------------------------------------------
-// TIRXMLElementFormat::CloseStringPoolL
-// Closes the StringPool
-// ---------------------------------------------------------------------------
-//
-void TIRXMLElementFormat::CloseStringPoolL(RStringPool&  aStringPool)
-    {
-    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL" );
-    aStringPool.Close();
-    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL - Exiting." );
-	return;
-    }    
-   
-
--- a/presetserver/group/psclient.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ b/presetserver/group/psclient.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -46,6 +46,8 @@
 APP_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
 
+SMPSAFE
+
 LIBRARY                 ecom.lib
 LIBRARY                 euser.lib
 LIBRARY                 estor.lib
--- a/presetserver/group/psrfsplugin.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ b/presetserver/group/psrfsplugin.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -43,6 +43,8 @@
 APP_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
 
+SMPSAFE
+
 LIBRARY                 ecom.lib
 LIBRARY                 efsrv.lib
 LIBRARY                 euser.lib
--- a/presetserver/group/psserver.mmp	Tue Jul 06 14:07:20 2010 +0300
+++ b/presetserver/group/psserver.mmp	Wed Aug 18 09:40:26 2010 +0300
@@ -52,6 +52,8 @@
 SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
 SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(connect)
 
+SMPSAFE
+
 LIBRARY                 bafl.lib
 LIBRARY                 ecom.lib
 LIBRARY                 edbms.lib
--- a/presetserver/include/psutils.inl	Tue Jul 06 14:07:20 2010 +0300
+++ b/presetserver/include/psutils.inl	Wed Aug 18 09:40:26 2010 +0300
@@ -16,11 +16,7 @@
 */
 
 
-#if defined __SERIES60_30__ || defined __SERIES60_31__
-_LIT( KPSDatabaseFileName, "\\data\\pspresets.db" );    // File name of the preset database.
-#else
 _LIT( KPSDatabaseFileName, "pspresets.db" );            // File name of the preset database.
-#endif
 
 // ---------------------------------------------------------------------------
 // Gets the full file name and path to the preset database file.
@@ -35,9 +31,6 @@
 
     TParse parse;
 
-#if defined __SERIES60_30__ || defined __SERIES60_31__
-    parse.Set( KPSDatabaseFileName, &drive, NULL );
-#else
     // The database file resides in the server's private directory from 3.2 onwards.
     TFileName privatePath;
     
@@ -49,7 +42,6 @@
     parse.Set( privatePath, &KPSDatabaseFileName, &drive );
 
     CleanupStack::PopAndDestroy( &fsSession );
-#endif
 
     aFullName = parse.FullName();
 
--- a/presetserver/rfspluginsrc/Psrfsplugin.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/presetserver/rfspluginsrc/Psrfsplugin.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -21,11 +21,7 @@
 #include <bautils.h>
 
 _LIT( KPSDatabaseFileName, "pspresets.db" );    // File name of the preset database.
-#if defined __SERIES60_30__ || defined __SERIES60_31__
-_LIT( KPSDatabasePath, "\\data\\" );    // File name of the preset database.
-#else
 _LIT( KPSDatabasePath, "\\private\\10281cb5\\" );            // File name of the preset database.
-#endif
 
 // ======== LOCAL FUNCTIONS ========
 
--- a/qtinternetradio/bwins/irqisdsclientu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqisdsclientu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,24 +1,47 @@
 EXPORTS
-	?isdsMultSearch@IRQIsdsClient@@QAEXVQString@@000@Z @ 1  NONAME ; void IRQIsdsClient::isdsMultSearch(class QString, class QString, class QString, class QString)
-	?isdsSearchRequest@IRQIsdsClient@@QAEXABVQString@@@Z @ 2  NONAME ; void IRQIsdsClient::isdsSearchRequest(class QString const &)
-	?isdsIsConstructSucceed@IRQIsdsClient@@QBE_NXZ @ 3  NONAME ; bool IRQIsdsClient::isdsIsConstructSucceed(void) const
-	?isdsLogoDownSendRequest@IRQIsdsClient@@QAEXPAVIRQPreset@@HHH@Z @ 4  NONAME ; void IRQIsdsClient::isdsLogoDownSendRequest(class IRQPreset *, int, int, int)
-	?isdsIsChannelBanner@IRQIsdsClient@@QAE_NXZ @ 5  NONAME ; bool IRQIsdsClient::isdsIsChannelBanner(void)
-	?isdsLogoDownSendCacheLogo@IRQIsdsClient@@QAEAAVTDesC8@@XZ @ 6  NONAME ; class TDesC8 & IRQIsdsClient::isdsLogoDownSendCacheLogo(void)
-	?isdsLogoDownCancelTransaction@IRQIsdsClient@@QAEXXZ @ 7  NONAME ; void IRQIsdsClient::isdsLogoDownCancelTransaction(void)
-	?isdsListenRequest@IRQIsdsClient@@QAEXH_N@Z @ 8  NONAME ; void IRQIsdsClient::isdsListenRequest(int, bool)
-	?isdsChannelRequest@IRQIsdsClient@@QAEXHAA_N@Z @ 9  NONAME ; void IRQIsdsClient::isdsChannelRequest(int, bool &)
-	?isdsCategoryRequest@IRQIsdsClient@@QAEXW4IRQIsdsClientInterfaceIDs@1@AA_N@Z @ 10  NONAME ; void IRQIsdsClient::isdsCategoryRequest(enum IRQIsdsClient::IRQIsdsClientInterfaceIDs, bool &)
-	?isdsGetBrowseBanner@IRQIsdsClient@@QAEXAAVQString@@0@Z @ 11  NONAME ; void IRQIsdsClient::isdsGetBrowseBanner(class QString &, class QString &)
-	?isdsSyncPreset@IRQIsdsClient@@QAEHHABVQString@@PAVIRQFavoritesDB@@@Z @ 12  NONAME ; int IRQIsdsClient::isdsSyncPreset(int, class QString const &, class IRQFavoritesDB *)
+	??_EIRQIsdsClient@@UAE@I@Z @ 1  NONAME ; IRQIsdsClient::~IRQIsdsClient(unsigned int)
+	?isdsIsConstructSucceed@IRQIsdsClient@@QBE_NXZ @ 2  NONAME ; bool IRQIsdsClient::isdsIsConstructSucceed(void) const
+	?isdsLogoDownSendRequest@IRQIsdsClient@@QAEXPAVIRQPreset@@HHH@Z @ 3  NONAME ; void IRQIsdsClient::isdsLogoDownSendRequest(class IRQPreset *, int, int, int)
+	?isdsLogoDownCancelTransaction@IRQIsdsClient@@QAEXXZ @ 4  NONAME ; void IRQIsdsClient::isdsLogoDownCancelTransaction(void)
+	?metaObject@IRQIsdsClient@@UBEPBUQMetaObject@@XZ @ 5  NONAME ; struct QMetaObject const * IRQIsdsClient::metaObject(void) const
+	?presetLogoDownloadError@IRQIsdsClient@@IAEXXZ @ 6  NONAME ; void IRQIsdsClient::presetLogoDownloadError(void)
+	?qt_metacall@IRQIsdsClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 7  NONAME ; int IRQIsdsClient::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isdsGetBrowseBanner@IRQIsdsClient@@QAEXAAVQString@@0@Z @ 8  NONAME ; void IRQIsdsClient::isdsGetBrowseBanner(class QString &, class QString &)
+	?isdsCategoryRequest@IRQIsdsClient@@QAEXW4IRQIsdsClientInterfaceIDs@1@AA_N@Z @ 9  NONAME ; void IRQIsdsClient::isdsCategoryRequest(enum IRQIsdsClient::IRQIsdsClientInterfaceIDs, bool &)
+	?syncPresetResult@IRQIsdsClient@@IAEXW4IRQSycPresetStatus@@PAVIRQPreset@@@Z @ 10  NONAME ; void IRQIsdsClient::syncPresetResult(enum IRQSycPresetStatus, class IRQPreset *)
+	?getStaticMetaObject@IRQIsdsClient@@SAABUQMetaObject@@XZ @ 11  NONAME ; struct QMetaObject const & IRQIsdsClient::getStaticMetaObject(void)
+	?staticMetaObject@IRQIsdsClient@@2UQMetaObject@@B @ 12  NONAME ; struct QMetaObject const IRQIsdsClient::staticMetaObject
 	?isdsGetIRID@IRQIsdsClient@@QAEXXZ @ 13  NONAME ; void IRQIsdsClient::isdsGetIRID(void)
 	?isdsCancelRequest@IRQIsdsClient@@QAEXXZ @ 14  NONAME ; void IRQIsdsClient::isdsCancelRequest(void)
 	?openInstance@IRQIsdsClient@@SAPAV1@XZ @ 15  NONAME ; class IRQIsdsClient * IRQIsdsClient::openInstance(void)
-	?isdsIsLogoCached@IRQIsdsClient@@QAE_NPAVIRQPreset@@HH@Z @ 16  NONAME ; bool IRQIsdsClient::isdsIsLogoCached(class IRQPreset *, int, int)
-	?isdsLogoDownCheckCacheLogo@IRQIsdsClient@@QAEXABVQString@@AAH@Z @ 17  NONAME ; void IRQIsdsClient::isdsLogoDownCheckCacheLogo(class QString const &, int &)
+	?isdsLogoDownCheckCacheLogo@IRQIsdsClient@@QAEXABVQString@@AAH@Z @ 16  NONAME ; void IRQIsdsClient::isdsLogoDownCheckCacheLogo(class QString const &, int &)
+	?categoryItemsChanged@IRQIsdsClient@@IAEXPAV?$QList@PAVIRQBrowseCategoryItem@@@@@Z @ 17  NONAME ; void IRQIsdsClient::categoryItemsChanged(class QList<class IRQBrowseCategoryItem *> *)
 	?isdsLogoDownIsRunning@IRQIsdsClient@@QBE_NXZ @ 18  NONAME ; bool IRQIsdsClient::isdsLogoDownIsRunning(void) const
-	?isdsIsCategoryCached@IRQIsdsClient@@QAE_NW4IRQIsdsClientInterfaceIDs@1@@Z @ 19  NONAME ; bool IRQIsdsClient::isdsIsCategoryCached(enum IRQIsdsClient::IRQIsdsClientInterfaceIDs)
-	?isdsIsChannelCached@IRQIsdsClient@@QAE_NH@Z @ 20  NONAME ; bool IRQIsdsClient::isdsIsChannelCached(int)
-	?closeInstance@IRQIsdsClient@@QAEXXZ @ 21  NONAME ; void IRQIsdsClient::closeInstance(void)
-	?isdsPostLog@IRQIsdsClient@@QAEXABVQString@@@Z @ 22  NONAME ; void IRQIsdsClient::isdsPostLog(class QString const &)
-	?isdsIsCategoryBanner@IRQIsdsClient@@QAE_NXZ @ 23  NONAME ; bool IRQIsdsClient::isdsIsCategoryBanner(void)
+	?isdsIsChannelCached@IRQIsdsClient@@QAE_NH@Z @ 19  NONAME ; bool IRQIsdsClient::isdsIsChannelCached(int)
+	?mMutex@IRQIsdsClient@@0VQMutex@@A @ 20  NONAME ; class QMutex IRQIsdsClient::mMutex
+	?trUtf8@IRQIsdsClient@@SA?AVQString@@PBD0H@Z @ 21  NONAME ; class QString IRQIsdsClient::trUtf8(char const *, char const *, int)
+	?mRef@IRQIsdsClient@@0HA @ 22  NONAME ; int IRQIsdsClient::mRef
+	?isdsMultSearch@IRQIsdsClient@@QAEXVQString@@000@Z @ 23  NONAME ; void IRQIsdsClient::isdsMultSearch(class QString, class QString, class QString, class QString)
+	?isdsSearchRequest@IRQIsdsClient@@QAEXABVQString@@@Z @ 24  NONAME ; void IRQIsdsClient::isdsSearchRequest(class QString const &)
+	?tr@IRQIsdsClient@@SA?AVQString@@PBD0H@Z @ 25  NONAME ; class QString IRQIsdsClient::tr(char const *, char const *, int)
+	?operationException@IRQIsdsClient@@IAEXW4IRQError@@@Z @ 26  NONAME ; void IRQIsdsClient::operationException(enum IRQError)
+	?iridReceived@IRQIsdsClient@@IAEXVQString@@@Z @ 27  NONAME ; void IRQIsdsClient::iridReceived(class QString)
+	?isdsIsChannelBanner@IRQIsdsClient@@QAE_NXZ @ 28  NONAME ; bool IRQIsdsClient::isdsIsChannelBanner(void)
+	?mInstance@IRQIsdsClient@@0PAV1@A @ 29  NONAME ; class IRQIsdsClient * IRQIsdsClient::mInstance
+	?isdsLogoDownSendCacheLogo@IRQIsdsClient@@QAEAAVTDesC8@@XZ @ 30  NONAME ; class TDesC8 & IRQIsdsClient::isdsLogoDownSendCacheLogo(void)
+	?isdsListenRequest@IRQIsdsClient@@QAEXH_N@Z @ 31  NONAME ; void IRQIsdsClient::isdsListenRequest(int, bool)
+	??0IRQIsdsClient@@AAE@XZ @ 32  NONAME ; IRQIsdsClient::IRQIsdsClient(void)
+	?isdsChannelRequest@IRQIsdsClient@@QAEXHAA_N@Z @ 33  NONAME ; void IRQIsdsClient::isdsChannelRequest(int, bool &)
+	?tr@IRQIsdsClient@@SA?AVQString@@PBD0@Z @ 34  NONAME ; class QString IRQIsdsClient::tr(char const *, char const *)
+	?isdsSyncPreset@IRQIsdsClient@@QAEHHABVQString@@PAVIRQFavoritesDB@@@Z @ 35  NONAME ; int IRQIsdsClient::isdsSyncPreset(int, class QString const &, class IRQFavoritesDB *)
+	?presetResponse@IRQIsdsClient@@IAEXPAVIRQPreset@@@Z @ 36  NONAME ; void IRQIsdsClient::presetResponse(class IRQPreset *)
+	?presetLogoDownloaded@IRQIsdsClient@@IAEXPAVIRQPreset@@@Z @ 37  NONAME ; void IRQIsdsClient::presetLogoDownloaded(class IRQPreset *)
+	?isdsIsLogoCached@IRQIsdsClient@@QAE_NPAVIRQPreset@@HH@Z @ 38  NONAME ; bool IRQIsdsClient::isdsIsLogoCached(class IRQPreset *, int, int)
+	?isdsIsCategoryCached@IRQIsdsClient@@QAE_NW4IRQIsdsClientInterfaceIDs@1@@Z @ 39  NONAME ; bool IRQIsdsClient::isdsIsCategoryCached(enum IRQIsdsClient::IRQIsdsClientInterfaceIDs)
+	?channelItemsChanged@IRQIsdsClient@@IAEXPAV?$QList@PAVIRQChannelItem@@@@@Z @ 40  NONAME ; void IRQIsdsClient::channelItemsChanged(class QList<class IRQChannelItem *> *)
+	??1IRQIsdsClient@@EAE@XZ @ 41  NONAME ; IRQIsdsClient::~IRQIsdsClient(void)
+	?closeInstance@IRQIsdsClient@@QAEXXZ @ 42  NONAME ; void IRQIsdsClient::closeInstance(void)
+	?isdsPostLog@IRQIsdsClient@@QAEXABVQString@@@Z @ 43  NONAME ; void IRQIsdsClient::isdsPostLog(class QString const &)
+	?trUtf8@IRQIsdsClient@@SA?AVQString@@PBD0@Z @ 44  NONAME ; class QString IRQIsdsClient::trUtf8(char const *, char const *)
+	?isdsIsCategoryBanner@IRQIsdsClient@@QAE_NXZ @ 45  NONAME ; bool IRQIsdsClient::isdsIsCategoryBanner(void)
+	?qt_metacast@IRQIsdsClient@@UAEPAXPBD@Z @ 46  NONAME ; void * IRQIsdsClient::qt_metacast(char const *)
--- a/qtinternetradio/bwins/irqmediaplayeru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqmediaplayeru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -6,4 +6,20 @@
 	?enableStereoEffect@IRQMediaPlayer@@QAEXXZ @ 5 NONAME ; void IRQMediaPlayer::enableStereoEffect(void)
 	?getVolume@IRQMediaPlayer@@QAEHXZ @ 6 NONAME ; int IRQMediaPlayer::getVolume(void)
 	?playStation@IRQMediaPlayer@@QAEXABVQString@@H@Z @ 7 NONAME ; void IRQMediaPlayer::playStation(class QString const &, int)
+	?trUtf8@IRQMediaPlayer@@SA?AVQString@@PBD0H@Z @ 8  NONAME ; class QString IRQMediaPlayer::trUtf8(char const *, char const *, int)
+	?qt_metacast@IRQMediaPlayer@@UAEPAXPBD@Z @ 9  NONAME ; void * IRQMediaPlayer::qt_metacast(char const *)
+	?metaObject@IRQMediaPlayer@@UBEPBUQMetaObject@@XZ @ 10  NONAME ; struct QMetaObject const * IRQMediaPlayer::metaObject(void) const
+	?tr@IRQMediaPlayer@@SA?AVQString@@PBD0H@Z @ 11  NONAME ; class QString IRQMediaPlayer::tr(char const *, char const *, int)
+	??_EIRQMediaPlayer@@UAE@I@Z @ 12  NONAME ; IRQMediaPlayer::~IRQMediaPlayer(unsigned int)
+	?connectionEstablished@IRQMediaPlayer@@IAEXH@Z @ 13  NONAME ; void IRQMediaPlayer::connectionEstablished(int)
+	?trUtf8@IRQMediaPlayer@@SA?AVQString@@PBD0@Z @ 14  NONAME ; class QString IRQMediaPlayer::trUtf8(char const *, char const *)
+	?staticMetaObject@IRQMediaPlayer@@2UQMetaObject@@B @ 15  NONAME ; struct QMetaObject const IRQMediaPlayer::staticMetaObject
+	?errorOccured@IRQMediaPlayer@@IAEXW4IRQError@@@Z @ 16  NONAME ; void IRQMediaPlayer::errorOccured(enum IRQError)
+	?metaDataReceived@IRQMediaPlayer@@IAEXAAVIRQMetaData@@@Z @ 17  NONAME ; void IRQMediaPlayer::metaDataReceived(class IRQMetaData &)
+	??1IRQMediaPlayer@@UAE@XZ @ 18  NONAME ; IRQMediaPlayer::~IRQMediaPlayer(void)
+	?percentageBuffered@IRQMediaPlayer@@IAEXH@Z @ 19  NONAME ; void IRQMediaPlayer::percentageBuffered(int)
+	?volumeExpected@IRQMediaPlayer@@IAEXAAH@Z @ 20  NONAME ; void IRQMediaPlayer::volumeExpected(int &)
+	?tr@IRQMediaPlayer@@SA?AVQString@@PBD0@Z @ 21  NONAME ; class QString IRQMediaPlayer::tr(char const *, char const *)
+	?getStaticMetaObject@IRQMediaPlayer@@SAABUQMetaObject@@XZ @ 22  NONAME ; struct QMetaObject const & IRQMediaPlayer::getStaticMetaObject(void)
+	?qt_metacall@IRQMediaPlayer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 23  NONAME ; int IRQMediaPlayer::qt_metacall(enum QMetaObject::Call, int, void * *)
 
--- a/qtinternetradio/bwins/irqnetworkcontrolleru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqnetworkcontrolleru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -12,4 +12,22 @@
 	?isOfflineMode@IRQNetworkController@@QAE_NXZ @ 11  NONAME ; bool IRQNetworkController::isOfflineMode(void)
 	?isConnectRequestIssued@IRQNetworkController@@QBE_NXZ @ 12  NONAME ; bool IRQNetworkController::isConnectRequestIssued(void) const
 	?chooseAccessPoint@IRQNetworkController@@QAEXXZ @ 13  NONAME ; void IRQNetworkController::chooseAccessPoint(void)
-
+	?tr@IRQNetworkController@@SA?AVQString@@PBD0H@Z @ 14  NONAME ; class QString IRQNetworkController::tr(char const *, char const *, int)
+	?mInstance@IRQNetworkController@@0PAV1@A @ 15  NONAME ; class IRQNetworkController * IRQNetworkController::mInstance
+	?staticMetaObject@IRQNetworkController@@2UQMetaObject@@B @ 16  NONAME ; struct QMetaObject const IRQNetworkController::staticMetaObject
+	??_EIRQNetworkController@@UAE@I@Z @ 17  NONAME ; IRQNetworkController::~IRQNetworkController(unsigned int)
+	??0IRQNetworkController@@AAE@XZ @ 18  NONAME ; IRQNetworkController::IRQNetworkController(void)
+	?qt_metacall@IRQNetworkController@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 19  NONAME ; int IRQNetworkController::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@IRQNetworkController@@SA?AVQString@@PBD0H@Z @ 20  NONAME ; class QString IRQNetworkController::trUtf8(char const *, char const *, int)
+	?networkRequestNotified@IRQNetworkController@@IAEXW4IRQNetworkEvent@@@Z @ 21  NONAME ; void IRQNetworkController::networkRequestNotified(enum IRQNetworkEvent)
+	?networkEventNotified@IRQNetworkController@@IAEXW4IRQNetworkEvent@@@Z @ 22  NONAME ; void IRQNetworkController::networkEventNotified(enum IRQNetworkEvent)
+	?pendingRequestsReset@IRQNetworkController@@IAEX_N@Z @ 23  NONAME ; void IRQNetworkController::pendingRequestsReset(bool)
+	?trUtf8@IRQNetworkController@@SA?AVQString@@PBD0@Z @ 24  NONAME ; class QString IRQNetworkController::trUtf8(char const *, char const *)
+	?tr@IRQNetworkController@@SA?AVQString@@PBD0@Z @ 25  NONAME ; class QString IRQNetworkController::tr(char const *, char const *)
+	?metaObject@IRQNetworkController@@UBEPBUQMetaObject@@XZ @ 26  NONAME ; struct QMetaObject const * IRQNetworkController::metaObject(void) const
+	?getStaticMetaObject@IRQNetworkController@@SAABUQMetaObject@@XZ @ 27  NONAME ; struct QMetaObject const & IRQNetworkController::getStaticMetaObject(void)
+	?qt_metacast@IRQNetworkController@@UAEPAXPBD@Z @ 28  NONAME ; void * IRQNetworkController::qt_metacast(char const *)
+	?mMutex@IRQNetworkController@@0VQMutex@@A @ 29  NONAME ; class QMutex IRQNetworkController::mMutex
+	??1IRQNetworkController@@EAE@XZ @ 30  NONAME ; IRQNetworkController::~IRQNetworkController(void)
+	?errorOccured@IRQNetworkController@@IAEXW4IRQError@@@Z @ 31  NONAME ; void IRQNetworkController::errorOccured(enum IRQError)
+	
--- a/qtinternetradio/bwins/irqnwkinfoobserveru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqnwkinfoobserveru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,6 +1,22 @@
 EXPORTS
-	?closeInstance@IRQNwkInfoObserver@@QAEXXZ @ 1 NONAME ; void IRQNwkInfoObserver::closeInstance(void)
-	?startMonitorNwkInfo@IRQNwkInfoObserver@@QAEXXZ @ 2 NONAME ; void IRQNwkInfoObserver::startMonitorNwkInfo(void)
-	?stopMonitorNwkInfo@IRQNwkInfoObserver@@QAEXXZ @ 3 NONAME ; void IRQNwkInfoObserver::stopMonitorNwkInfo(void)
-	?openInstance@IRQNwkInfoObserver@@SAPAV1@XZ @ 4 NONAME ; class IRQNwkInfoObserver * IRQNwkInfoObserver::openInstance(void)
+	?tr@IRQNwkInfoObserver@@SA?AVQString@@PBD0H@Z @ 1  NONAME ; class QString IRQNwkInfoObserver::tr(char const *, char const *, int)
+	?closeInstance@IRQNwkInfoObserver@@QAEXXZ @ 2  NONAME ; void IRQNwkInfoObserver::closeInstance(void)
+	?mInstance@IRQNwkInfoObserver@@0PAV1@A @ 3  NONAME ; class IRQNwkInfoObserver * IRQNwkInfoObserver::mInstance
+	?homeNwkChanged@IRQNwkInfoObserver@@IAEXABVQString@@0@Z @ 4  NONAME ; void IRQNwkInfoObserver::homeNwkChanged(class QString const &, class QString const &)
+	?staticMetaObject@IRQNwkInfoObserver@@2UQMetaObject@@B @ 5  NONAME ; struct QMetaObject const IRQNwkInfoObserver::staticMetaObject
+	?mMutex@IRQNwkInfoObserver@@0VQMutex@@A @ 6  NONAME ; class QMutex IRQNwkInfoObserver::mMutex
+	??_EIRQNwkInfoObserver@@UAE@I@Z @ 7  NONAME ; IRQNwkInfoObserver::~IRQNwkInfoObserver(unsigned int)
+	?qt_metacall@IRQNwkInfoObserver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 8  NONAME ; int IRQNwkInfoObserver::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?currentNwkChanged@IRQNwkInfoObserver@@IAEXABVQString@@0@Z @ 9  NONAME ; void IRQNwkInfoObserver::currentNwkChanged(class QString const &, class QString const &)
+	??0IRQNwkInfoObserver@@AAE@XZ @ 10  NONAME ; IRQNwkInfoObserver::IRQNwkInfoObserver(void)
+	?qt_metacast@IRQNwkInfoObserver@@UAEPAXPBD@Z @ 11  NONAME ; void * IRQNwkInfoObserver::qt_metacast(char const *)
+	??1IRQNwkInfoObserver@@EAE@XZ @ 12  NONAME ; IRQNwkInfoObserver::~IRQNwkInfoObserver(void)
+	?trUtf8@IRQNwkInfoObserver@@SA?AVQString@@PBD0H@Z @ 13  NONAME ; class QString IRQNwkInfoObserver::trUtf8(char const *, char const *, int)
+	?tr@IRQNwkInfoObserver@@SA?AVQString@@PBD0@Z @ 14  NONAME ; class QString IRQNwkInfoObserver::tr(char const *, char const *)
+	?startMonitorNwkInfo@IRQNwkInfoObserver@@QAEXXZ @ 15  NONAME ; void IRQNwkInfoObserver::startMonitorNwkInfo(void)
+	?stopMonitorNwkInfo@IRQNwkInfoObserver@@QAEXXZ @ 16  NONAME ; void IRQNwkInfoObserver::stopMonitorNwkInfo(void)
+	?getStaticMetaObject@IRQNwkInfoObserver@@SAABUQMetaObject@@XZ @ 17  NONAME ; struct QMetaObject const & IRQNwkInfoObserver::getStaticMetaObject(void)
+	?trUtf8@IRQNwkInfoObserver@@SA?AVQString@@PBD0@Z @ 18  NONAME ; class QString IRQNwkInfoObserver::trUtf8(char const *, char const *)
+	?openInstance@IRQNwkInfoObserver@@SAPAV1@XZ @ 19  NONAME ; class IRQNwkInfoObserver * IRQNwkInfoObserver::openInstance(void)
+	?metaObject@IRQNwkInfoObserver@@UBEPBUQMetaObject@@XZ @ 20  NONAME ; struct QMetaObject const * IRQNwkInfoObserver::metaObject(void) const
 
--- a/qtinternetradio/bwins/irqsettingsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqsettingsu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,26 +1,34 @@
 EXPORTS
 	?setVolumeSetting@IRQSettings@@QAEXH@Z @ 1  NONAME ; void IRQSettings::setVolumeSetting(int)
-	?getIRID@IRQSettings@@QAE_NAAVQString@@@Z @ 2  NONAME ; bool IRQSettings::getIRID(class QString &)
-	?getStartingViewId@IRQSettings@@QAE_NAAW4TIRViewId@@@Z @ 3  NONAME ; bool IRQSettings::getStartingViewId(enum TIRViewId &)
-	?reSetFlagTermsAndConditions@IRQSettings@@QAEXXZ @ 4  NONAME ; void IRQSettings::reSetFlagTermsAndConditions(void)
-	?getSongHistoryShow@IRQSettings@@QAEHXZ @ 5  NONAME ; int IRQSettings::getSongHistoryShow(void)
-	?getPreferredQuality@IRQSettings@@QBE?AW4IRQPreferredQuality@@XZ @ 6  NONAME ; enum IRQPreferredQuality IRQSettings::getPreferredQuality(void) const
-	?openInstance@IRQSettings@@SAPAV1@XZ @ 7  NONAME ; class IRQSettings * IRQSettings::openInstance(void)
-	?setSongHistoryShow@IRQSettings@@QAEXH@Z @ 8  NONAME ; void IRQSettings::setSongHistoryShow(int)
-	?getManuallyInputtedStationName@IRQSettings@@QAE_NAAVQString@@@Z @ 9  NONAME ; bool IRQSettings::getManuallyInputtedStationName(class QString &)
-	?maxPresetCount@IRQSettings@@QAEHXZ @ 10  NONAME ; int IRQSettings::maxPresetCount(void)
-	?closeInstance@IRQSettings@@QAEXXZ @ 11  NONAME ; void IRQSettings::closeInstance(void)
-	?getVolumeSetting@IRQSettings@@QAEHXZ @ 12  NONAME ; int IRQSettings::getVolumeSetting(void)
-	?setStartingViewId@IRQSettings@@QAEXK@Z @ 13  NONAME ; void IRQSettings::setStartingViewId(unsigned long)
-	?setFlagTermsAndConditions@IRQSettings@@QAEXXZ @ 14  NONAME ; void IRQSettings::setFlagTermsAndConditions(void)
-	?setMaxPresetCount@IRQSettings@@QAEXH@Z @ 15  NONAME ; void IRQSettings::setMaxPresetCount(int)
-	?setManuallyInputtedStationUrl@IRQSettings@@QAEXABVQString@@@Z @ 16  NONAME ; void IRQSettings::setManuallyInputtedStationUrl(class QString const &)
-	?privatePath@IRQSettings@@QAE?AVQString@@XZ @ 17  NONAME ; class QString IRQSettings::privatePath(void)
-	?setPreferredQuality@IRQSettings@@QAEXW4IRQPreferredQuality@@@Z @ 18  NONAME ; void IRQSettings::setPreferredQuality(enum IRQPreferredQuality)
-	?getTimeOut@IRQSettings@@QAEHXZ @ 19  NONAME ; int IRQSettings::getTimeOut(void)
-	?getGlobalAdvFlag@IRQSettings@@QAE_NAA_N@Z @ 20  NONAME ; bool IRQSettings::getGlobalAdvFlag(bool &)
-	?setTimeOut@IRQSettings@@QAEXH@Z @ 21  NONAME ; void IRQSettings::setTimeOut(int)
-	?setManuallyInputtedStationName@IRQSettings@@QAEXABVQString@@@Z @ 22  NONAME ; void IRQSettings::setManuallyInputtedStationName(class QString const &)
-	?isFlagTermsAndConditions@IRQSettings@@QAE_NAA_N@Z @ 23  NONAME ; bool IRQSettings::isFlagTermsAndConditions(bool &)
-	?getManuallyInputtedStationUrl@IRQSettings@@QAE_NAAVQString@@@Z @ 24  NONAME ; bool IRQSettings::getManuallyInputtedStationUrl(class QString &)
+	?setSearchText@IRQSettings@@QAEXABVQString@@@Z @ 2  NONAME ; void IRQSettings::setSearchText(class QString const &)
+	?getSearchText@IRQSettings@@QAE_NAAVQString@@@Z @ 3  NONAME ; bool IRQSettings::getSearchText(class QString &)
+	?getStartingViewId@IRQSettings@@QAE_NAAW4TIRViewId@@@Z @ 4  NONAME ; bool IRQSettings::getStartingViewId(enum TIRViewId &)
+	?reSetFlagTermsAndConditions@IRQSettings@@QAEXXZ @ 5  NONAME ; void IRQSettings::reSetFlagTermsAndConditions(void)
+	?getSongHistoryShow@IRQSettings@@QAEHXZ @ 6  NONAME ; int IRQSettings::getSongHistoryShow(void)
+	??1IRQSettings@@AAE@XZ @ 7  NONAME ; IRQSettings::~IRQSettings(void)
+	?openInstance@IRQSettings@@SAPAV1@XZ @ 8  NONAME ; class IRQSettings * IRQSettings::openInstance(void)
+	?setSongHistoryShow@IRQSettings@@QAEXH@Z @ 9  NONAME ; void IRQSettings::setSongHistoryShow(int)
+	?getManuallyInputtedStationName@IRQSettings@@QAE_NAAVQString@@@Z @ 10  NONAME ; bool IRQSettings::getManuallyInputtedStationName(class QString &)
+	?getVolumeSetting@IRQSettings@@QAEHXZ @ 11  NONAME ; int IRQSettings::getVolumeSetting(void)
+	?closeInstance@IRQSettings@@QAEXXZ @ 12  NONAME ; void IRQSettings::closeInstance(void)
+	?setFlagTermsAndConditions@IRQSettings@@QAEXXZ @ 13  NONAME ; void IRQSettings::setFlagTermsAndConditions(void)
+	?privatePath@IRQSettings@@QAE?AVQString@@XZ @ 14  NONAME ; class QString IRQSettings::privatePath(void)
+	?setPreferredQuality@IRQSettings@@QAEXW4IRQPreferredQuality@@@Z @ 15  NONAME ; void IRQSettings::setPreferredQuality(enum IRQPreferredQuality)
+	?getTimeOut@IRQSettings@@QAEHXZ @ 16  NONAME ; int IRQSettings::getTimeOut(void)
+	?mMutex@IRQSettings@@0VQMutex@@A @ 17  NONAME ; class QMutex IRQSettings::mMutex
+	?setManuallyInputtedStationName@IRQSettings@@QAEXABVQString@@@Z @ 18  NONAME ; void IRQSettings::setManuallyInputtedStationName(class QString const &)
+	?getManuallyInputtedStationUrl@IRQSettings@@QAE_NAAVQString@@@Z @ 19  NONAME ; bool IRQSettings::getManuallyInputtedStationUrl(class QString &)
+	?getIRID@IRQSettings@@QAE_NAAVQString@@@Z @ 20  NONAME ; bool IRQSettings::getIRID(class QString &)
+	?getMinDiskSpaceRequired@IRQSettings@@QAEHXZ @ 21  NONAME ; int IRQSettings::getMinDiskSpaceRequired(void)
+	?setStartingViewId@IRQSettings@@QAEXH@Z @ 22  NONAME ; void IRQSettings::setStartingViewId(int)
+	?getPreferredQuality@IRQSettings@@QBE?AW4IRQPreferredQuality@@XZ @ 23  NONAME ; enum IRQPreferredQuality IRQSettings::getPreferredQuality(void) const
+	?mInstance@IRQSettings@@0PAV1@A @ 24  NONAME ; class IRQSettings * IRQSettings::mInstance
+	?getSongRecognitionAppUid@IRQSettings@@QAEHXZ @ 25  NONAME ; int IRQSettings::getSongRecognitionAppUid(void)
+	?setManuallyInputtedStationUrl@IRQSettings@@QAEXABVQString@@@Z @ 26  NONAME ; void IRQSettings::setManuallyInputtedStationUrl(class QString const &)
+	??0IRQSettings@@AAE@XZ @ 27  NONAME ; IRQSettings::IRQSettings(void)
+	?getIsdsUrl@IRQSettings@@QAE?AVQString@@XZ @ 28  NONAME ; class QString IRQSettings::getIsdsUrl(void)
+	?getGlobalAdvFlag@IRQSettings@@QAE_NAA_N@Z @ 29  NONAME ; bool IRQSettings::getGlobalAdvFlag(bool &)
+	?setTimeOut@IRQSettings@@QAEXH@Z @ 30  NONAME ; void IRQSettings::setTimeOut(int)
+	?getIdentifySongEnabled@IRQSettings@@QAE_NXZ @ 31  NONAME ; bool IRQSettings::getIdentifySongEnabled(void)
+	?isFlagTermsAndConditions@IRQSettings@@QAE_NAA_N@Z @ 32  NONAME ; bool IRQSettings::isFlagTermsAndConditions(bool &)
 
--- a/qtinternetradio/bwins/irqsonghistoryu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqsonghistoryu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -27,25 +27,25 @@
 	?GetBitrate@CIRSongHistoryInfo@@QBEHXZ @ 26  NONAME ; int CIRSongHistoryInfo::GetBitrate(void) const
 	?getArtistName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 27  NONAME ; class QString const & IRQSongHistoryInfo::getArtistName(void) const
 	?GetGenreName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 28  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetGenreName(void) const
-	?SetHistoryInfo@CIRSongHistoryInfo@@QAEXAAVRBuf16@@000HHH000000@Z @ 29  NONAME ; void CIRSongHistoryInfo::SetHistoryInfo(class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, int, int, int, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &)
-	?getMusicStoreStatus@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 30  NONAME ; class QString const & IRQSongHistoryInfo::getMusicStoreStatus(void) const
-	?getGenreName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 31  NONAME ; class QString const & IRQSongHistoryInfo::getGenreName(void) const
-	?getBitrate@IRQSongHistoryInfo@@QBEHXZ @ 32  NONAME ; int IRQSongHistoryInfo::getBitrate(void) const
-	?getMusicshopStatus@IRQSongInfo@@QBEABVQString@@XZ @ 33  NONAME ; class QString const & IRQSongInfo::getMusicshopStatus(void) const
-	?GetChannelName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 34  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelName(void) const
-	?NewL@CIRSongHistoryInfo@@SAPAV1@XZ @ 35  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewL(void)
-	?updateSongHistoryDb@IRQSongHistoryEngine@@QAEXHABVQString@@000000@Z @ 36  NONAME ; void IRQSongHistoryEngine::updateSongHistoryDb(int, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &)
-	?getLanguageName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 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
-	?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
+	?getMusicStoreStatus@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 29  NONAME ; class QString const & IRQSongHistoryInfo::getMusicStoreStatus(void) const
+	?getGenreName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 30  NONAME ; class QString const & IRQSongHistoryInfo::getGenreName(void) const
+	?getBitrate@IRQSongHistoryInfo@@QBEHXZ @ 31  NONAME ; int IRQSongHistoryInfo::getBitrate(void) const
+	?getMusicshopStatus@IRQSongInfo@@QBEABVQString@@XZ @ 32  NONAME ; class QString const & IRQSongInfo::getMusicshopStatus(void) const
+	?GetChannelName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 33  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelName(void) const
+	?NewL@CIRSongHistoryInfo@@SAPAV1@XZ @ 34  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewL(void)
+	?updateSongHistoryDb@IRQSongHistoryEngine@@QAEXHABVQString@@000000@Z @ 35  NONAME ; void IRQSongHistoryEngine::updateSongHistoryDb(int, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &)
+	?getLanguageName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 36  NONAME ; class QString const & IRQSongHistoryInfo::getLanguageName(void) const
+	?setSongName@IRQSongInfo@@QAEXABVQString@@@Z @ 37  NONAME ; void IRQSongInfo::setSongName(class QString const &)
+	?getArtistName@IRQSongInfo@@QBEABVQString@@XZ @ 38  NONAME ; class QString const & IRQSongInfo::getArtistName(void) const
+	?setAllInfo@IRQSongInfo@@QAEXABVQString@@000@Z @ 39  NONAME ; void IRQSongInfo::setAllInfo(class QString const &, class QString const &, class QString const &, class QString const &)
+	?deleteOneSongHistoryItem@IRQSongHistoryEngine@@QAE_NH@Z @ 40  NONAME ; bool IRQSongHistoryEngine::deleteOneSongHistoryItem(int)
+	?setArtistName@IRQSongInfo@@QAEXABVQString@@@Z @ 41  NONAME ; void IRQSongInfo::setArtistName(class QString const &)
+	?openInstance@IRQSongHistoryEngine@@SAPAV1@XZ @ 42  NONAME ; class IRQSongHistoryEngine * IRQSongHistoryEngine::openInstance(void)
+	?clearAllHistory@IRQSongHistoryEngine@@QAEHXZ @ 43  NONAME ; int IRQSongHistoryEngine::clearAllHistory(void)
+	?deleteOneItem@IRQSongHistoryEngine@@QAE_NH@Z @ 44  NONAME ; bool IRQSongHistoryEngine::deleteOneItem(int)
+	?clearAllSongHistory@IRQSongHistoryEngine@@QAEHXZ @ 45  NONAME ; int IRQSongHistoryEngine::clearAllSongHistory(void)
+	?getSongName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 46  NONAME ; class QString const & IRQSongHistoryInfo::getSongName(void) const
+	?SetHistoryInfoL@CIRSongHistoryInfo@@QAEXAAVRBuf16@@000HHH000000@Z @ 47  NONAME ; void CIRSongHistoryInfo::SetHistoryInfoL(class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, int, int, int, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &)
 	?getChannelName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 48  NONAME ; class QString const & IRQSongHistoryInfo::getChannelName(void) const
 	?handleSongMetaDataReceivedL@IRQSongHistoryEngine@@AAEXABVIRQMetaData@@ABVIRQPreset@@@Z @ 49  NONAME ; void IRQSongHistoryEngine::handleSongMetaDataReceivedL(class IRQMetaData const &, class IRQPreset const &)
 	??1CIRSongHistoryInfo@@UAE@XZ @ 50  NONAME ; CIRSongHistoryInfo::~CIRSongHistoryInfo(void)
--- a/qtinternetradio/bwins/irqstatisticsreporteru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqstatisticsreporteru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -12,15 +12,15 @@
 	?logSongRecogEvent@IRQStatisticsReporter@@QAEXXZ @ 11  NONAME ; void IRQStatisticsReporter::logSongRecogEvent(void)
 	?qt_metacall@IRQStatisticsReporter@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 12  NONAME ; int IRQStatisticsReporter::qt_metacall(enum QMetaObject::Call, int, void * *)
 	??0IRQStatisticsReporter@@AAE@XZ @ 13  NONAME ; IRQStatisticsReporter::IRQStatisticsReporter(void)
-	?sessionEnded@IRQStatisticsReporter@@QAEXW4IRTerminatedType@1@@Z @ 14  NONAME ; void IRQStatisticsReporter::sessionEnded(enum IRQStatisticsReporter::IRTerminatedType)
-	?mRef@IRQStatisticsReporter@@0HA @ 15  NONAME ; int IRQStatisticsReporter::mRef
-	?tr@IRQStatisticsReporter@@SA?AVQString@@PBD0@Z @ 16  NONAME ; class QString IRQStatisticsReporter::tr(char const *, char const *)
-	??_EIRQStatisticsReporter@@UAE@I@Z @ 17  NONAME ; IRQStatisticsReporter::~IRQStatisticsReporter(unsigned int)
-	?getStaticMetaObject@IRQStatisticsReporter@@SAABUQMetaObject@@XZ @ 18  NONAME ; struct QMetaObject const & IRQStatisticsReporter::getStaticMetaObject(void)
-	?tr@IRQStatisticsReporter@@SA?AVQString@@PBD0H@Z @ 19  NONAME ; class QString IRQStatisticsReporter::tr(char const *, char const *, int)
-	?qt_metacast@IRQStatisticsReporter@@UAEPAXPBD@Z @ 20  NONAME ; void * IRQStatisticsReporter::qt_metacast(char const *)
-	?logServerResult@IRQStatisticsReporter@@QAEXABVQString@@W4IRServerResult@1@@Z @ 21  NONAME ; void IRQStatisticsReporter::logServerResult(class QString const &, enum IRQStatisticsReporter::IRServerResult)
-	?mInstatnce@IRQStatisticsReporter@@0PAV1@A @ 22  NONAME ; class IRQStatisticsReporter * IRQStatisticsReporter::mInstatnce
+	?mInstance@IRQStatisticsReporter@@0PAV1@A @ 14  NONAME ; class IRQStatisticsReporter * IRQStatisticsReporter::mInstance
+	?sessionEnded@IRQStatisticsReporter@@QAEXW4IRTerminatedType@1@@Z @ 15  NONAME ; void IRQStatisticsReporter::sessionEnded(enum IRQStatisticsReporter::IRTerminatedType)
+	?mRef@IRQStatisticsReporter@@0HA @ 16  NONAME ; int IRQStatisticsReporter::mRef
+	?tr@IRQStatisticsReporter@@SA?AVQString@@PBD0@Z @ 17  NONAME ; class QString IRQStatisticsReporter::tr(char const *, char const *)
+	??_EIRQStatisticsReporter@@UAE@I@Z @ 18  NONAME ; IRQStatisticsReporter::~IRQStatisticsReporter(unsigned int)
+	?getStaticMetaObject@IRQStatisticsReporter@@SAABUQMetaObject@@XZ @ 19  NONAME ; struct QMetaObject const & IRQStatisticsReporter::getStaticMetaObject(void)
+	?tr@IRQStatisticsReporter@@SA?AVQString@@PBD0H@Z @ 20  NONAME ; class QString IRQStatisticsReporter::tr(char const *, char const *, int)
+	?qt_metacast@IRQStatisticsReporter@@UAEPAXPBD@Z @ 21  NONAME ; void * IRQStatisticsReporter::qt_metacast(char const *)
+	?logServerResult@IRQStatisticsReporter@@QAEXABVQString@@W4IRServerResult@1@@Z @ 22  NONAME ; void IRQStatisticsReporter::logServerResult(class QString const &, enum IRQStatisticsReporter::IRServerResult)
 	?trUtf8@IRQStatisticsReporter@@SA?AVQString@@PBD0@Z @ 23  NONAME ; class QString IRQStatisticsReporter::trUtf8(char const *, char const *)
 	?openInstance@IRQStatisticsReporter@@SAPAV1@XZ @ 24  NONAME ; class IRQStatisticsReporter * IRQStatisticsReporter::openInstance(void)
-	?metaObject@IRQStatisticsReporter@@UBEPBUQMetaObject@@XZ @ 25  NONAME ; struct QMetaObject const * IRQStatisticsReporter::metaObject(void) const
\ No newline at end of file
+	?metaObject@IRQStatisticsReporter@@UBEPBUQMetaObject@@XZ @ 25  NONAME ; struct QMetaObject const * IRQStatisticsReporter::metaObject(void) const
--- a/qtinternetradio/bwins/irqutilityu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/bwins/irqutilityu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -4,21 +4,22 @@
 	?getAvailableBitrates@IRQPreset@@QBEXAAV?$QList@H@@@Z @ 3  NONAME ; void IRQPreset::getAvailableBitrates(class QList<int> &) const
 	?externalize@IRQPreset@@QBEXAAVQDataStream@@@Z @ 4  NONAME ; void IRQPreset::externalize(class QDataStream &) const
 	?convertIRQPreset2CIRIsdsPreset@IRQUtility@@SAXABVIRQPreset@@AAVCIRIsdsPreset@@@Z @ 5  NONAME ; void IRQUtility::convertIRQPreset2CIRIsdsPreset(class IRQPreset const &, class CIRIsdsPreset &)
-	?identifySongAvailable@IRQUtility@@SA_NXZ @ 6  NONAME ; bool IRQUtility::identifySongAvailable(void)
-	?insertChannelServer@IRQPreset@@QAEXABVIRQChannelServerURL@@@Z @ 7  NONAME ; void IRQPreset::insertChannelServer(class IRQChannelServerURL const &)
-	?isSorted@IRQPreset@@QBE_NXZ @ 8  NONAME ; bool IRQPreset::isSorted(void) const
-	?internalize@IRQPreset@@QAEXAAVQDataStream@@@Z @ 9  NONAME ; void IRQPreset::internalize(class QDataStream &)
-	??0IRQPreset@@QAE@XZ @ 10  NONAME ; IRQPreset::IRQPreset(void)
-	?isValidUrl@IRQUtility@@SA_NABVQString@@@Z @ 11  NONAME ; bool IRQUtility::isValidUrl(class QString const &)
-	?sortURLArray@IRQPreset@@QAEXXZ @ 12  NONAME ; void IRQPreset::sortURLArray(void)
-	?clearChannelServerList@IRQPreset@@QAEXXZ @ 13  NONAME ; void IRQPreset::clearChannelServerList(void)
-	?convertCIRIsdsPreset2IRQPrest@IRQUtility@@SAXABVCIRIsdsPreset@@AAVIRQPreset@@@Z @ 14  NONAME ; void IRQUtility::convertCIRIsdsPreset2IRQPrest(class CIRIsdsPreset const &, class IRQPreset &)
-	?convertCIRPreset2IRQPreset@IRQUtility@@SAXABVCIRPreset@@AAVIRQPreset@@@Z @ 15  NONAME ; void IRQUtility::convertCIRPreset2IRQPreset(class CIRPreset const &, class IRQPreset &)
-	?openSongRecognition@IRQUtility@@SA_NXZ @ 16  NONAME ; bool IRQUtility::openSongRecognition(void)
-	??1IRQPreset@@QAE@XZ @ 17  NONAME ; IRQPreset::~IRQPreset(void)
-	?getChannelBitrate@IRQPreset@@QBEHIAAI@Z @ 18  NONAME ; int IRQPreset::getChannelBitrate(unsigned int, unsigned int &) const
-	?getURLsForBitrate@IRQPreset@@QBEPAV?$QList@VQString@@@@H@Z @ 19  NONAME ; class QList<class QString> * IRQPreset::getURLsForBitrate(int) const
-	?setUrlBitrate@IRQPreset@@QAE_NII@Z @ 20  NONAME ; bool IRQPreset::setUrlBitrate(unsigned int, unsigned int)
-	?getChannelUrlAt@IRQPreset@@QBEHHAAVQString@@@Z @ 21  NONAME ; int IRQPreset::getChannelUrlAt(int, class QString &) const
-	?getChannelURLCount@IRQPreset@@QBEHXZ @ 22  NONAME ; int IRQPreset::getChannelURLCount(void) const
-	??4IRQPreset@@QAEAAV0@ABV0@@Z @ 23  NONAME ; class IRQPreset & IRQPreset::operator=(class IRQPreset const &)
\ No newline at end of file
+	?setUrlBitrate@IRQPreset@@QAE_NII@Z @ 6  NONAME ; bool IRQPreset::setUrlBitrate(unsigned int, unsigned int)
+	?getChannelBitrate@IRQPreset@@QBEHIAAI@Z @ 7  NONAME ; int IRQPreset::getChannelBitrate(unsigned int, unsigned int &) const
+	?insertChannelServer@IRQPreset@@QAEXABVIRQChannelServerURL@@@Z @ 8  NONAME ; void IRQPreset::insertChannelServer(class IRQChannelServerURL const &)
+	?isSorted@IRQPreset@@QBE_NXZ @ 9  NONAME ; bool IRQPreset::isSorted(void) const
+	?internalize@IRQPreset@@QAEXAAVQDataStream@@@Z @ 10  NONAME ; void IRQPreset::internalize(class QDataStream &)
+	??0IRQPreset@@QAE@XZ @ 11  NONAME ; IRQPreset::IRQPreset(void)
+	?isValidUrl@IRQUtility@@SA_NABVQString@@@Z @ 12  NONAME ; bool IRQUtility::isValidUrl(class QString const &)
+	?sortURLArray@IRQPreset@@QAEXXZ @ 13  NONAME ; void IRQPreset::sortURLArray(void)
+	?appendURLL@IRQUtility@@CAXABVIRQPreset@@AAVCIRIsdsPreset@@@Z @ 14  NONAME ; void IRQUtility::appendURLL(class IRQPreset const &, class CIRIsdsPreset &)
+	?clearChannelServerList@IRQPreset@@QAEXXZ @ 15  NONAME ; void IRQPreset::clearChannelServerList(void)
+	?findAppByUid@IRQUtility@@SA_NH@Z @ 16  NONAME ; bool IRQUtility::findAppByUid(int)
+	?convertCIRIsdsPreset2IRQPrest@IRQUtility@@SAXABVCIRIsdsPreset@@AAVIRQPreset@@@Z @ 17  NONAME ; void IRQUtility::convertCIRIsdsPreset2IRQPrest(class CIRIsdsPreset const &, class IRQPreset &)
+	?convertCIRPreset2IRQPreset@IRQUtility@@SAXABVCIRPreset@@AAVIRQPreset@@@Z @ 18  NONAME ; void IRQUtility::convertCIRPreset2IRQPreset(class CIRPreset const &, class IRQPreset &)
+	?launchAppByUid@IRQUtility@@SA_NH@Z @ 19  NONAME ; bool IRQUtility::launchAppByUid(int)
+	??1IRQPreset@@QAE@XZ @ 20  NONAME ; IRQPreset::~IRQPreset(void)
+	?getURLsForBitrate@IRQPreset@@QBEPAV?$QList@VQString@@@@H@Z @ 21  NONAME ; class QList<class QString> * IRQPreset::getURLsForBitrate(int) const
+	?getChannelUrlAt@IRQPreset@@QBEHHAAVQString@@@Z @ 22  NONAME ; int IRQPreset::getChannelUrlAt(int, class QString &) const
+	?getChannelURLCount@IRQPreset@@QBEHXZ @ 23  NONAME ; int IRQPreset::getChannelURLCount(void) const
+	??4IRQPreset@@QAEAAV0@ABV0@@Z @ 24  NONAME ; class IRQPreset & IRQPreset::operator=(class IRQPreset const &)
\ No newline at end of file
--- a/qtinternetradio/common.pri	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/common.pri	Wed Aug 18 09:40:26 2010 +0300
@@ -12,12 +12,11 @@
 #
 # Description:
 
-DEFINES += SONGRECOGNITION_ENABLED
-DEFINES += USER_DEFINED_DISKSPACE
-DEFINES += USER_DEFINED_ISDSURL
+#DEFINES += USE_TEST_ISDS_SERVER
 #DEFINES += NOWPLAYING_VIEW_OPTION_B
 #DEFINES += ADV_ENABLED
 DEFINES += HS_WIDGET_ENABLED
+#DEFINES += STATISTIC_REPORT_TEST_ENABLED
 
 # ##########################################################
 # Logging flag definitions
--- a/qtinternetradio/eabi/irqisdsclientu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqisdsclientu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,24 +1,47 @@
 EXPORTS
 	_ZN13IRQIsdsClient11isdsGetIRIDEv @ 1 NONAME
 	_ZN13IRQIsdsClient11isdsPostLogERK7QString @ 2 NONAME
-	_ZN13IRQIsdsClient12openInstanceEv @ 3 NONAME
-	_ZN13IRQIsdsClient13closeInstanceEv @ 4 NONAME
-	_ZN13IRQIsdsClient14isdsMultSearchE7QStringS0_S0_S0_ @ 5 NONAME
-	_ZN13IRQIsdsClient14isdsSyncPresetEiRK7QStringP14IRQFavoritesDB @ 6 NONAME
-	_ZN13IRQIsdsClient16isdsIsLogoCachedEP9IRQPresetii @ 7 NONAME
-	_ZN13IRQIsdsClient17isdsCancelRequestEv @ 8 NONAME
-	_ZN13IRQIsdsClient17isdsListenRequestEib @ 9 NONAME
-	_ZN13IRQIsdsClient17isdsSearchRequestERK7QString @ 10 NONAME
-	_ZN13IRQIsdsClient18isdsChannelRequestEiRb @ 11 NONAME
-	_ZN13IRQIsdsClient19isdsCategoryRequestENS_25IRQIsdsClientInterfaceIDsERb @ 12 NONAME
-	_ZN13IRQIsdsClient19isdsGetBrowseBannerER7QStringS1_ @ 13 NONAME
-	_ZN13IRQIsdsClient19isdsIsChannelBannerEv @ 14 NONAME
-	_ZN13IRQIsdsClient19isdsIsChannelCachedEi @ 15 NONAME
-	_ZN13IRQIsdsClient20isdsIsCategoryBannerEv @ 16 NONAME
-	_ZN13IRQIsdsClient20isdsIsCategoryCachedENS_25IRQIsdsClientInterfaceIDsE @ 17 NONAME
-	_ZN13IRQIsdsClient23isdsLogoDownSendRequestEP9IRQPresetiii @ 18 NONAME
-	_ZN13IRQIsdsClient25isdsLogoDownSendCacheLogoEv @ 19 NONAME
-	_ZN13IRQIsdsClient26isdsLogoDownCheckCacheLogoERK7QStringRi @ 20 NONAME
-	_ZN13IRQIsdsClient29isdsLogoDownCancelTransactionEv @ 21 NONAME
-	_ZNK13IRQIsdsClient21isdsLogoDownIsRunningEv @ 22 NONAME
-	_ZNK13IRQIsdsClient22isdsIsConstructSucceedEv @ 23 NONAME
\ No newline at end of file
+	_ZN13IRQIsdsClient11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+	_ZN13IRQIsdsClient11qt_metacastEPKc @ 4 NONAME
+	_ZN13IRQIsdsClient12iridReceivedE7QString @ 5 NONAME
+	_ZN13IRQIsdsClient12openInstanceEv @ 6 NONAME
+	_ZN13IRQIsdsClient13closeInstanceEv @ 7 NONAME
+	_ZN13IRQIsdsClient14isdsMultSearchE7QStringS0_S0_S0_ @ 8 NONAME
+	_ZN13IRQIsdsClient14isdsSyncPresetEiRK7QStringP14IRQFavoritesDB @ 9 NONAME
+	_ZN13IRQIsdsClient14presetResponseEP9IRQPreset @ 10 NONAME
+	_ZN13IRQIsdsClient16isdsIsLogoCachedEP9IRQPresetii @ 11 NONAME
+	_ZN13IRQIsdsClient16staticMetaObjectE @ 12 NONAME DATA 16
+	_ZN13IRQIsdsClient16syncPresetResultE18IRQSycPresetStatusP9IRQPreset @ 13 NONAME
+	_ZN13IRQIsdsClient17isdsCancelRequestEv @ 14 NONAME
+	_ZN13IRQIsdsClient17isdsListenRequestEib @ 15 NONAME
+	_ZN13IRQIsdsClient17isdsSearchRequestERK7QString @ 16 NONAME
+	_ZN13IRQIsdsClient18isdsChannelRequestEiRb @ 17 NONAME
+	_ZN13IRQIsdsClient18operationExceptionE8IRQError @ 18 NONAME
+	_ZN13IRQIsdsClient19channelItemsChangedEP5QListIP14IRQChannelItemE @ 19 NONAME
+	_ZN13IRQIsdsClient19getStaticMetaObjectEv @ 20 NONAME
+	_ZN13IRQIsdsClient19isdsCategoryRequestENS_25IRQIsdsClientInterfaceIDsERb @ 21 NONAME
+	_ZN13IRQIsdsClient19isdsGetBrowseBannerER7QStringS1_ @ 22 NONAME
+	_ZN13IRQIsdsClient19isdsIsChannelBannerEv @ 23 NONAME
+	_ZN13IRQIsdsClient19isdsIsChannelCachedEi @ 24 NONAME
+	_ZN13IRQIsdsClient20categoryItemsChangedEP5QListIP21IRQBrowseCategoryItemE @ 25 NONAME
+	_ZN13IRQIsdsClient20isdsIsCategoryBannerEv @ 26 NONAME
+	_ZN13IRQIsdsClient20isdsIsCategoryCachedENS_25IRQIsdsClientInterfaceIDsE @ 27 NONAME
+	_ZN13IRQIsdsClient20presetLogoDownloadedEP9IRQPreset @ 28 NONAME
+	_ZN13IRQIsdsClient23isdsLogoDownSendRequestEP9IRQPresetiii @ 29 NONAME
+	_ZN13IRQIsdsClient23presetLogoDownloadErrorEv @ 30 NONAME
+	_ZN13IRQIsdsClient25isdsLogoDownSendCacheLogoEv @ 31 NONAME
+	_ZN13IRQIsdsClient26isdsLogoDownCheckCacheLogoERK7QStringRi @ 32 NONAME
+	_ZN13IRQIsdsClient29isdsLogoDownCancelTransactionEv @ 33 NONAME
+	_ZN13IRQIsdsClient4mRefE @ 34 NONAME DATA 4
+	_ZN13IRQIsdsClient6mMutexE @ 35 NONAME DATA 4
+	_ZN13IRQIsdsClient9mInstanceE @ 36 NONAME DATA 4
+	_ZN13IRQIsdsClientC1Ev @ 37 NONAME
+	_ZN13IRQIsdsClientC2Ev @ 38 NONAME
+	_ZN13IRQIsdsClientD0Ev @ 39 NONAME
+	_ZN13IRQIsdsClientD1Ev @ 40 NONAME
+	_ZN13IRQIsdsClientD2Ev @ 41 NONAME
+	_ZNK13IRQIsdsClient10metaObjectEv @ 42 NONAME
+	_ZNK13IRQIsdsClient21isdsLogoDownIsRunningEv @ 43 NONAME
+	_ZNK13IRQIsdsClient22isdsIsConstructSucceedEv @ 44 NONAME
+	_ZTI13IRQIsdsClient @ 45 NONAME DATA 12
+	_ZTV13IRQIsdsClient @ 46 NONAME DATA 56
--- a/qtinternetradio/eabi/irqmediaplayeru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqmediaplayeru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -7,4 +7,19 @@
 	_ZN14IRQMediaPlayer9setVolumeEi @ 6 NONAME
 	_ZN14IRQMediaPlayerC1Ev @ 7 NONAME
 	_ZN14IRQMediaPlayerC2Ev @ 8 NONAME
+	_ZN14IRQMediaPlayer11qt_metacallEN11QMetaObject4CallEiPPv @ 9 NONAME
+	_ZN14IRQMediaPlayer11qt_metacastEPKc @ 10 NONAME
+	_ZN14IRQMediaPlayer12errorOccuredE8IRQError @ 11 NONAME
+	_ZN14IRQMediaPlayer14volumeExpectedERi @ 12 NONAME
+	_ZN14IRQMediaPlayer16metaDataReceivedER11IRQMetaData @ 13 NONAME
+	_ZN14IRQMediaPlayer16staticMetaObjectE @ 14 NONAME DATA 16
+	_ZN14IRQMediaPlayer18percentageBufferedEi @ 15 NONAME
+	_ZN14IRQMediaPlayer19getStaticMetaObjectEv @ 16 NONAME
+	_ZN14IRQMediaPlayer21connectionEstablishedEi @ 17 NONAME
+	_ZN14IRQMediaPlayerD0Ev @ 18 NONAME
+	_ZN14IRQMediaPlayerD1Ev @ 19 NONAME
+	_ZN14IRQMediaPlayerD2Ev @ 20 NONAME
+	_ZNK14IRQMediaPlayer10metaObjectEv @ 21 NONAME
+	_ZTI14IRQMediaPlayer @ 22 NONAME DATA 12
+	_ZTV14IRQMediaPlayer @ 23 NONAME DATA 56
 
--- a/qtinternetradio/eabi/irqnetworkcontrolleru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqnetworkcontrolleru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -12,4 +12,21 @@
 	_ZNK20IRQNetworkController22identifyConnectionTypeEv @ 11 NONAME
 	_ZNK20IRQNetworkController22isConnectRequestIssuedEv @ 12 NONAME
 	_ZNK20IRQNetworkController8getIAPIdERm @ 13 NONAME
-
+	_ZN20IRQNetworkController11qt_metacallEN11QMetaObject4CallEiPPv @ 14 NONAME
+	_ZN20IRQNetworkController11qt_metacastEPKc @ 15 NONAME
+	_ZN20IRQNetworkController12errorOccuredE8IRQError @ 16 NONAME
+	_ZN20IRQNetworkController16staticMetaObjectE @ 17 NONAME DATA 16
+	_ZN20IRQNetworkController19getStaticMetaObjectEv @ 18 NONAME
+	_ZN20IRQNetworkController20networkEventNotifiedE15IRQNetworkEvent @ 19 NONAME
+	_ZN20IRQNetworkController20pendingRequestsResetEb @ 20 NONAME
+	_ZN20IRQNetworkController22networkRequestNotifiedE15IRQNetworkEvent @ 21 NONAME
+	_ZN20IRQNetworkController6mMutexE @ 22 NONAME DATA 4
+	_ZN20IRQNetworkController9mInstanceE @ 23 NONAME DATA 4
+	_ZN20IRQNetworkControllerC1Ev @ 24 NONAME
+	_ZN20IRQNetworkControllerC2Ev @ 25 NONAME
+	_ZN20IRQNetworkControllerD0Ev @ 26 NONAME
+	_ZN20IRQNetworkControllerD1Ev @ 27 NONAME
+	_ZN20IRQNetworkControllerD2Ev @ 28 NONAME
+	_ZNK20IRQNetworkController10metaObjectEv @ 29 NONAME
+	_ZTI20IRQNetworkController @ 30 NONAME DATA 12
+	_ZTV20IRQNetworkController @ 31 NONAME DATA 56
--- a/qtinternetradio/eabi/irqnwkinfoobserveru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqnwkinfoobserveru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,6 +1,22 @@
 EXPORTS
-	_ZN18IRQNwkInfoObserver12openInstanceEv @ 1 NONAME
-	_ZN18IRQNwkInfoObserver13closeInstanceEv @ 2 NONAME
-	_ZN18IRQNwkInfoObserver18stopMonitorNwkInfoEv @ 3 NONAME
-	_ZN18IRQNwkInfoObserver19startMonitorNwkInfoEv @ 4 NONAME
+	_ZN18IRQNwkInfoObserver11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN18IRQNwkInfoObserver11qt_metacastEPKc @ 2 NONAME
+	_ZN18IRQNwkInfoObserver12openInstanceEv @ 3 NONAME
+	_ZN18IRQNwkInfoObserver13closeInstanceEv @ 4 NONAME
+	_ZN18IRQNwkInfoObserver14homeNwkChangedERK7QStringS2_ @ 5 NONAME
+	_ZN18IRQNwkInfoObserver16staticMetaObjectE @ 6 NONAME DATA 16
+	_ZN18IRQNwkInfoObserver17currentNwkChangedERK7QStringS2_ @ 7 NONAME
+	_ZN18IRQNwkInfoObserver18stopMonitorNwkInfoEv @ 8 NONAME
+	_ZN18IRQNwkInfoObserver19getStaticMetaObjectEv @ 9 NONAME
+	_ZN18IRQNwkInfoObserver19startMonitorNwkInfoEv @ 10 NONAME
+	_ZN18IRQNwkInfoObserver6mMutexE @ 11 NONAME DATA 4
+	_ZN18IRQNwkInfoObserver9mInstanceE @ 12 NONAME DATA 4
+	_ZN18IRQNwkInfoObserverC1Ev @ 13 NONAME
+	_ZN18IRQNwkInfoObserverC2Ev @ 14 NONAME
+	_ZN18IRQNwkInfoObserverD0Ev @ 15 NONAME
+	_ZN18IRQNwkInfoObserverD1Ev @ 16 NONAME
+	_ZN18IRQNwkInfoObserverD2Ev @ 17 NONAME
+	_ZNK18IRQNwkInfoObserver10metaObjectEv @ 18 NONAME
+	_ZTI18IRQNwkInfoObserver @ 19 NONAME DATA 12
+	_ZTV18IRQNwkInfoObserver @ 20 NONAME DATA 56
 
--- a/qtinternetradio/eabi/irqsettingsu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqsettingsu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,26 +1,36 @@
 EXPORTS
-	_ZN11IRQSettings10getTimeOutEv @ 1 NONAME
-	_ZN11IRQSettings10setTimeOutEi @ 2 NONAME
-	_ZN11IRQSettings11privatePathEv @ 3 NONAME
-	_ZN11IRQSettings12openInstanceEv @ 4 NONAME
-	_ZN11IRQSettings13closeInstanceEv @ 5 NONAME
-	_ZN11IRQSettings14maxPresetCountEv @ 6 NONAME
-	_ZN11IRQSettings16getGlobalAdvFlagERb @ 7 NONAME
-	_ZN11IRQSettings16getVolumeSettingEv @ 8 NONAME
-	_ZN11IRQSettings16setVolumeSettingEi @ 9 NONAME
-	_ZN11IRQSettings17getStartingViewIdER9TIRViewId @ 10 NONAME
-	_ZN11IRQSettings17setMaxPresetCountEi @ 11 NONAME
-	_ZN11IRQSettings17setStartingViewIdEm @ 12 NONAME
-	_ZN11IRQSettings18getSongHistoryShowEv @ 13 NONAME
-	_ZN11IRQSettings18setSongHistoryShowEi @ 14 NONAME
-	_ZN11IRQSettings19setPreferredQualityE19IRQPreferredQuality @ 15 NONAME
-	_ZN11IRQSettings24isFlagTermsAndConditionsERb @ 16 NONAME
-	_ZN11IRQSettings25setFlagTermsAndConditionsEv @ 17 NONAME
-	_ZN11IRQSettings27reSetFlagTermsAndConditionsEv @ 18 NONAME
-	_ZN11IRQSettings29getManuallyInputtedStationUrlER7QString @ 19 NONAME
-	_ZN11IRQSettings29setManuallyInputtedStationUrlERK7QString @ 20 NONAME
-	_ZN11IRQSettings30getManuallyInputtedStationNameER7QString @ 21 NONAME
-	_ZN11IRQSettings30setManuallyInputtedStationNameERK7QString @ 22 NONAME
-	_ZN11IRQSettings7getIRIDER7QString @ 23 NONAME
-	_ZNK11IRQSettings19getPreferredQualityEv @ 24 NONAME
+	_ZN11IRQSettings10getIsdsUrlEv @ 1 NONAME
+	_ZN11IRQSettings10getTimeOutEv @ 2 NONAME
+	_ZN11IRQSettings10setTimeOutEi @ 3 NONAME
+	_ZN11IRQSettings11privatePathEv @ 4 NONAME
+	_ZN11IRQSettings12openInstanceEv @ 5 NONAME
+	_ZN11IRQSettings13closeInstanceEv @ 6 NONAME
+	_ZN11IRQSettings13getSearchTextER7QString @ 7 NONAME
+	_ZN11IRQSettings13setSearchTextERK7QString @ 8 NONAME
+	_ZN11IRQSettings16getGlobalAdvFlagERb @ 9 NONAME
+	_ZN11IRQSettings16getVolumeSettingEv @ 10 NONAME
+	_ZN11IRQSettings16setVolumeSettingEi @ 11 NONAME
+	_ZN11IRQSettings17getStartingViewIdER9TIRViewId @ 12 NONAME
+	_ZN11IRQSettings17setStartingViewIdEi @ 13 NONAME
+	_ZN11IRQSettings18getSongHistoryShowEv @ 14 NONAME
+	_ZN11IRQSettings18setSongHistoryShowEi @ 15 NONAME
+	_ZN11IRQSettings19setPreferredQualityE19IRQPreferredQuality @ 16 NONAME
+	_ZN11IRQSettings22getIdentifySongEnabledEv @ 17 NONAME
+	_ZN11IRQSettings23getMinDiskSpaceRequiredEv @ 18 NONAME
+	_ZN11IRQSettings24getSongRecognitionAppUidEv @ 19 NONAME
+	_ZN11IRQSettings24isFlagTermsAndConditionsERb @ 20 NONAME
+	_ZN11IRQSettings25setFlagTermsAndConditionsEv @ 21 NONAME
+	_ZN11IRQSettings27reSetFlagTermsAndConditionsEv @ 22 NONAME
+	_ZN11IRQSettings29getManuallyInputtedStationUrlER7QString @ 23 NONAME
+	_ZN11IRQSettings29setManuallyInputtedStationUrlERK7QString @ 24 NONAME
+	_ZN11IRQSettings30getManuallyInputtedStationNameER7QString @ 25 NONAME
+	_ZN11IRQSettings30setManuallyInputtedStationNameERK7QString @ 26 NONAME
+	_ZN11IRQSettings6mMutexE @ 27 NONAME DATA 4
+	_ZN11IRQSettings7getIRIDER7QString @ 28 NONAME
+	_ZN11IRQSettings9mInstanceE @ 29 NONAME DATA 4
+	_ZN11IRQSettingsC1Ev @ 30 NONAME
+	_ZN11IRQSettingsC2Ev @ 31 NONAME
+	_ZN11IRQSettingsD1Ev @ 32 NONAME
+	_ZN11IRQSettingsD2Ev @ 33 NONAME
+	_ZNK11IRQSettings19getPreferredQualityEv @ 34 NONAME
 
--- a/qtinternetradio/eabi/irqsonghistoryu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqsonghistoryu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -4,7 +4,7 @@
 	_ZN11IRQSongInfo13setArtistNameERK7QString @ 3 NONAME
 	_ZN11IRQSongInfo14setStationNameERK7QString @ 4 NONAME
 	_ZN11IRQSongInfo18setMusicshopStatusERK7QString @ 5 NONAME
-	_ZN18CIRSongHistoryInfo14SetHistoryInfoER6RBuf16S1_S1_S1_iiiS1_S1_S1_S1_S1_S1_ @ 6 NONAME
+	_ZN18CIRSongHistoryInfo15SetHistoryInfoLER6RBuf16S1_S1_S1_iiiS1_S1_S1_S1_S1_S1_ @ 6 NONAME
 	_ZN18CIRSongHistoryInfo4NewLEv @ 7 NONAME
 	_ZN18CIRSongHistoryInfo5NewLCEv @ 8 NONAME
 	_ZN18CIRSongHistoryInfoD0Ev @ 9 NONAME
--- a/qtinternetradio/eabi/irqstatisticsreporteru.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqstatisticsreporteru.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,21 +1,21 @@
 EXPORTS
-	_ZN21IRQStatisticsReporter10mInstatnceE @ 1 NONAME DATA 4
-	_ZN21IRQStatisticsReporter11logNmsEventENS_9IRNmsTypeEi @ 2 NONAME
-	_ZN21IRQStatisticsReporter11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
-	_ZN21IRQStatisticsReporter11qt_metacastEPKc @ 4 NONAME
-	_ZN21IRQStatisticsReporter12openInstanceEv @ 5 NONAME
-	_ZN21IRQStatisticsReporter12sessionEndedENS_16IRTerminatedTypeE @ 6 NONAME
-	_ZN21IRQStatisticsReporter13closeInstanceEv @ 7 NONAME
-	_ZN21IRQStatisticsReporter14restartSessionEv @ 8 NONAME
-	_ZN21IRQStatisticsReporter14sessionStartedEiNS_15IRConnectedFromE @ 9 NONAME
-	_ZN21IRQStatisticsReporter14suspendSessionEv @ 10 NONAME
-	_ZN21IRQStatisticsReporter15logServerResultERK7QStringNS_14IRServerResultE @ 11 NONAME
-	_ZN21IRQStatisticsReporter16markSessionStartEv @ 12 NONAME
-	_ZN21IRQStatisticsReporter16staticMetaObjectE @ 13 NONAME DATA 16
-	_ZN21IRQStatisticsReporter17logSongRecogEventEv @ 14 NONAME
-	_ZN21IRQStatisticsReporter19getStaticMetaObjectEv @ 15 NONAME
-	_ZN21IRQStatisticsReporter4mRefE @ 16 NONAME DATA 4
-	_ZN21IRQStatisticsReporter6mMutexE @ 17 NONAME DATA 4
+	_ZN21IRQStatisticsReporter11logNmsEventENS_9IRNmsTypeEi @ 1 NONAME
+	_ZN21IRQStatisticsReporter11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
+	_ZN21IRQStatisticsReporter11qt_metacastEPKc @ 3 NONAME
+	_ZN21IRQStatisticsReporter12openInstanceEv @ 4 NONAME
+	_ZN21IRQStatisticsReporter12sessionEndedENS_16IRTerminatedTypeE @ 5 NONAME
+	_ZN21IRQStatisticsReporter13closeInstanceEv @ 6 NONAME
+	_ZN21IRQStatisticsReporter14restartSessionEv @ 7 NONAME
+	_ZN21IRQStatisticsReporter14sessionStartedEiNS_15IRConnectedFromE @ 8 NONAME
+	_ZN21IRQStatisticsReporter14suspendSessionEv @ 9 NONAME
+	_ZN21IRQStatisticsReporter15logServerResultERK7QStringNS_14IRServerResultE @ 10 NONAME
+	_ZN21IRQStatisticsReporter16markSessionStartEv @ 11 NONAME
+	_ZN21IRQStatisticsReporter16staticMetaObjectE @ 12 NONAME DATA 16
+	_ZN21IRQStatisticsReporter17logSongRecogEventEv @ 13 NONAME
+	_ZN21IRQStatisticsReporter19getStaticMetaObjectEv @ 14 NONAME
+	_ZN21IRQStatisticsReporter4mRefE @ 15 NONAME DATA 4
+	_ZN21IRQStatisticsReporter6mMutexE @ 16 NONAME DATA 4
+	_ZN21IRQStatisticsReporter9mInstanceE @ 17 NONAME DATA 4
 	_ZN21IRQStatisticsReporterC1Ev @ 18 NONAME
 	_ZN21IRQStatisticsReporterC2Ev @ 19 NONAME
 	_ZN21IRQStatisticsReporterD0Ev @ 20 NONAME
@@ -23,4 +23,5 @@
 	_ZN21IRQStatisticsReporterD2Ev @ 22 NONAME
 	_ZNK21IRQStatisticsReporter10metaObjectEv @ 23 NONAME
 	_ZTI21IRQStatisticsReporter @ 24 NONAME DATA 12
-	_ZTV21IRQStatisticsReporter @ 25 NONAME DATA 56
\ No newline at end of file
+	_ZTV21IRQStatisticsReporter @ 25 NONAME DATA 56
+
--- a/qtinternetradio/eabi/irqutilityu.def	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/eabi/irqutilityu.def	Wed Aug 18 09:40:26 2010 +0300
@@ -1,27 +1,27 @@
 EXPORTS
-	_ZN10IRQUtility10isValidUrlERK7QString @ 1 NONAME
-	_ZN10IRQUtility11openAdvLinkERK7QString @ 2 NONAME
-	_ZN10IRQUtility19openSongRecognitionEv @ 3 NONAME
-	_ZN10IRQUtility20convertSError2QErrorEiRi @ 4 NONAME
-	_ZN10IRQUtility21identifySongAvailableEv @ 5 NONAME
-	_ZN10IRQUtility26convertCIRPreset2IRQPresetERK9CIRPresetR9IRQPreset @ 6 NONAME
-	_ZN10IRQUtility29convertCIRIsdsPreset2IRQPrestERK13CIRIsdsPresetR9IRQPreset @ 7 NONAME
-	_ZN10IRQUtility30convertIRQPreset2CIRIsdsPresetERK9IRQPresetR13CIRIsdsPreset @ 8 NONAME
-	_ZN9IRQPreset11internalizeER11QDataStream @ 9 NONAME
-	_ZN9IRQPreset12sortURLArrayEv @ 10 NONAME
-	_ZN9IRQPreset13setUrlBitrateEjj @ 11 NONAME
-	_ZN9IRQPreset19insertChannelServerERK19IRQChannelServerURL @ 12 NONAME
-	_ZN9IRQPreset22clearChannelServerListEv @ 13 NONAME
-	_ZN9IRQPresetC1Ev @ 14 NONAME
-	_ZN9IRQPresetC2Ev @ 15 NONAME
-	_ZN9IRQPresetD1Ev @ 16 NONAME
-	_ZN9IRQPresetD2Ev @ 17 NONAME
-	_ZN9IRQPresetaSERKS_ @ 18 NONAME
-	_ZNK9IRQPreset11externalizeER11QDataStream @ 19 NONAME
-	_ZNK9IRQPreset15getChannelUrlAtEiR7QString @ 20 NONAME
-	_ZNK9IRQPreset17getChannelBitrateEjRj @ 21 NONAME
-	_ZNK9IRQPreset17getURLsForBitrateEi @ 22 NONAME
-	_ZNK9IRQPreset18getChannelURLCountEv @ 23 NONAME
-	_ZNK9IRQPreset20getAvailableBitratesER5QListIiE @ 24 NONAME
-	_ZNK9IRQPreset8isSortedEv @ 25 NONAME
-
+	_ZN10IRQUtility10appendURLLERK9IRQPresetR13CIRIsdsPreset @ 1 NONAME
+	_ZN10IRQUtility10isValidUrlERK7QString @ 2 NONAME
+	_ZN10IRQUtility11openAdvLinkERK7QString @ 3 NONAME
+	_ZN10IRQUtility12findAppByUidEi @ 4 NONAME
+	_ZN10IRQUtility14launchAppByUidEi @ 5 NONAME
+	_ZN10IRQUtility20convertSError2QErrorEiRi @ 6 NONAME
+	_ZN10IRQUtility26convertCIRPreset2IRQPresetERK9CIRPresetR9IRQPreset @ 7 NONAME
+	_ZN10IRQUtility29convertCIRIsdsPreset2IRQPrestERK13CIRIsdsPresetR9IRQPreset @ 8 NONAME
+	_ZN10IRQUtility30convertIRQPreset2CIRIsdsPresetERK9IRQPresetR13CIRIsdsPreset @ 9 NONAME
+	_ZN9IRQPreset11internalizeER11QDataStream @ 10 NONAME
+	_ZN9IRQPreset12sortURLArrayEv @ 11 NONAME
+	_ZN9IRQPreset13setUrlBitrateEjj @ 12 NONAME
+	_ZN9IRQPreset19insertChannelServerERK19IRQChannelServerURL @ 13 NONAME
+	_ZN9IRQPreset22clearChannelServerListEv @ 14 NONAME
+	_ZN9IRQPresetC1Ev @ 15 NONAME
+	_ZN9IRQPresetC2Ev @ 16 NONAME
+	_ZN9IRQPresetD1Ev @ 17 NONAME
+	_ZN9IRQPresetD2Ev @ 18 NONAME
+	_ZN9IRQPresetaSERKS_ @ 19 NONAME
+	_ZNK9IRQPreset11externalizeER11QDataStream @ 20 NONAME
+	_ZNK9IRQPreset15getChannelUrlAtEiR7QString @ 21 NONAME
+	_ZNK9IRQPreset17getChannelBitrateEjRj @ 22 NONAME
+	_ZNK9IRQPreset17getURLsForBitrateEi @ 23 NONAME
+	_ZNK9IRQPreset18getChannelURLCountEv @ 24 NONAME
+	_ZNK9IRQPreset20getAvailableBitratesER5QListIiE @ 25 NONAME
+	_ZNK9IRQPreset8isSortedEv @ 26 NONAME
\ No newline at end of file
--- a/qtinternetradio/install/hb_armv5_urel.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-; hb_armv5_urel.pkg generated by qmake at 2009-08-28T15:17:52
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"hb"},(0xE1803b06),1,0,0
-
-; Localised Vendor name
-%{"Nokia, Qt Software"}
-
-; Unique Vendor name
-:"Nokia, Qt Software"
-
-; Dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-(0x2001E61C), 4, 5, 2, {"QtLibs pre-release"}
-
-; DEPLOYMENT
-"r:/epoc32/release/armv5/urel/HbCore.dll"    - "!:\sys\bin\HbCore.dll"
-"r:/epoc32/release/armv5/urel/HbWidgets.dll"    - "!:\sys\bin\HbWidgets.dll"
-"r:/epoc32/release/armv5/urel/HbInput.dll"    - "!:\sys\bin\HbInput.dll"
-"r:/epoc32/release/armv5/urel/HbFeedback.dll"    - "!:\sys\bin\HbFeedback.dll"
-"r:/epoc32/release/armv5/urel/HbTactilePlugin.dll"    - "!:\sys\bin\HbTactilePlugin.dll"
-"r:/orbit/hb/qmakepluginstubs/HbTactilePlugin.qtplugin"    - "!:\resource\qt\plugins\hb\interaction\HbTactilePlugin.qtplugin"
-
-"r:\epoc32\release\armv5\urel\hbthemeserver.exe"                          - "!:\sys\bin\hbthemeserver.exe"
-"r:\epoc32\data\z\resource\apps\hbthemeserver.rsc"                                - "!:\resource\apps\hbthemeserver.rsc"
-"r:\epoc32\data\z\private\10003a3f\import\apps\hbthemeserver_reg.rsc"             - "!:\private\10003a3f\import\apps\hbthemeserver_reg.rsc"
- 
-"r:\epoc32\release\armv5\urel\hbiconpreloader.exe"                          - "!:\sys\bin\hbiconpreloader.exe"
-"r:\epoc32\data\z\resource\apps\hbiconpreloader.rsc"                              - "!:\resource\apps\hbiconpreloader.rsc"
-"r:\epoc32\data\z\private\10003a3f\import\apps\hbiconpreloader_reg.rsc"           - "!:\private\10003a3f\import\apps\hbiconpreloader_reg.rsc"
- 
-"r:\epoc32\release\armv5\urel\hbdevicedialogappserver.exe"                        - "!:\sys\bin\hbdevicedialogappserver.exe"
-"r:\epoc32\data\z\resource\apps\hbdevicedialogappserver.rsc"                      - "!:\resource\apps\hbdevicedialogappserver.rsc"
-"r:\epoc32\data\z\private\10003a3f\import\apps\hbdevicedialogappserver_reg.rsc"   - "!:\private\10003a3f\import\apps\hbdevicedialogappserver_reg.rsc"
-
-"r:/epoc32/release/armv5/urel/HbGlobalCommonNotePlugin.dll"    - "!:\sys\bin\HbGlobalCommonNotePlugin.dll"
-"r:/orbit/hb/src/hbplugins/devicedialogs/globalcommonnoteplugin/qmakepluginstubs/HbGlobalCommonNotePlugin.qtplugin"    - "!:\resource\plugins\devicedialogs\HbGlobalCommonNotePlugin.qtplugin"
-
-"r:/epoc32/release/armv5/urel/HbDeviceNotificationDialogPlugin.dll"    - "!:\sys\bin\HbDeviceNotificationDialogPlugin.dll"
-"r:/orbit/hb/src/hbplugins/devicedialogs/devicenotificationdialogplugin/qmakepluginstubs/HbDeviceNotificationDialogPlugin.qtplugin"    - "!:\resource\plugins\devicedialogs\HbDeviceNotificationDialogPlugin.qtplugin"
-
-"r:/epoc32/release/armv5/urel/HbDeviceProgressDialogPlugin.dll"    - "!:\sys\bin\HbDeviceProgressDialogPlugin.dll"
-"r:/orbit/hb/src/hbplugins/devicedialogs/deviceprogressdialogplugin/qmakepluginstubs/HbDeviceProgressDialogPlugin.qtplugin"    - "!:\resource\plugins\devicedialogs\HbDeviceProgressDialogPlugin.qtplugin"
-
-"r:/epoc32/release/armv5/urel/HbGlobalConfirmationQueryPlugin.dll"    - "!:\sys\bin\HbGlobalConfirmationQueryPlugin.dll"
-"r:/orbit/hb/src/hbplugins/devicedialogs/globalconfirmationqueryplugin/qmakepluginstubs/HbGlobalConfirmationQueryPlugin.qtplugin"    - "!:\resource\plugins\devicedialogs\HbGlobalConfirmationQueryPlugin.qtplugin"
-
-"r:/epoc32/release/armv5/urel/HbIndicatorPopupPlugin.dll"    - "!:\sys\bin\HbIndicatorPopupPlugin.dll"
-"r:/orbit/hb/src/hbplugins/devicedialogs/indicatorpopupplugin/qmakepluginstubs/HbIndicatorPopupPlugin.qtplugin"    - "!:\resource\plugins\devicedialogs\HbIndicatorPopupPlugin.qtplugin"
--- a/qtinternetradio/install/ir1_qt_libs_armv5_udeb.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-; qt_libs_armv5_udeb.pkg generated by qmake at Thu May 14 09:07:56 2009
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"QtLibs pre-release"},(0x2001E61C),4,5,0
-
-; Localised Vendor name
-%{"Nokia, Qt Software"}
-
-; Unique Vendor name
-:"Nokia, Qt Software"
-
-; Dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-(0x20009a80), 1, 0, 0, {"Symbian OS PIPS"}
-
-; DEPLOYMENT
-"r:\epoc32\data\z\resource\apps\s60main.rsc"    - "!:\resource\apps\s60main.rsc"
-"r:\epoc32\release\armv5\udeb\QtCore.dll"    - "!:\sys\bin\QtCore.dll"
-"r:\epoc32\release\armv5\udeb\QtXml.dll"    - "!:\sys\bin\QtXml.dll"
-"r:\epoc32\release\armv5\udeb\QtGui.dll"    - "!:\sys\bin\QtGui.dll"
-"r:\epoc32\release\armv5\udeb\QtNetwork.dll"    - "!:\sys\bin\QtNetwork.dll"
-"r:\epoc32\release\armv5\udeb\QtScript.dll"    - "!:\sys\bin\QtScript.dll"
-"r:\epoc32\release\armv5\udeb\QtTest.dll"    - "!:\sys\bin\QtTest.dll"
-"r:\epoc32\release\armv5\udeb\QtSvg.dll"    - "!:\sys\bin\QtSvg.dll"
-"r:\epoc32\release\armv5\udeb\qjpeg.dll"    - "!:\sys\bin\qjpeg.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qjpeg.qtplugin"    - "!:\resource\qt\plugins\imageformats\qjpeg.qtplugin"
-"r:\epoc32\release\armv5\udeb\qgif.dll"    - "!:\sys\bin\qgif.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qgif.qtplugin"    - "!:\resource\qt\plugins\imageformats\qgif.qtplugin"
-"r:\epoc32\release\armv5\udeb\qmng.dll"    - "!:\sys\bin\qmng.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qmng.qtplugin"    - "!:\resource\qt\plugins\imageformats\qmng.qtplugin"
-"r:\epoc32\release\armv5\udeb\qtiff.dll"    - "!:\sys\bin\qtiff.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qtiff.qtplugin"    - "!:\resource\qt\plugins\imageformats\qtiff.qtplugin"
-"r:\epoc32\release\armv5\udeb\qico.dll"    - "!:\sys\bin\qico.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qico.qtplugin"    - "!:\resource\qt\plugins\imageformats\qico.qtplugin"
-"r:\epoc32\release\armv5\udeb\qsvg.dll"    - "!:\sys\bin\qsvg.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qsvg.qtplugin"    - "!:\resource\qt\plugins\imageformats\qsvg.qtplugin"
-"r:\epoc32\release\armv5\udeb\qcncodecs.dll"    - "!:\sys\bin\qcncodecs.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qcncodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qcncodecs.qtplugin"
-"r:\epoc32\release\armv5\udeb\qjpcodecs.dll"    - "!:\sys\bin\qjpcodecs.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qjpcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qjpcodecs.qtplugin"
-"r:\epoc32\release\armv5\udeb\qtwcodecs.dll"    - "!:\sys\bin\qtwcodecs.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qtwcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qtwcodecs.qtplugin"
-"r:\epoc32\release\armv5\udeb\qkrcodecs.dll"    - "!:\sys\bin\qkrcodecs.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qkrcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qkrcodecs.qtplugin"
-"r:\epoc32\release\armv5\udeb\qsvgicon.dll"    - "!:\sys\bin\qsvgicon.dll"
-"r:\qt\src\s60installs\qmakepluginstubs\qsvgicon.qtplugin"    - "!:\resource\qt\plugins\iconengines\qsvgicon.qtplugin"
--- a/qtinternetradio/install/ir2_orbitinput_armv5_udeb.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-; orbitinput_armv5_udeb.pkg generated by qmake at Fri May 15 11:26:50 2009
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"hbinput"},(0xE8bb8055),1,0,0
-
-; Localised Vendor name
-%{"Nokia, Qt Software"}
-
-; Unique Vendor name
-:"Nokia, Qt Software"
-
-; Dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-(0x2001E61C), 4, 5, 0, {"QtLibs pre-release"}
-
-; DEPLOYMENT
-"r:\epoc32\release\armv5\udeb\touchinput.dll"    - "!:\sys\bin\touchinput.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\touchinput.qtplugin"    - "!:\hbinputs\inputmethods\touchinput.qtplugin"
-"r:\orbit\hbinputs\resources\accent.png"    - "!:\hbinputs\resources\accent.png"
-"r:\orbit\hbinputs\resources\background.png"    - "!:\hbinputs\resources\background.png"
-"r:\orbit\hbinputs\resources\bullet.png"    - "!:\hbinputs\resources\bullet.png"
-"r:\orbit\hbinputs\resources\close_handle.png"    - "!:\hbinputs\resources\close_handle.png"
-"r:\orbit\hbinputs\resources\close_handle_background.png"    - "!:\hbinputs\resources\close_handle_background.png"
-"r:\orbit\hbinputs\resources\keypad_landscape.png"    - "!:\hbinputs\resources\keypad_landscape.png"
-"r:\orbit\hbinputs\resources\keypad_portrait.png"    - "!:\hbinputs\resources\keypad_portrait.png"
-"r:\orbit\hbinputs\resources\red_button.png"    - "!:\hbinputs\resources\red_button.png"
-"r:\orbit\hbinputs\resources\red_button_mask.png"    - "!:\hbinputs\resources\red_button_mask.png"
-"r:\orbit\hbinputs\resources\sym.png"    - "!:\hbinputs\resources\sym.png"
-"r:\orbit\hbinputs\resources\test_multimode_lower.png"    - "!:\hbinputs\resources\test_multimode_lower.png"
-"r:\orbit\hbinputs\resources\test_multimode_text.png"    - "!:\hbinputs\resources\test_multimode_text.png"
-"r:\orbit\hbinputs\resources\test_multimode_upper.png"    - "!:\hbinputs\resources\test_multimode_upper.png"
-"r:\orbit\hbinputs\resources\test_numbermode.png"    - "!:\hbinputs\resources\test_numbermode.png"
-"r:\orbit\hbinputs\resources\test_pinyin.png"    - "!:\hbinputs\resources\test_pinyin.png"
-"r:\orbit\hbinputs\resources\test_predictivemode_lower.png"    - "!:\hbinputs\resources\test_predictivemode_lower.png"
-"r:\orbit\hbinputs\resources\test_predictivemode_text.png"    - "!:\hbinputs\resources\test_predictivemode_text.png"
-"r:\orbit\hbinputs\resources\test_predictivemode_upper.png"    - "!:\hbinputs\resources\test_predictivemode_upper.png"
-"r:\orbit\hbinputs\resources\test_stroke.png"    - "!:\hbinputs\resources\test_stroke.png"
-"r:\orbit\hbinputs\resources\test_virtual_return.png"    - "!:\hbinputs\resources\test_virtual_return.png"
-"r:\orbit\hbinputs\resources\test_virtual_return_mask.png"    - "!:\hbinputs\resources\test_virtual_return_mask.png"
-"r:\orbit\hbinputs\resources\test_virtual_shift.png"    - "!:\hbinputs\resources\test_virtual_shift.png"
-"r:\orbit\hbinputs\resources\test_virtual_shift_mask.png"    - "!:\hbinputs\resources\test_virtual_shift_mask.png"
-"r:\orbit\hbinputs\resources\vkb_top.png"    - "!:\hbinputs\resources\vkb_top.png"
-"r:\orbit\hbinputs\resources\rocker_normal.svg"    - "!:\hbinputs\resources\rocker_normal.svg"
-"r:\orbit\hbinputs\resources\rocker_selection.svg"    - "!:\hbinputs\resources\rocker_selection.svg"
-"r:\orbit\hbinputs\resources\test_zhuyin.svg"    - "!:\hbinputs\resources\test_zhuyin.svg"
-"r:\epoc32\release\armv5\udeb\HbKeymappings_1.dll"    - "!:\sys\bin\HbKeymappings_1.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\HbKeymappings_1.qtplugin"    - "!:\hbinputs\keymappings\HbKeymappings_1.qtplugin"
-"r:\epoc32\release\armv5\udeb\HbKeymappings_2.dll"    - "!:\sys\bin\HbKeymappings_2.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\HbKeymappings_2.qtplugin"    - "!:\hbinputs\keymappings\HbKeymappings_2.qtplugin"
-"r:\epoc32\release\armv5\udeb\HbKeymappings_3.dll"    - "!:\sys\bin\HbKeymappings_3.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\HbKeymappings_3.qtplugin"    - "!:\hbinputs\keymappings\HbKeymappings_3.qtplugin"
-"r:\epoc32\release\armv5\udeb\HbKeymappings_4.dll"    - "!:\sys\bin\HbKeymappings_4.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\HbKeymappings_4.qtplugin"    - "!:\hbinputs\keymappings\HbKeymappings_4.qtplugin"
-"r:\epoc32\release\armv5\udeb\hb.dll"    - "!:\sys\bin\hb.dll"
-"r:\epoc32\release\armv5\udeb\hbinput.dll"    - "!:\sys\bin\hbinput.dll"
-"r:\epoc32\release\armv5\udeb\hbinputhw.dll"    - "!:\sys\bin\hbinputhw.dll"
-"r:\epoc32\release\armv5\udeb\hbinteractionmanager.dll"    - "!:\sys\bin\hbinteractionmanager.dll"
-"r:\epoc32\release\armv5\udeb\HbAutoComplete.dll"    - "!:\sys\bin\HbAutoComplete.dll"
-"r:\orbit\hbinputs\internal\build\qmakepluginstubs\HbAutoComplete.qtplugin"    - "!:\hbinputs\engines\HbAutoComplete.qtplugin"
--- a/qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg	Wed Aug 18 09:40:26 2010 +0300
@@ -49,7 +49,7 @@
 ;qtinternetradio
 "\epoc32\release\armv5\urel\internet_radio_10_1.exe"    - "!:\sys\bin\internet_radio_10_1.exe"
 "\epoc32\data\z\resource\apps\internet_radio_10_1.rsc"    - "!:\resource\apps\internet_radio_10_1.rsc"
-"\epoc32\data\z\resource\apps\internet_radio_10_1.mif"    - "!:\resource\apps\internet_radio_10_1.mif"
+;"\epoc32\data\z\resource\apps\internet_radio_10_1.mif"    - "!:\resource\apps\internet_radio_10_1.mif"
 "\epoc32\data\z\private\10003a3f\import\apps\internet_radio_10_1_reg.rsc"    - "!:\private\10003a3f\import\apps\internet_radio_10_1_reg.rsc"
 "\epoc32\data\z\resource\qt\translations\internet_radio_10_1_en.qm"  - "!:\resource\qt\translations\internet_radio_10_1_en.qm"
 "\epoc32\release\armv5\urel\irqnetworkcontroller.dll"    - "!:\sys\bin\irqnetworkcontroller.dll"
--- a/qtinternetradio/install/qt_libs_armv5_urel.pkg	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-; qt_libs_armv5_urel.pkg generated by qmake at 2009-08-28T11:24:34
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"QtLibs pre-release"},(0x2001E61C),4,5,2
-
-; Localised Vendor name
-%{"Nokia, Qt Software"}
-
-; Unique Vendor name
-:"Nokia, Qt Software"
-
-; Dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-(0x20013851), 1, 5, 1, {"PIPS Installer"}
-(0x200110CB), 1, 5, 1, {"Open C LIBSSL Common"}
-(0x2000F866), 1, 0, 0, {"Standard C++ Library Common"}
-
-; DEPLOYMENT
-"r:/epoc32/data/z/resource/apps/s60main.rsc"    - "!:\resource\apps\s60main.rsc"
-"r:/epoc32/release/armv5/urel/QtCore.dll"    - "!:\sys\bin\QtCore.dll"
-"r:/epoc32/release/armv5/urel/QtXml.dll"    - "!:\sys\bin\QtXml.dll"
-"r:/epoc32/release/armv5/urel/QtGui.dll"    - "!:\sys\bin\QtGui.dll"
-"r:/epoc32/release/armv5/urel/QtNetwork.dll"    - "!:\sys\bin\QtNetwork.dll"
-"r:/epoc32/release/armv5/urel/QtScript.dll"    - "!:\sys\bin\QtScript.dll"
-"r:/epoc32/release/armv5/urel/QtTest.dll"    - "!:\sys\bin\QtTest.dll"
-"r:/epoc32/release/armv5/urel/QtSql.dll"    - "!:\sys\bin\QtSql.dll"
-"r:/epoc32/release/armv5/urel/qts60plugin_3_1.dll"    - "!:\sys\bin\qts60plugin_3_1.dll"
-"r:/epoc32/release/armv5/urel/qts60plugin_3_2.dll"    - "!:\sys\bin\qts60plugin_3_2.dll"
-"r:/epoc32/release/armv5/urel/qts60plugin_5_0.dll"    - "!:\sys\bin\qts60plugin_5_0.dll"
-"r:/epoc32/release/armv5/urel/sqlite3.dll"    - "!:\sys\bin\sqlite3.dll"
-"r:/epoc32/release/armv5/urel/QtSvg.dll"    - "!:\sys\bin\QtSvg.dll"
-"r:/epoc32/release/armv5/urel/Phonon.dll"    - "!:\sys\bin\Phonon.dll"
-"r:/epoc32/release/armv5/urel/qjpeg.dll"    - "!:\sys\bin\qjpeg.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qjpeg.qtplugin"    - "!:\resource\qt\plugins\imageformats\qjpeg.qtplugin"
-"r:/epoc32/release/armv5/urel/qgif.dll"    - "!:\sys\bin\qgif.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qgif.qtplugin"    - "!:\resource\qt\plugins\imageformats\qgif.qtplugin"
-"r:/epoc32/release/armv5/urel/qmng.dll"    - "!:\sys\bin\qmng.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qmng.qtplugin"    - "!:\resource\qt\plugins\imageformats\qmng.qtplugin"
-"r:/epoc32/release/armv5/urel/qtiff.dll"    - "!:\sys\bin\qtiff.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qtiff.qtplugin"    - "!:\resource\qt\plugins\imageformats\qtiff.qtplugin"
-"r:/epoc32/release/armv5/urel/qico.dll"    - "!:\sys\bin\qico.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qico.qtplugin"    - "!:\resource\qt\plugins\imageformats\qico.qtplugin"
-"r:/epoc32/release/armv5/urel/qsvg.dll"    - "!:\sys\bin\qsvg.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qsvg.qtplugin"    - "!:\resource\qt\plugins\imageformats\qsvg.qtplugin"
-"r:/epoc32/release/armv5/urel/qcncodecs.dll"    - "!:\sys\bin\qcncodecs.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qcncodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qcncodecs.qtplugin"
-"r:/epoc32/release/armv5/urel/qjpcodecs.dll"    - "!:\sys\bin\qjpcodecs.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qjpcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qjpcodecs.qtplugin"
-"r:/epoc32/release/armv5/urel/qtwcodecs.dll"    - "!:\sys\bin\qtwcodecs.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qtwcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qtwcodecs.qtplugin"
-"r:/epoc32/release/armv5/urel/qkrcodecs.dll"    - "!:\sys\bin\qkrcodecs.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qkrcodecs.qtplugin"    - "!:\resource\qt\plugins\codecs\qkrcodecs.qtplugin"
-"r:/epoc32/release/armv5/urel/qsvgicon.dll"    - "!:\sys\bin\qsvgicon.dll"
-"r:/qt/src/s60installs/qmakepluginstubs/qsvgicon.qtplugin"    - "!:\resource\qt\plugins\iconengines\qsvgicon.qtplugin"
--- a/qtinternetradio/irhswidgetplugin/inc/irhswidget.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/inc/irhswidget.h	Wed Aug 18 09:40:26 2010 +0300
@@ -86,6 +86,9 @@
     void handleStationLogoUpdated(bool aLogoAvailable);
     void handleMetaDataUpdated(const QString &aMetaData);
     void handleIrStateUpdated(IrAppState::Type aNewState);
+    
+    // used for timer event for launch nowplaying view
+    void launchNowplayingView();
 
 private:    
     bool mUserActionEnabled;
--- a/qtinternetradio/irhswidgetplugin/inc/irhswidgetmetadatarow.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/inc/irhswidgetmetadatarow.h	Wed Aug 18 09:40:26 2010 +0300
@@ -26,6 +26,7 @@
 //FORWARD DECLARATIONS:
 class HbLabel;
 class HbMarqueeItem;
+class QEvent;
 
 class IrHsWidgetMetaDataRow : public HbWidget
 {
@@ -45,9 +46,12 @@
     void setLoadingIcon(); 
     
 private:
-    // from QObject
-    bool eventFilter(QObject *aObject, QEvent *aEvent);
-
+    // from HbWidgetBase
+    void gestureEvent(QGestureEvent *aEvent);
+    
+    // from HbWidget
+    void changeEvent(QEvent *event);
+	
 private:
     void loadUi();
     void createLoadingIcon();
@@ -57,9 +61,10 @@
     void metaDataAreaClicked();
 
 private:
-    HbMarqueeItem *mMetaData;
-    HbLabel *mControlLabel;
-    HbIcon   mLoadingIcon;    
+    HbMarqueeItem   *mMetaData;
+    HbWidget        *mControlLayout;
+    HbLabel         *mControlLabel;
+    HbIcon           mLoadingIcon;    
 };
 
 #endif // IRHSWIDGETMETADATAROW_H_
--- a/qtinternetradio/irhswidgetplugin/inc/irhswidgettitlerow.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/inc/irhswidgettitlerow.h	Wed Aug 18 09:40:26 2010 +0300
@@ -23,6 +23,7 @@
 
 //FORWARD DECLARATIONS:
 class HbLabel;
+class QEvent;
 
 class IrHsWidgetTitleRow : public HbWidget
 {
@@ -42,8 +43,11 @@
     void titleRowClicked();
     
 protected:
-    // from QGraphicsItem
-    void mousePressEvent(QGraphicsSceneMouseEvent *aEvent);
+    // from HbWidgetBase
+    void gestureEvent(QGestureEvent *aEvent);
+	
+    // from HbWidget
+    void changeEvent(QEvent *event);
 
 private:
     void loadUi();
--- a/qtinternetradio/irhswidgetplugin/irhswidgetplugin.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/irhswidgetplugin.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -15,6 +15,7 @@
 
 TEMPLATE = lib
 TARGET   = irhswidgetplugin
+TRANSLATIONS += iradhswidget.ts
 CONFIG += plugin mobility hb
 MOBILITY = serviceframework
 
@@ -50,10 +51,10 @@
     widgetResources.path = $${DESTDIR}
     widgetResources.sources += resource/$${TARGET}.xml    
     widgetResources.sources += resource/$${TARGET}.manifest
-    widgetResources.sources += resource/$${TARGET}.png
         
     DEPLOYMENT += plugins \
                   widgetResources
+    MMP_RULES += SMPSAFE
 }
 
 win32: {
@@ -69,7 +70,7 @@
     DESTDIR = $$PWD/../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
 
     manifest.path = $${DESTDIR}
-    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png
+    manifest.files = ./resource/*.manifest ./resource/*.xml
     
     INSTALLS += manifest    
     
--- a/qtinternetradio/irhswidgetplugin/irhswidgetplugin_rom.pri	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/irhswidgetplugin_rom.pri	Wed Aug 18 09:40:26 2010 +0300
@@ -22,6 +22,6 @@
 "rom/irhswidgetplugin.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(irhswidgetplugin.iby)"
 
 #iby exports to language
-#BLD_INF_RULES.prj_exports += \
-#"rom/irhswidgetplugin_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(irhswidgetplugin_resources.iby)"
+BLD_INF_RULES.prj_exports += \
+"rom/irhswidgetplugin_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(irhswidgetplugin_resources.iby)"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irhswidgetplugin/resource/irhswidget_color.css	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,6 @@
+/* Colors for control label mono icons */
+
+HbLabel#control_label::icon
+{
+    color:var(qtc_hs_list_item_title_normal);
+}
--- a/qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.manifest	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.manifest	Wed Aug 18 09:40:26 2010 +0300
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <hswidgetmanifest>
     <uri>irhswidgetplugin</uri>
-    <title>Internet Radio HS Widget</title>
-    <description>Internet Radio HS Widget</description>
-    <icon>irhswidgetplugin.png</icon>
+    <title>txt_iradhswidget_list_fm_radio_homescreen_widget</title>
+    <description>txt_iradhswidget_list_quick_access_for_internet_radio</description>
+    <icon>qtg_large_internet_radio</icon>
+    <previewimage>qtg_large_internet_radio</previewimage>
     <hidden>false</hidden>
     <servicexml>irhswidgetplugin.xml</servicexml>
+    <translationfile>iradhswidget</translationfile>
 </hswidgetmanifest>
Binary file qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.png has changed
--- a/qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.xml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/resource/irhswidgetplugin.xml	Wed Aug 18 09:40:26 2010 +0300
@@ -7,8 +7,5 @@
         <name>com.nokia.symbian.IHomeScreenWidget</name>
         <version>1.0</version>
         <description>Internet Radio HS Widget</description>
-        <capabilities></capabilities>
-        <customproperty key="iconuri">irhswidgetplugin.png</customproperty>
-        <customproperty key="title">Internet Radio HS Widget</customproperty>
     </interface>
 </service>
--- a/qtinternetradio/irhswidgetplugin/resources.qrc	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/resources.qrc	Wed Aug 18 09:40:26 2010 +0300
@@ -3,4 +3,8 @@
         <file>resource/irhswidgetmetadatarow.docml</file>
         <file>resource/irhswidgettitlerow.docml</file>
     </qresource>
+    
+    <qresource>
+        <file>resource/irhswidget_color.css</file>
+    </qresource> 
 </RCC>
--- a/qtinternetradio/irhswidgetplugin/rom/irhswidgetplugin_resources.iby	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/rom/irhswidgetplugin_resources.iby	Wed Aug 18 09:40:26 2010 +0300
@@ -17,5 +17,8 @@
 #ifndef IRHSWIDGETPLUGIN_RESOURCES_IBY
 #define IRHSWIDGETPLUGIN_RESOURCES_IBY
 
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_\QT_TRANSLATIONS_DIR\iradhswidget.qm QT_TRANSLATIONS_DIR\iradhswidget.qm
 
 #endif  // IRHSWIDGETPLUGIN_RESOURCES_IBY
--- a/qtinternetradio/irhswidgetplugin/src/irhswidget.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/src/irhswidget.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -19,6 +19,7 @@
 #include <HbFrameDrawer>
 #include <HbFrameItem>
 #include <QGraphicsLinearLayout>
+#include <QTimer>
 
 // User includes
 #include "irhswidget.h"
@@ -31,6 +32,8 @@
 static const int KIrHsWidgetContentsMargin = 0;
 static const QString KIrHsWidgetBackgroundImage = "qtg_fr_hswidget_normal";
 
+static const int KLaunchLatency = 100; // ms, used for launch nowplyaing view later
+
 // ======== MEMBER FUNCTIONS ========
 // Constructor
 IrHsWidget::IrHsWidget(QGraphicsItem* aParent, Qt::WindowFlags aFlags)
@@ -172,6 +175,11 @@
     enableUserAction();          
 }
 
+void IrHsWidget::launchNowplayingView()
+{
+    mServiceClient->launchIrNowPlaying();  
+}
+
 // ================ handle user press event ===============
 void IrHsWidget::handleCommonAreaAction()
 {
@@ -206,7 +214,8 @@
     switch (mIrState)
     {
         case IrAppState::NoRunStopped:
-            mServiceClient->launchIrNowPlaying();           
+            loadLoadingLayout();
+            QTimer::singleShot(KLaunchLatency, this, SLOT(launchNowplayingView()));
             break;
                     
         case IrAppState::RunningStopped:
--- a/qtinternetradio/irhswidgetplugin/src/irhswidgetmetadatarow.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/src/irhswidgetmetadatarow.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -22,6 +22,8 @@
 #include <HbIconAnimationDefinition>
 #include <HbColorScheme>
 #include <HbStyleLoader>
+#include <HbTapGesture>
+#include <HbEvent>
 
 // User includes
 #include "irhswidgetmetadatarow.h"
@@ -30,12 +32,16 @@
 // Constants
 static const QString KIrHsWidgetMetaDataRowDocML       = ":/resource/irhswidgetmetadatarow.docml";
 static const QString KIrHsWidgetMetaDataRowContainer   = "metadatarow_layout";
+static const QString KIrHsWidgetMetaDataLayout         = "metadata_layout";
 static const QString KIrHsWidgetMetaDataLabel          = "metadata_label";
+static const QString KNmHsWidgetControlLayout          = "control_layout";
 static const QString KNmHsWidgetControlLabel           = "control_label";
 
-static const QString KPlayButtonIcon     = "qtg_mono_play";
-static const QString KStopButtonIcon     = "qtg_mono_stop";
-static const QString KMetaDataColor      = "qtc_hs_list_item_title";
+static const QString KPlayButtonIcon          = "qtg_mono_play";
+static const QString KStopButtonIcon          = "qtg_mono_stop";
+static const QString KMetaDataColor           = "qtc_hs_list_item_title_normal";
+static const QString KControlLabelDataColor   = "qtc_hs_list_item_title_normal";
+static const QString KIrHsWidgetCss           = ":/resource/irhswidget_color.css";
 
 static const QString KLoadingAnimationPrefix  = "qtg_anim_loading_";
 static const QString KLoadingIconName         = "LoadingAnimation";
@@ -48,15 +54,20 @@
 IrHsWidgetMetaDataRow::IrHsWidgetMetaDataRow(QGraphicsItem *aParent, Qt::WindowFlags aFlags) :
     HbWidget(aParent, aFlags), 
     mMetaData(NULL), 
+    mControlLayout(NULL),
     mControlLabel(NULL)
 {
+    HbStyleLoader::registerFilePath(KIrHsWidgetCss);
+    
     loadUi();
     createLoadingIcon();
+    grabGesture(Qt::TapGesture);
 }
 
 
 IrHsWidgetMetaDataRow::~IrHsWidgetMetaDataRow()
 {
+    HbStyleLoader::unregisterFilePath(KIrHsWidgetCss);
 }
 
 void IrHsWidgetMetaDataRow::loadUi()
@@ -74,12 +85,11 @@
     layout->addItem(container);   
                       
     mMetaData = static_cast<HbMarqueeItem*> (loader.findWidget(KIrHsWidgetMetaDataLabel));
-    mControlLabel  = static_cast<HbLabel*> (loader.findWidget(KNmHsWidgetControlLabel));
     mMetaData->setTextColor(HbColorScheme::color(KMetaDataColor));  
     mMetaData->setLoopCount(-1);
-                    
-    mMetaData->installEventFilter(this);
-    mControlLabel->installEventFilter(this);        
+    
+    mControlLayout = static_cast<HbLabel*> (loader.findWidget(KNmHsWidgetControlLayout));
+    mControlLabel  = static_cast<HbLabel*> (loader.findWidget(KNmHsWidgetControlLabel));
 }
 
 void IrHsWidgetMetaDataRow::setMetaData(const QString &aMetaData)
@@ -126,26 +136,6 @@
     mControlLabel->setIcon(mLoadingIcon);
 }    
     
-bool IrHsWidgetMetaDataRow::eventFilter(QObject *aObject, QEvent *aEvent)
-{
-    QString objectName     = aObject->objectName();
-    
-    if (QEvent::GraphicsSceneMousePress == aEvent->type())
-    {
-        
-        if (KIrHsWidgetMetaDataLabel == objectName)
-        {
-            emit metaDataAreaClicked();
-        }
-        else if (KNmHsWidgetControlLabel == objectName)
-        {
-            emit controlAreaClicked();
-        }
-    }
-        
-    return false;
-}
-
 void IrHsWidgetMetaDataRow::createLoadingIcon()
 {
     HbIconAnimationManager *animationManager = HbIconAnimationManager::global();
@@ -169,3 +159,42 @@
 
     mLoadingIcon.setIconName(KLoadingIconName);        
 }        
+
+void IrHsWidgetMetaDataRow::gestureEvent(QGestureEvent *aEvent)
+{
+    HbTapGesture *tapGesture = qobject_cast<HbTapGesture *>(aEvent->gesture(Qt::TapGesture));
+    if (!tapGesture)
+    {
+        return;
+    }
+    
+    if (Qt::GestureFinished == tapGesture->state()
+        && HbTapGesture::Tap == tapGesture->tapStyleHint())
+    {
+        QPointF tapScenePoint = tapGesture->scenePosition();
+        QPointF tapLocalPoint = mControlLayout->sceneTransform().inverted().map(tapScenePoint);
+        if (mControlLayout->contains(tapLocalPoint))
+        {
+            emit controlAreaClicked();
+        }
+        else
+        {
+            emit metaDataAreaClicked();
+        }
+    }
+}
+
+//Implemented to receive theme change event
+//@param QEvent, The change events to be received  
+//
+void IrHsWidgetMetaDataRow::changeEvent(QEvent *event)
+{
+    if (HbEvent::ThemeChanged == event->type())
+    {
+        // get the text color from theme and 
+        // set it to meta data and control label
+        mMetaData->setTextColor(HbColorScheme::color(KMetaDataColor));
+    }
+    
+    HbWidget::changeEvent(event);
+}
--- a/qtinternetradio/irhswidgetplugin/src/irhswidgettitlerow.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/src/irhswidgettitlerow.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -21,6 +21,8 @@
 #include <HbLabel>
 #include <HbColorScheme>
 #include <HbStyleLoader>
+#include <HbTapGesture>
+#include <HbEvent>
 
 // User includes
 #include "irhswidgettitlerow.h"
@@ -33,7 +35,7 @@
 static const QString KIrHsWidgetStationLogo         = "station_logo";
 static const QString KNmHsWidgetStationName         = "station_name";
 
-static const QString KStationNameColor      = "qtc_hs_list_item_title";
+static const QString KStationNameColor      = "qtc_hs_list_item_title_normal";
 static const QString KDefaultStationLogo    = "qtg_large_internet_radio";
 
 static const int KIrHsWidgetContentsMargin  = 0;
@@ -45,6 +47,7 @@
     mStationName(NULL)
 {
     loadUi();
+    grabGesture(Qt::TapGesture);
 }
 
 IrHsWidgetTitleRow::~IrHsWidgetTitleRow()
@@ -75,9 +78,9 @@
 void IrHsWidgetTitleRow::setDefaultTitle()
 {
 #ifdef SUBTITLE_STR_BY_LOCID 
-    mStationName->setPlainText(hbTrId("txt_irad_title_internet_radio"));
+    mStationName->setPlainText(hbTrId("txt_ir_list_internet_radio"));
 #else
-    mStationName->setPlainText(hbTrId("Internet radio"));    
+    mStationName->setPlainText(hbTrId("Internet Radio"));    
 #endif
 }
 
@@ -108,9 +111,32 @@
     mStationLogo->setIcon(KDefaultStationLogo);
 }
 
-
-void IrHsWidgetTitleRow::mousePressEvent(QGraphicsSceneMouseEvent *aEvent)
+void IrHsWidgetTitleRow::gestureEvent(QGestureEvent *aEvent)
 {
-    Q_UNUSED(aEvent); 
-	emit titleRowClicked();
+    HbTapGesture *tapGesture = qobject_cast<HbTapGesture *>(aEvent->gesture(Qt::TapGesture));
+    if (!tapGesture)
+    {
+        return;
+    }
+    
+    if (Qt::GestureFinished == tapGesture->state()
+        && HbTapGesture::Tap == tapGesture->tapStyleHint())
+    {
+        emit titleRowClicked();
+    }
 }
+
+//Implemented to receive theme change event
+//@param QEvent, The change events to be received  
+//
+void IrHsWidgetTitleRow::changeEvent(QEvent *event)
+{
+    if (HbEvent::ThemeChanged == event->type())
+    {
+        // get the text color from theme and 
+        // set it to station name label
+        mStationName->setTextColor(HbColorScheme::color(KStationNameColor));
+    }
+    
+    HbWidget::changeEvent(event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqcommon/inc/irqcommonexport.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 IRQCOMMMONEXPORT_H_
+#define IRQCOMMMONEXPORT_H_
+
+#include <QtGlobal>
+
+#ifdef BUILD_IRQCOMMMON_DLL
+    #define IRQCOMMMON_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQCOMMMON_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif /* IRQCOMMMONEXPORT_H_ */
--- a/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Wed Aug 18 09:40:26 2010 +0300
@@ -16,11 +16,11 @@
 */
 #ifndef IRQISDSDATASTRUCTURE_H
 #define IRQISDSDATASTRUCTURE_H
+
+#include "irqcommonexport.h"
 #include <QList>
 #include <QString>
 
-#include <e32base.h>
-
 #define DEBUG_ISDS_DATA 0
 
 class QDataStream;
@@ -55,7 +55,7 @@
    int     bitrate;
 };
 
-class IRQPreset
+class IRQCOMMMON_DLL_EXPORT IRQPreset
 {
 public:
   enum IRQPresetType  
@@ -65,40 +65,40 @@
     };
   
    
-   IMPORT_C IRQPreset();
-   IMPORT_C ~IRQPreset();  
-   IMPORT_C IRQPreset& operator = (const IRQPreset& aOther); 
+   IRQPreset();
+   ~IRQPreset();  
+   IRQPreset& operator = (const IRQPreset& aOther); 
    
-   IMPORT_C void internalize(QDataStream &aStream);
-   IMPORT_C void externalize(QDataStream &aStream) const;
+   void internalize(QDataStream &aStream);
+   void externalize(QDataStream &aStream) const;
    
    /* get the bitrates of the preset.
     */
-   IMPORT_C void getAvailableBitrates(QList<int>& aBitrates) const;
+   void getAvailableBitrates(QList<int>& aBitrates) const;
    /* get the url for the specify bitrate
     * the caller should delete the QList */
-   IMPORT_C QList<QString> * getURLsForBitrate(int aBitrate) const;
+   QList<QString> * getURLsForBitrate(int aBitrate) const;
    /* the following functions may be changed in future */
-   IMPORT_C int getChannelUrlAt(int aIndex, QString& aURL) const;   
-   IMPORT_C int getChannelBitrate(unsigned int aIndex, unsigned int &aBitrate) const;    
+   int getChannelUrlAt(int aIndex, QString& aURL) const;   
+   int getChannelBitrate(unsigned int aIndex, unsigned int &aBitrate) const;    
    
    /* sort the urlArray with bitrates by ascending. for 
     * there are not many items, here we use bubble sorting.
     */
-   IMPORT_C void sortURLArray();
+   void sortURLArray();
    /* check wether the internal list is sorted 
     */
-   IMPORT_C bool isSorted() const;
+   bool isSorted() const;
    /* append a channel server into a internal list 
     */
-   IMPORT_C void insertChannelServer(const IRQChannelServerURL& aURL);
+   void insertChannelServer(const IRQChannelServerURL& aURL);
    /* clear the internal list 
     */
-   IMPORT_C void clearChannelServerList();   
+   void clearChannelServerList();   
    
-   IMPORT_C int getChannelURLCount() const;
+   int getChannelURLCount() const;
    
-   IMPORT_C bool setUrlBitrate(const unsigned int aUrlIndex, const unsigned int aBitrate);
+   bool setUrlBitrate(const unsigned int aUrlIndex, const unsigned int aBitrate);
   
    int uniqID; //unique id generated for the preset saved at favourite
    
--- a/qtinternetradio/irqcommon/inc/irqutility.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/inc/irqutility.h	Wed Aug 18 09:40:26 2010 +0300
@@ -18,36 +18,37 @@
 #define _IRQUTILITY_H
 
 #include "irqenums.h"
+#include "irqcommonexport.h"
 
 class IRQPreset;
 class CIRPreset;
 class CIRIsdsPreset; 
 class QString;
 
-class IRQUtility 
+class IRQCOMMMON_DLL_EXPORT IRQUtility 
 {
 public:
   
   /* convert the CIRIsdsPreset to the IRQPreset. 
    */
-  IMPORT_C static void convertCIRIsdsPreset2IRQPrest(const CIRIsdsPreset& aCIRIsdsPreset, IRQPreset& aQIRPreset);
+  static void convertCIRIsdsPreset2IRQPrest(const CIRIsdsPreset& aCIRIsdsPreset, IRQPreset& aQIRPreset);
   /* convert the IRQPreset to the CIRIsdsPreset 
    */
-  IMPORT_C static void convertIRQPreset2CIRIsdsPreset(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset);
+  static void convertIRQPreset2CIRIsdsPreset(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset);
   /* convert CIRPreset to the IRQPreset 
    */
-  IMPORT_C static void convertCIRPreset2IRQPreset(const CIRPreset& aCIRPreset, IRQPreset& aIRQPreset);
+  static void convertCIRPreset2IRQPreset(const CIRPreset& aCIRPreset, IRQPreset& aIRQPreset);
   /* switch from the symbian error code to the IRQ error code 
    */
-  IMPORT_C static void convertSError2QError(const int aSError, int& aQError);
+  static void convertSError2QError(const int aSError, int& aQError);
 
-  IMPORT_C static bool isValidUrl(const QString& aUrl);
+  static bool isValidUrl(const QString& aUrl);
 
-  IMPORT_C static bool openAdvLink(const QString& aUrl);
+  static bool openAdvLink(const QString& aUrl);
   
-  IMPORT_C static bool openSongRecognition();
+  static bool findAppByUid(const int aUid);
   
-  IMPORT_C static bool identifySongAvailable();
+  static bool launchAppByUid(const int aUid);
   
 private:
   
--- a/qtinternetradio/irqcommon/inc/irservicedef.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/inc/irservicedef.h	Wed Aug 18 09:40:26 2010 +0300
@@ -27,7 +27,7 @@
 static const QString KIrDefaultStationName  = "no_station_played_yet";
 static const QString KIrSettingStationLogo  = "lastplayedinfo/station_logo";
 static const QString KIrSettingStationLogoAvailable  = "lastplayedinfo/station_logo_available";
-static const QString KIrSettingSplashNowplaying = "splash/is_nowplaying_view";
+ 
 
 // For P&S XQSettingsManager
 const long int KInternetRadioPSUid = 0xE28364bb;   // Internet Radio's UID3
--- a/qtinternetradio/irqcommon/irqcommon.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/irqcommon.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -18,11 +18,12 @@
 
 MOC_DIR = moc
 DEPENDPATH = src
+DEFINES += BUILD_IRQCOMMMON_DLL
 defFilePath = ..
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 
-INCLUDEPATH += ../../internetradio2.0/datastructuresinc \
-               ../../internetradio2.0/presetplugininc \
+INCLUDEPATH += ../../internetradio2.0/ircommon/inc \
+               ../../internetradio2.0/irpresetplugin/inc \
                ../../presetserver/include \
                ../../presetserver/clientinc \
                ../../presetserver/serverinc
@@ -40,15 +41,16 @@
 symbian{
   TARGET.UID3 = 0xef3c4675
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
        
 #input
 
 #header files list
-HEADERS += inc\irqisdsdatastructure.h \
-           inc\irqutility.h \
-           inc\irservicedata.h \
-           inc\irservicedef.h
+HEADERS += inc/irqisdsdatastructure.h \
+           inc/irqutility.h \
+           inc/irservicedata.h \
+           inc/irservicedef.h
                        
 
 #source files list
--- a/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -31,19 +31,19 @@
 
 //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),presetId(0),
+IRQPreset::IRQPreset():uniqID(0),type(0),presetId(0),
                                 iIsSorted(false),iChannelUrlCount(0)
 {
  
 }
 
-EXPORT_C IRQPreset::~IRQPreset()
+IRQPreset::~IRQPreset()
 {
     urlArray.clear();
     logoData.Close();
 }
 
-EXPORT_C IRQPreset& IRQPreset::operator =(const IRQPreset& aOther)
+IRQPreset& IRQPreset::operator =(const IRQPreset& aOther)
 {
     if (this == &aOther)
         return *this;
@@ -83,7 +83,7 @@
     return *this;
 }
 
-EXPORT_C void IRQPreset::internalize(QDataStream &aStream)
+void IRQPreset::internalize(QDataStream &aStream)
 {
     aStream>>uniqID>>presetId>>type>>iChannelUrlCount;
     
@@ -104,7 +104,7 @@
     }
 }
 
-EXPORT_C void IRQPreset::externalize(QDataStream &aStream) const
+void IRQPreset::externalize(QDataStream &aStream) const
 {
     aStream<<uniqID<<presetId<<type<<iChannelUrlCount;
     
@@ -123,7 +123,7 @@
 }
    
 //get the bitrates of the preset. Duplicated bitrate will just save once.
-EXPORT_C void IRQPreset::getAvailableBitrates(QList<int>& aBitrates) const
+void IRQPreset::getAvailableBitrates(QList<int>& aBitrates) const
 {
     aBitrates.clear();
     int bitrate = 0;
@@ -141,7 +141,7 @@
 //get the url for the specify bitrate
 //the caller should delete the QList 
 //
-EXPORT_C QList<QString> * IRQPreset::getURLsForBitrate(int aBitrate) const
+QList<QString> * IRQPreset::getURLsForBitrate(int aBitrate) const
 {
     int upLimit = urlArray.count();
     
@@ -173,7 +173,7 @@
 
 //the following functions may be changed in future 
 //
-EXPORT_C int IRQPreset::getChannelUrlAt(int aIndex, QString& aURL) const
+int IRQPreset::getChannelUrlAt(int aIndex, QString& aURL) const
 {
     int upLimit = urlArray.count();
 
@@ -184,7 +184,7 @@
     return EIRQErrorNone;
 }
 
-EXPORT_C int IRQPreset::getChannelBitrate(unsigned int aIndex, unsigned int &aBitrate) const
+int IRQPreset::getChannelBitrate(unsigned int aIndex, unsigned int &aBitrate) const
 {
     if ( aIndex < urlArray.count())
     {
@@ -197,14 +197,14 @@
 
 //append a channel server into a internal list 
 //
-EXPORT_C void IRQPreset::insertChannelServer(const IRQChannelServerURL& aURL)
+void IRQPreset::insertChannelServer(const IRQChannelServerURL& aURL)
 {
     urlArray.append(aURL);
     iChannelUrlCount++;
     iIsSorted = false;
 }
 
-EXPORT_C void IRQPreset::clearChannelServerList()
+void IRQPreset::clearChannelServerList()
 {
     urlArray.clear();
     iChannelUrlCount = 0;
@@ -214,7 +214,7 @@
 //sort the urlArray with bitrates by ascending. for 
 //there are not many items, here we use bubble sorting.
 //
-EXPORT_C void IRQPreset::sortURLArray()
+void IRQPreset::sortURLArray()
 {
     if (iIsSorted)
         return;
@@ -224,7 +224,7 @@
     iIsSorted = true;
 }
 
-EXPORT_C bool IRQPreset::setUrlBitrate(const unsigned int aUrlIndex, const unsigned int aBitrate)
+bool IRQPreset::setUrlBitrate(const unsigned int aUrlIndex, const unsigned int aBitrate)
 {
     if( aUrlIndex > (urlArray.count()-1) )
     {
@@ -237,12 +237,12 @@
 
 //check wether the internal list is sorted 
 //
-EXPORT_C bool IRQPreset::isSorted() const
+bool IRQPreset::isSorted() const
 {
     return iIsSorted;
 }
 
-EXPORT_C int IRQPreset::getChannelURLCount() const
+int IRQPreset::getChannelURLCount() const
 {
     return iChannelUrlCount;
 }
--- a/qtinternetradio/irqcommon/src/irqutility.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqcommon/src/irqutility.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -39,17 +39,12 @@
 /** Browser prefix: See browser API specification */
 _LIT( KBrowserPrefix, "4 " );
 
-const long int KCenrepUidInternetRadio = { 0x2000B499 };
-const unsigned long int KSongRecognitionKeyId = { 0x00000035 };
-
 static bool openAdvLinkL(const QString& aUrl);
-static TUid getSongRecognitionAppUid();
-static bool launchAppByUid(const TUid aUid);
   
 //
 //convert the CIRIsdsPreset to the IRQPreset. 
 //
-EXPORT_C void IRQUtility::convertCIRIsdsPreset2IRQPrest(const CIRIsdsPreset& aCIRIsdsPreset, IRQPreset& aQIRPreset)
+void IRQUtility::convertCIRIsdsPreset2IRQPrest(const CIRIsdsPreset& aCIRIsdsPreset, IRQPreset& aQIRPreset)
 {
   aQIRPreset.type = aCIRIsdsPreset.GetChannelType();
   
@@ -75,7 +70,7 @@
   
   aQIRPreset.imgUrl  = QString::fromUtf16(aCIRIsdsPreset.GetImgUrl().Ptr(), aCIRIsdsPreset.GetImgUrl().Length());   
   aQIRPreset.logoData.Close();
-  aQIRPreset.logoData.Create(aCIRIsdsPreset.GetLogoData());
+  TRAP_IGNORE(aQIRPreset.logoData.CreateL(aCIRIsdsPreset.GetLogoData()));
   
   aQIRPreset.musicStoreStatus  = QString::fromUtf16(aCIRIsdsPreset.GetMusicStoreStatus().Ptr(), aCIRIsdsPreset.GetMusicStoreStatus().Length());
   aQIRPreset.clearChannelServerList();
@@ -97,61 +92,61 @@
 
 //convert the IRQPreset to the CIRIsdsPreset 
 //
-EXPORT_C void IRQUtility::convertIRQPreset2CIRIsdsPreset(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset)
+void IRQUtility::convertIRQPreset2CIRIsdsPreset(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset)
 {
   aCIRIsdsPreset.SetId(aQIRPreset.presetId);
   aCIRIsdsPreset.SetUrlCount(aQIRPreset.iChannelUrlCount);
   aCIRIsdsPreset.SetChannelType(aQIRPreset.type);  
   
   TPtrC16 namePtr(reinterpret_cast<const TUint16*>(aQIRPreset.name.utf16()));
-  aCIRIsdsPreset.SetName(namePtr);
+  TRAP_IGNORE(aCIRIsdsPreset.SetNameL(namePtr));
   
   TPtrC16 languageCodePtr(reinterpret_cast<const TUint16*>(aQIRPreset.languageCode.utf16()));
-  aCIRIsdsPreset.SetLangCode(languageCodePtr);
+  TRAP_IGNORE(aCIRIsdsPreset.SetLangCodeL(languageCodePtr));
   
   TPtrC16 languageNamePtr(reinterpret_cast<const TUint16*>(aQIRPreset.languageName.utf16()));
-  aCIRIsdsPreset.SetLang(languageNamePtr);
+  TRAP_IGNORE(aCIRIsdsPreset.SetLangL(languageNamePtr));
   
   TPtrC16 countryCode(reinterpret_cast<const TUint16*>(aQIRPreset.countryCode.utf16()));
-  aCIRIsdsPreset.SetCountryCode(countryCode);
+  TRAP_IGNORE(aCIRIsdsPreset.SetCountryCodeL(countryCode));
   
   TPtrC16 countryName(reinterpret_cast<const TUint16*>(aQIRPreset.countryName.utf16()));
-  aCIRIsdsPreset.SetCountryName(countryName);
+  TRAP_IGNORE(aCIRIsdsPreset.SetCountryNameL(countryName));
   
   TPtrC16 lastModified(reinterpret_cast<const TUint16*>(aQIRPreset.lastModified.utf16()));
-  aCIRIsdsPreset.SetLastModifiedTime(lastModified);
+  TRAP_IGNORE(aCIRIsdsPreset.SetLastModifiedTimeL(lastModified));
   
   TPtrC16 description(reinterpret_cast<const TUint16*>(aQIRPreset.description.utf16()));
-  aCIRIsdsPreset.SetDescription(description);
+  TRAP_IGNORE(aCIRIsdsPreset.SetDescriptionL(description));
   
   TPtrC16 shortDescription(reinterpret_cast<const TUint16*>(aQIRPreset.shortDesc.utf16()));
-  aCIRIsdsPreset.SetShortDesc(shortDescription);
+  TRAP_IGNORE(aCIRIsdsPreset.SetShortDescL(shortDescription));
   
   TPtrC16 genreId(reinterpret_cast<const TUint16*>(aQIRPreset.genreId.utf16()));
-  aCIRIsdsPreset.SetGenreId(genreId);
+  TRAP_IGNORE(aCIRIsdsPreset.SetGenreIdL(genreId));
   
   TPtrC16 genreName(reinterpret_cast<const TUint16*>(aQIRPreset.genreName.utf16()));
-  aCIRIsdsPreset.SetGenreName(genreName);
+  TRAP_IGNORE(aCIRIsdsPreset.SetGenreNameL(genreName));
   
   TPtrC16 advertisementUrl(reinterpret_cast<const TUint16*>(aQIRPreset.advertisementUrl.utf16()));
-  aCIRIsdsPreset.SetAdvertisementUrl(advertisementUrl);
+  TRAP_IGNORE(aCIRIsdsPreset.SetAdvertisementUrlL(advertisementUrl));
   
   TPtrC16 advertisementINUse(reinterpret_cast<const TUint16*>(aQIRPreset.advertisementInUse.utf16()));
-  aCIRIsdsPreset.SetAdvertisementInUse(advertisementINUse);
+  TRAP_IGNORE(aCIRIsdsPreset.SetAdvertisementInUseL(advertisementINUse));
   
   TPtrC16 imgUrl(reinterpret_cast<const TUint16*>(aQIRPreset.imgUrl.utf16()));
-  aCIRIsdsPreset.SetImgUrl(imgUrl);
+  TRAP_IGNORE(aCIRIsdsPreset.SetImgUrlL(imgUrl));
   
   TPtrC16 musicStoreStatus(reinterpret_cast<const TUint16*>(aQIRPreset.musicStoreStatus.utf16()));
-  aCIRIsdsPreset.SetMusicStoreStatus(musicStoreStatus);   
-  aCIRIsdsPreset.SetLogoData(aQIRPreset.logoData);
+  TRAP_IGNORE(aCIRIsdsPreset.SetMusicStoreStatusL(musicStoreStatus));   
+  TRAP_IGNORE(aCIRIsdsPreset.SetLogoDataL(aQIRPreset.logoData));
 
   TRAP_IGNORE(appendURLL(aQIRPreset, aCIRIsdsPreset));    
 }
 
 //convert CIRPreset to the IRQPreset 
 //
-EXPORT_C void IRQUtility::convertCIRPreset2IRQPreset(const CIRPreset& aCIRPreset, IRQPreset& aIRQPreset)
+void IRQUtility::convertCIRPreset2IRQPreset(const CIRPreset& aCIRPreset, IRQPreset& aIRQPreset)
 {
     aIRQPreset.uniqID = aCIRPreset.Id(); 
     aIRQPreset.type = aCIRPreset.GetChannelType();
@@ -197,7 +192,7 @@
 
 //switch from the symbian error code to the IRQ error code 
 //
-EXPORT_C void IRQUtility::convertSError2QError(const int aSError, int& aQError)
+void IRQUtility::convertSError2QError(const int aSError, int& aQError)
 {
   if( aSError > 0 )
   {
@@ -231,7 +226,7 @@
  * Description : check the validity of URL
  * return value: true: the URL is valid, vice versa.
  */
-EXPORT_C bool IRQUtility::isValidUrl(const QString& aUrl)
+bool IRQUtility::isValidUrl(const QString& aUrl)
 {
     QString temp = aUrl.trimmed();
     if (temp.size() < 8)
@@ -255,7 +250,7 @@
  * Description : check the validity of URL
  * return value: true: the URL is valid, vice versa.
  */
-EXPORT_C bool IRQUtility::openAdvLink(const QString& aUrl)
+bool IRQUtility::openAdvLink(const QString& aUrl)
 {
     bool retval = false;
     TRAP_IGNORE(retval = openAdvLinkL(aUrl));
@@ -263,8 +258,13 @@
     return retval;
 }
 
-EXPORT_C bool IRQUtility::identifySongAvailable()
+bool IRQUtility::findAppByUid(const int aUid)
 {
+    if (0 == aUid)
+    {
+        return false;
+    }
+
     RApaLsSession lsSession;
     if( lsSession.Connect() != KErrNone )
     {
@@ -272,7 +272,7 @@
     }
     
     bool ret = false;
-    TUid songRecognitionAppUid = getSongRecognitionAppUid();
+    TUid appUid = TUid::Uid(aUid);
     TApaAppInfo *appInfo = new TApaAppInfo;
     lsSession.GetAllApps();  
 
@@ -287,7 +287,7 @@
         
         if(!appIsHidden)
         {
-            if(songRecognitionAppUid == appInfo->iUid)
+            if(appUid == appInfo->iUid)
             {
                 ret = true;
                 break;
@@ -299,12 +299,6 @@
     return ret;         
 }   
     
-    
-EXPORT_C bool IRQUtility::openSongRecognition()
-{       
-    return launchAppByUid(getSongRecognitionAppUid());
-}
-
 void IRQUtility::appendURLL(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset)
 {
     int count = aQIRPreset.urlArray.count();
@@ -321,6 +315,50 @@
     } 
 }
 
+
+bool IRQUtility::launchAppByUid(const int aUid)
+{
+    if (0 == aUid)
+    {
+        return false;
+    }
+    TUid appUid = TUid::Uid(aUid);
+    
+    RWsSession wsSession;
+    if(KErrNone != wsSession.Connect())
+    {
+        return false;
+    }
+    
+    bool retVal = false;
+    TApaTaskList tasList(wsSession);
+    TApaTask task = tasList.FindApp(appUid);
+
+    if(task.Exists())
+    {
+        task.BringToForeground();
+        retVal = true;
+    }
+    else
+    {
+        RApaLsSession session;
+        if(KErrNone == session.Connect())
+        {
+            TThreadId threadId;
+            TInt err = session.CreateDocument(KNullDesC, appUid, threadId);
+            if(KErrNone == err)
+            {
+                retVal = true;
+            }
+            session.Close();
+        }       
+    }
+    
+    wsSession.Flush();    
+    wsSession.Close();
+    return retVal;
+}
+
 bool openAdvLinkL(const QString& aUrl)
 {
     if (aUrl.size() == 0)
@@ -381,55 +419,3 @@
     return ret;
 }
 
-bool launchAppByUid(const TUid aUid)
-{
-    RWsSession wsSession;
-    if(KErrNone != wsSession.Connect())
-    {
-        return false;
-    }
-    
-    bool retVal = false;
-    TApaTaskList tasList(wsSession);
-    TApaTask task = tasList.FindApp(aUid);
-
-    if(task.Exists())
-    {
-        task.BringToForeground();
-        retVal = true;
-    }
-    else
-    {
-        RApaLsSession session;
-        if(KErrNone == session.Connect())
-        {
-            TThreadId threadId;
-            TInt err = session.CreateDocument(KNullDesC, aUid, threadId);
-            if(KErrNone == err)
-            {
-                retVal = true;
-            }
-            session.Close();
-        }      	
-    }
-    
-    wsSession.Flush();    
-    wsSession.Close();
-    return retVal;
-}
-
-TUid getSongRecognitionAppUid()
-{
-    // Create an XQSettingsManager object
-    XQSettingsManager settingsManager;
-    // Create an XQSettingsKey object for a particular central repository item.
-    XQSettingsKey appUidKey(XQSettingsKey::TargetCentralRepository, 
-        KCenrepUidInternetRadio, KSongRecognitionKeyId);
-    
-    // Read the integer value
-    int uidValue = settingsManager.readItemValue(appUidKey, XQSettingsManager::TypeInt).toInt();
-
-    return TUid::Uid(uidValue);
-}
-
-
--- a/qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -24,9 +24,9 @@
 MOC_DIR = moc
 DEPENDPATH = src
 
-INCLUDEPATH += ../../internetradio2.0/favoritesdbinc \
-               ../../internetradio2.0/datastructuresinc \
-               ../../internetradio2.0/presetplugininc  \
+INCLUDEPATH += ../../internetradio2.0/irfavoritesdb/inc \
+               ../../internetradio2.0/ircommon/inc \
+               ../../internetradio2.0/irpresetplugin/inc  \
                ../irqcommon/inc \
                ../../presetserver/include \
                ../../presetserver/clientinc \
@@ -41,6 +41,7 @@
 symbian{
   TARGET.UID3 = 0xecbde2d8
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqisdsclient/inc/irqabstractisdsclientimpl.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* 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 IRQABSTRACTISDSCLIENTIMPL_H_
+#define IRQABSTRACTISDSCLIENTIMPL_H_
+
+class IRQAbstractIsdsClientImpl
+{
+
+public:
+	virtual ~IRQAbstractIsdsClientImpl(){};
+      
+    virtual void isdsSearchRequestImpl(const QString& aIsdsSearchString) = 0;
+    
+    virtual void isdsCategoryRequestImpl(
+            IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache) = 0;
+
+    virtual bool isdsIsCategoryCachedImpl(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType) = 0;
+    
+    virtual bool isdsIsChannelCachedImpl(int aIndex) = 0;
+    
+    virtual void isdsChannelRequestImpl(int aIndex, bool& aCache) = 0;
+
+     
+    virtual void isdsListenRequestImpl(int aCurrentIndex, bool aHistoryBool =
+            false) = 0;
+
+    virtual int isdsSyncPresetImpl(int aPresetId, const QString& aIfModifySince, IRQFavoritesDB *aFavPresets) = 0;   
+     
+    virtual void isdsCancelRequestImpl() = 0;    
+    
+    virtual bool isdsIsCategoryBannerImpl() = 0;
+     
+    virtual bool isdsIsChannelBannerImpl() = 0;
+     
+    virtual void isdsLogoDownSendRequestImpl(IRQPreset* aPreset, int aNPVReq = 1,
+            int aXValue = 0, int aYValue = 0) = 0;
+    
+    virtual bool isdsIsLogoCachedImpl(IRQPreset* aPreset, int aXValue = 0, int aYValue = 0) = 0;
+    
+    virtual void isdsLogoDownCancelTransactionImpl() = 0;
+     
+    virtual bool isdsLogoDownIsRunningImpl() const = 0;
+     
+    virtual void isdsLogoDownCheckCacheLogoImpl(const QString& aURL, int& aStatus) = 0;
+     
+    virtual TDesC8& isdsLogoDownSendCacheLogoImpl() = 0;
+    
+    virtual void isdsPostLogImpl(const QString &aFileName) = 0;
+    
+    virtual void isdsGetIRIDImpl() = 0;
+
+    virtual void isdsGetBrowseBannerImpl(QString& aBannerUrl, QString& aClickThroughUrl) = 0;
+    
+    virtual void isdsMultSearchImpl(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText) = 0;
+        
+    virtual bool isdsIsConstructSucceed() const = 0;
+
+};
+
+#endif
--- a/qtinternetradio/irqisdsclient/inc/irqisdsclient.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqisdsclient/inc/irqisdsclient.h	Wed Aug 18 09:40:26 2010 +0300
@@ -22,8 +22,12 @@
 #include <e32base.h>
 #include <badesca.h>
 #include <QList> 
+#include <QMutex>
 #include "irqenums.h" 
- 
+#include "irqisdsclientexporter.h"
+
+class IRQAbstractIsdsClientImpl;
+
 class IRQIsdsClientImpl;
 class IRQFavoritesDB;
 class IRQPreset;
@@ -41,7 +45,7 @@
  *This class is being used by the UI to send request and get data from low layer
  *All interfaces are QT-supported
  */
-class IRQIsdsClient : public QObject
+class IRQISDSCLIENT_DLL_EXPORT IRQIsdsClient : public QObject
 {
 Q_OBJECT
 
@@ -61,28 +65,28 @@
      *to get an instance of the IRQIsdsClient. 
      *@return IRQIsdsClient *
      */
-    IMPORT_C static IRQIsdsClient *openInstance();
+    static IRQIsdsClient *openInstance();
 
     /**
      *IRQIsdsClient::CloseInstance() 
      *close the instance.
      *@return IRQIsdsClient *
      */
-    IMPORT_C void closeInstance();
+    void closeInstance();
 
     /**
      *IRQIsdsClient::IsdsSearchRequestL()
      *Issue a search request to the isds server
      *@param QString, the requested search string
      **/
-    IMPORT_C void isdsSearchRequest(const QString& aIsdsSearchString);
+    void isdsSearchRequest(const QString& aIsdsSearchString);
 
     /**
      *IRQIsdsClient::IsdsCategoryRequest()
      *Send the category request by the category type
      *@param IRQIsdsClientInterfaceIDs, the requested category type
      **/
-    IMPORT_C void isdsCategoryRequest(
+    void isdsCategoryRequest(
             IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache);
     
     /**
@@ -91,7 +95,7 @@
      *function, this function will not send the http request if the data is 
      *not cached in DB. Normally, we call this function to check the cache.
      **/
-    IMPORT_C bool isdsIsCategoryCached(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType);
+    bool isdsIsCategoryCached(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType);
     
     /**
      *IRQIsdsClient::isdsIsChannelCached()
@@ -99,14 +103,14 @@
      *function, this function will not send the http request if the data is 
      *not cached in DB. Normally, we call this function to check the cache.
      **/
-    IMPORT_C bool isdsIsChannelCached(int aIndex);
+    bool isdsIsChannelCached(int aIndex);
 
     /**
      *IRQIsdsClient::IsdsChannelRequestL()
      *Send the channels request by the channel index in the specify category
      *@param int, the requested index from UI view   
      **/
-    IMPORT_C void isdsChannelRequest(int aIndex, bool& aCache);
+    void isdsChannelRequest(int aIndex, bool& aCache);
 
     /**
      *IRQIsdsClient::IsdsListenRequestL()
@@ -117,7 +121,7 @@
      *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 =
+    void isdsListenRequest(int aCurrentIndex, bool aHistoryBool =
             false);
 
     /**
@@ -125,61 +129,62 @@
      *to syncronize presets
      *@param int,QString, the preset id and the last modified tag for the preset   
      **/
-    IMPORT_C int isdsSyncPreset(int aPresetId, const QString& aIfModifySince, IRQFavoritesDB *aFavPresets);
+    int isdsSyncPreset(int aPresetId, const QString& aIfModifySince, IRQFavoritesDB *aFavPresets);
 
     /**
      *IRQIsdsClient::IsdsCancelRequest()
      *Cacel the request sent by the UI.
      *@param None
      **/
-    IMPORT_C void isdsCancelRequest();
+    void isdsCancelRequest();
 
     /**
      *IRQIsdsClient::IsdsGetCurrentPlayingIndex()
      *get the playing song's index 
      *@param None
      **/
-    IMPORT_C int isdsGetCurrentPlayingIndex();
+    int isdsGetCurrentPlayingIndex();
 
     /**
      *IRQIsdsClient::IsdsIsCategoryBanner()
      *to see wether category view has a banner.
      *@param None
      **/
-    IMPORT_C bool isdsIsCategoryBanner();
+    bool isdsIsCategoryBanner();
 
     /**
      *IRQIsdsClient::IsdsIsChannelBanner()
      *to see wether channel view has a banner.
      *@param None
      **/
-    IMPORT_C bool isdsIsChannelBanner();
+    bool isdsIsChannelBanner();
 
     /**
      *IRQIsdsClient::IsdsLogoDownSendRequestL()
      *the api is called from the UI(nowplaying view) to download logo.
      *@param None
      **/
-    IMPORT_C void isdsLogoDownSendRequest(IRQPreset* aPreset, int aNPVReq = 1,
+    void isdsLogoDownSendRequest(IRQPreset* aPreset, int aNPVReq = 1,
             int aXValue = 0, int aYValue = 0);
 
     /**
      *IRQIsdsClient::isdsIsLogoCached()
      *to check wether the preset's logo is cached or not.      
      **/
-    IMPORT_C bool isdsIsLogoCached(IRQPreset* aPreset, int aXValue = 0, int aYValue = 0);
+    bool isdsIsLogoCached(IRQPreset* aPreset, int aXValue = 0, int aYValue = 0);
+
     /**
      *IRQIsdsClient::isdsLogoDownCancelTransaction()
      *the api is called to cancel the current transaction
      *@param None
      **/
-    IMPORT_C void isdsLogoDownCancelTransaction();
+    void isdsLogoDownCancelTransaction();
 
     /**
      * IRQIsdsClient::isdsLogoDownIsRunning()
      *  To know the status of downloading logo
      */
-    IMPORT_C bool isdsLogoDownIsRunning() const;
+    bool isdsLogoDownIsRunning() const;
 
     /**
      * IRQIsdsClient::IsdsLogoDownCheckCacheLogoL()
@@ -190,7 +195,7 @@
      * this API is called form the search results view.
      * @param QString: the url of the img, int: the status for getting
      */
-    IMPORT_C void isdsLogoDownCheckCacheLogo(const QString& aURL, int& aStatus);
+    void isdsLogoDownCheckCacheLogo(const QString& aURL, int& aStatus);
 
     /**
      * IRQIsdsClient::IsdsLogoDownSendCacheLogo()
@@ -198,34 +203,34 @@
      * be changed to be QT value in future 
      * @param None
      */
-    IMPORT_C TDesC8& isdsLogoDownSendCacheLogo();
+    TDesC8& isdsLogoDownSendCacheLogo();
     
     /**
      * IRQIsdsClient::isdsPostLog()
      * send the log file to the isds server
      * @param None
      */
-    IMPORT_C void isdsPostLog(const QString& aFileName);
+    void isdsPostLog(const QString& aFileName);
     
     /*
      * IRQIsdsClient::isdsGetIRID()
 	 * get the irid of the application
      */
-    IMPORT_C void isdsGetIRID();
+    void isdsGetIRID();
 
     /*
      * IRQIsdsClient::isdsGetBrowseBanner()
      * get the browse advertisement url and clickthrough url
      */
-    IMPORT_C void isdsGetBrowseBanner(QString& aBannerUrl, QString& aClickThroughUrl);
+    void isdsGetBrowseBanner(QString& aBannerUrl, QString& aClickThroughUrl);
 
     /*
      * IRQIsdsClient::isdsMultiSearch()
      * the new interface of multi search
      */
-    IMPORT_C void isdsMultSearch(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText);
+    void isdsMultSearch(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText);
 
-    IMPORT_C bool isdsIsConstructSucceed() const;
+    bool isdsIsConstructSucceed() const;
     
     signals:
     /**
@@ -282,19 +287,29 @@
     void iridReceived(QString aIRID);
     
     
-
+    
 private:
 
     /*
-     * the IRQIsdsClientImpl of the IRQIsdsClient
+     * Pointer to IRQIsdsClient instance
+     */
+	static IRQIsdsClient *mInstance;
+	
+    /*
+     * Mutex lock for instance singleton
      */
-    IRQIsdsClientImpl *iImpl;
+    static QMutex mMutex;
+	
+    /*
+     * the pointer of IRQAbstractIsdsClientImpl type point to IRQIsdsClientImpl of the IRQIsdsClient
+     */
+	IRQAbstractIsdsClientImpl *d_ptr;
 
     /**
      *iSingletonInstances
      * the count of reference of the object
      */
-    int iSingletonInstances;
+    static int mRef;
 
     IRQIsdsClient();
     /**
@@ -302,6 +317,8 @@
      *default c++ function
      **/
     ~IRQIsdsClient();
+
+	friend class IRQIsdsClientImpl;
 };
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqisdsclient/inc/irqisdsclientexporter.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 IRQISDSCLIENTEXPORTER_H_
+#define IRQISDSCLIENTEXPORTER_H_
+
+#include <QtGlobal>
+
+#ifdef BUILD_IRQISDSCLIENT_DLL
+    #define IRQISDSCLIENT_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQISDSCLIENT_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif /* IRQISDSCLIENTEXPORTER_H_ */
--- a/qtinternetradio/irqisdsclient/inc/irqisdsclientimpl.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef IRQISDSCLIENTIMPL_H_
-#define IRQISDSCLIENTIMPL_H_
-
-#include "irqisdsclient.h"
-#include "misdsresponseobserver.h"
-#include "mlogodownloadobserver.h"
-
-
-class CIRIsdsClient;
-class IRQFavoritesDB;
-class CIRLogoDownloadEngine;
-class IRQIsdsClientImpl : public QObject,
-        public MIsdsResponseObserver,
-        public MLogoDownloadObserver
-{
-Q_OBJECT
-
-public:
-    
-    IRQIsdsClientImpl();
-    
-    ~IRQIsdsClientImpl();
-    
-    void isdsSearchRequestImpl(const QString& aIsdsSearchString);
-    
-     
-    void isdsCategoryRequestImpl(
-            IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache);
-
-    bool isdsIsCategoryCachedImpl(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType);
-    
-    bool isdsIsChannelCachedImpl(int aIndex);
-    
-    void isdsChannelRequestImpl(int aIndex, bool& aCache);
-
-     
-    void isdsListenRequestImpl(int aCurrentIndex, bool aHistoryBool =
-            false);
-
-     
-    int isdsSyncPresetImpl(int aPresetId, const QString& aIfModifySince, IRQFavoritesDB *aFavPresets);   
-     
-    void isdsCancelRequestImpl();    
-    
-    bool isdsIsCategoryBannerImpl();
-     
-    bool isdsIsChannelBannerImpl();
-     
-    void isdsLogoDownSendRequestImpl(IRQPreset* aPreset, int aNPVReq = 1,
-            int aXValue = 0, int aYValue = 0);
-    
-    bool isdsIsLogoCachedImpl(IRQPreset* aPreset, int aXValue = 0, int aYValue = 0);
-    
-    void isdsLogoDownCancelTransactionImpl();
-     
-    bool isdsLogoDownIsRunningImpl() const;
-     
-    void isdsLogoDownCheckCacheLogoImpl(const QString& aURL, int& aStatus);
-     
-    TDesC8& isdsLogoDownSendCacheLogoImpl();
-    
-    void isdsPostLogImpl(const QString &aFileName);
-    
-    void isdsGetIRIDImpl();
-
-    void isdsGetBrowseBannerImpl(QString& aBannerUrl, QString& aClickThroughUrl);
-    
-    void isdsMultSearchImpl(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText);
-        
-    bool isdsIsConstructSucceed() const;
-    
-    signals:    
-    
-    void categoryItemsChangedImpl(QList<IRQBrowseCategoryItem *> *aPushItemsList);
-
-    void channelItemsChangedImpl(QList<IRQChannelItem *> *aPushItemsList);
-
-    void operationExceptionImpl(IRQError aError);
-
-    void presetResponseImpl(IRQPreset *aPreset);  
- 
-    void syncPresetResultImpl(IRQSycPresetStatus aStatus, IRQPreset *aPreset);        
-
-    void presetLogoDownloadedImpl(IRQPreset* aPreset);
-
-    void presetLogoDownloadErrorImpl(); 
-    
-    void iridReceivedImpl(QString aIRID);   
-
-private:
-
-    /**
-     *IRQIsdsClientImpl::IsdsErrorL()
-     *used to indicate errors in retrieving data from isds server
-     *@param int, the error code sent by the http receiver 
-     **/
-    void IsdsErrorL(int aErrCode);
-    /**
-     *IRQIsdsClientImpl::IsdsCatogoryDataReceivedL()
-     *when we get the category data from low layer, the function is called and
-     *we will generate the data pushed to UI
-     **/
-    void IsdsCatogoryDataReceivedL(
-            CArrayPtrFlat<CIRBrowseCatagoryItems> & aParsedStructure);
-    /**
-     *IRQIsdsClientImpl::IsdsChannelDataReceivedL()
-     *when we get the channels data from low layer, the function is called and
-     *we will generate the data pushed to UI
-     **/
-    void IsdsChannelDataReceivedL(
-            CArrayPtrFlat<CIRBrowseChannelItems> & aParsedStructure);
-    /**
-     *IRQIsdsClientImpl::IsdsPresetDataReceivedL()
-     *when we get the presets data from low layer, the function is called and
-     *we will generate the data pushed to UI
-     **/
-    void IsdsPresetDataReceivedL(
-            CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure);
-    /**
-     *IRQIsdsClientImpl::IsdsPresetRemovedL()
-     *when we find that the preset to be syc is deleted from isds server, the function 
-     *will be called to notify the UI.
-     **/
-    void IsdsPresetRemovedL(TInt aId);
-    /**
-     *IRQIsdsClientImpl::IsdsPresetChangedL()
-     *when we find that the preset to be syc is changed from isds server, the function 
-     *will be called to notify the UI.
-     **/
-    void IsdsPresetChangedL(CIRIsdsPreset& aPreset);
-    /**
-     *IRQIsdsClientImpl::IsdsPresetNoChangeL()
-     *when we find that the preset to be syc is not changed from isds server, the function 
-     *will be called to notify the UI.
-     **/
-    void IsdsPresetNoChangeL();
-    /**
-     * IRQIsdsClientImpl::PresetLogoDownloadedL()
-     * called back when a preset's logo has downloaded
-     * @param CIRIsdsPreset*, preset with downloaded logo
-     */
-    void PresetLogoDownloadedL(CIRIsdsPreset* aPreset);
-
-    /**
-     * IRQIsdsClientImpl::PresetLogoDownloadError()
-     * called back when a preset's logo has not downloaded
-     * @param CIRIsdsPreset*, preset with no logo data
-     */
-    void PresetLogoDownloadError(CIRIsdsPreset* aPreset);   
-    
-    
-    void IsdsOtaInfoRecieved( CIROTAUpdate &aOtaData);
-    
-    /*
-     * IRQIsdsClientImpl::IsdsIRIDRecieved()
-     * call back from MIsdsResponseObserver
-     */
-    void IsdsIRIDRecieved(const TDesC& aIRID);    
-    
-
-private:   
- 
-    /**
-     * iISDSClient
-     * ISDS INTERFACE
-     */    
-    CIRIsdsClient *iISDSClient;    
-    
-    /*
-     * iFavPresets
-     * Instance of FavoritesDb
-     */
-    IRQFavoritesDB *iFavPresets;
-
-    /**
-     * iChannelBannerUrl
-     * banner url in statons view
-     */
-    QString iChannelBannerUrl;
-    
-    /**
-     * iCatBannerUrl
-     * banner url in category view
-     */
-    QString iCatBannerUrl;
-    
-    /**
-     * iChannelClickThroughUrl
-     * click through url in stations view
-     */
-    QString iChannelClickThroughUrl;
-    
-    /**
-     * iCatClickThroughUrl
-     * click through url in category view
-     */
-    QString iCatClickThroughUrl;
-    
-    /**
-     * iCatBannerTag
-     * bool value to show is there any category banner
-     */
-    bool iCatBannerTag;
-    
-    /**
-     * iChannelBannerTag
-     * bool value to show is there any channel banner
-     */
-    bool iChannelBannerTag;
-
-    
-    /**
-     *Pointet to Logo download
-     */
-    CIRLogoDownloadEngine* iLogoDownloadEngine;
-
-};
-
-#endif
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqisdsclient/inc/irqisdsclientimpl_symbian.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,223 @@
+/*
+* 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 IRQISDSCLIENTIMPL_H_
+#define IRQISDSCLIENTIMPL_H_
+
+#include "irqisdsclient.h"
+#include "irqabstractisdsclientimpl.h"
+#include "misdsresponseobserver.h"
+#include "mlogodownloadobserver.h"
+
+class CIRIsdsClient;
+class IRQFavoritesDB;
+class CIRLogoDownloadEngine;
+class IRQIsdsClientImpl : public QObject,
+	public IRQAbstractIsdsClientImpl,
+	public MIsdsResponseObserver,
+	public MLogoDownloadObserver
+{
+Q_OBJECT
+
+public:
+    
+    IRQIsdsClientImpl(IRQIsdsClient *aParent);
+    
+    ~IRQIsdsClientImpl();
+    
+    void isdsSearchRequestImpl(const QString& aIsdsSearchString);
+    
+     
+    void isdsCategoryRequestImpl(
+            IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache);
+
+    bool isdsIsCategoryCachedImpl(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType);
+    
+    bool isdsIsChannelCachedImpl(int aIndex);
+    
+    void isdsChannelRequestImpl(int aIndex, bool& aCache);
+
+     
+    void isdsListenRequestImpl(int aCurrentIndex, bool aHistoryBool =
+            false);
+
+     
+    int isdsSyncPresetImpl(int aPresetId, const QString& aIfModifySince, IRQFavoritesDB *aFavPresets);   
+     
+    void isdsCancelRequestImpl();    
+    
+    bool isdsIsCategoryBannerImpl();
+     
+    bool isdsIsChannelBannerImpl();
+     
+    void isdsLogoDownSendRequestImpl(IRQPreset* aPreset, int aNPVReq = 1,
+            int aXValue = 0, int aYValue = 0);
+    
+    bool isdsIsLogoCachedImpl(IRQPreset* aPreset, int aXValue = 0, int aYValue = 0);
+    
+    void isdsLogoDownCancelTransactionImpl();
+     
+    bool isdsLogoDownIsRunningImpl() const;
+     
+    void isdsLogoDownCheckCacheLogoImpl(const QString& aURL, int& aStatus);
+     
+    TDesC8& isdsLogoDownSendCacheLogoImpl();
+    
+    void isdsPostLogImpl(const QString &aFileName);
+    
+    void isdsGetIRIDImpl();
+
+    void isdsGetBrowseBannerImpl(QString& aBannerUrl, QString& aClickThroughUrl);
+    
+    void isdsMultSearchImpl(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText);
+        
+    bool isdsIsConstructSucceed() const;
+    
+private:
+
+    /**
+     *IRQIsdsClientImpl::IsdsErrorL()
+     *used to indicate errors in retrieving data from isds server
+     *@param int, the error code sent by the http receiver 
+     **/
+    void IsdsErrorL(int aErrCode);
+    /**
+     *IRQIsdsClientImpl::IsdsCatogoryDataReceivedL()
+     *when we get the category data from low layer, the function is called and
+     *we will generate the data pushed to UI
+     **/
+    void IsdsCatogoryDataReceivedL(
+            CArrayPtrFlat<CIRBrowseCatagoryItems> & aParsedStructure);
+    /**
+     *IRQIsdsClientImpl::IsdsChannelDataReceivedL()
+     *when we get the channels data from low layer, the function is called and
+     *we will generate the data pushed to UI
+     **/
+    void IsdsChannelDataReceivedL(
+            CArrayPtrFlat<CIRBrowseChannelItems> & aParsedStructure);
+    /**
+     *IRQIsdsClientImpl::IsdsPresetDataReceivedL()
+     *when we get the presets data from low layer, the function is called and
+     *we will generate the data pushed to UI
+     **/
+    void IsdsPresetDataReceivedL(
+            CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure);
+    /**
+     *IRQIsdsClientImpl::IsdsPresetRemovedL()
+     *when we find that the preset to be syc is deleted from isds server, the function 
+     *will be called to notify the UI.
+     **/
+    void IsdsPresetRemovedL(TInt aId);
+    /**
+     *IRQIsdsClientImpl::IsdsPresetChangedL()
+     *when we find that the preset to be syc is changed from isds server, the function 
+     *will be called to notify the UI.
+     **/
+    void IsdsPresetChangedL(CIRIsdsPreset& aPreset);
+    /**
+     *IRQIsdsClientImpl::IsdsPresetNoChangeL()
+     *when we find that the preset to be syc is not changed from isds server, the function 
+     *will be called to notify the UI.
+     **/
+    void IsdsPresetNoChangeL();
+    /**
+     * IRQIsdsClientImpl::PresetLogoDownloadedL()
+     * called back when a preset's logo has downloaded
+     * @param CIRIsdsPreset*, preset with downloaded logo
+     */
+    void PresetLogoDownloadedL(CIRIsdsPreset* aPreset);
+
+    /**
+     * IRQIsdsClientImpl::PresetLogoDownloadError()
+     * called back when a preset's logo has not downloaded
+     * @param CIRIsdsPreset*, preset with no logo data
+     */
+    void PresetLogoDownloadError(CIRIsdsPreset* aPreset);   
+    
+    
+    void IsdsOtaInfoRecieved( CIROTAUpdate &aOtaData);
+    
+    /*
+     * IRQIsdsClientImpl::IsdsIRIDRecieved()
+     * call back from MIsdsResponseObserver
+     */
+    void IsdsIRIDRecieved(const TDesC& aIRID);    
+	
+private:   
+ 
+    /**
+     * iISDSClient
+     * ISDS INTERFACE
+     */    
+    CIRIsdsClient *iISDSClient;    
+    
+    /*
+     * iFavPresets
+     * Instance of FavoritesDb
+     */
+    IRQFavoritesDB *iFavPresets;
+
+    /**
+     * iChannelBannerUrl
+     * banner url in statons view
+     */
+    QString iChannelBannerUrl;
+    
+    /**
+     * iCatBannerUrl
+     * banner url in category view
+     */
+    QString iCatBannerUrl;
+    
+    /**
+     * iChannelClickThroughUrl
+     * click through url in stations view
+     */
+    QString iChannelClickThroughUrl;
+    
+    /**
+     * iCatClickThroughUrl
+     * click through url in category view
+     */
+    QString iCatClickThroughUrl;
+    
+    /**
+     * iCatBannerTag
+     * bool value to show is there any category banner
+     */
+    bool iCatBannerTag;
+    
+    /**
+     * iChannelBannerTag
+     * bool value to show is there any channel banner
+     */
+    bool iChannelBannerTag;
+
+    
+    /**
+     *Pointet to Logo download
+     */
+    CIRLogoDownloadEngine* iLogoDownloadEngine;
+	
+    /**
+     *Pointet to father
+     */
+	IRQIsdsClient *q_ptr;
+
+};
+
+#endif
+
--- a/qtinternetradio/irqisdsclient/irqisdsclient.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqisdsclient/irqisdsclient.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -17,6 +17,7 @@
 TARGET = irqisdsclient
 TARGET.CAPABILITY += CAP_GENERAL_DLL
 
+DEFINES += BUILD_IRQISDSCLIENT_DLL
 defFilePath = ..
 MOC_DIR = moc
 DEPENDPATH = src
@@ -28,21 +29,20 @@
 INCLUDEPATH += $${OS_LAYER_PUBLIC_EXPORT_PATH(mmf/common)}
 INCLUDEPATH += $${OS_LAYER_PUBLIC_EXPORT_PATH(xml)}
 
-INCLUDEPATH += ../../internetradio2.0/settingsinc \
-               ../../internetradio2.0/datastructuresinc \
-               ../../internetradio2.0/favoritesdbinc \
-               ../../internetradio2.0/networkcontrollerinc \
-               ../../internetradio2.0/isdsclientinc  \
+INCLUDEPATH += ../../internetradio2.0/ircommon/inc \
+               ../../internetradio2.0/irfavoritesdb/inc \
+               ../../internetradio2.0/irnetworkcontroller/inc \
+               ../../internetradio2.0/irisdsclient/inc  \
                ../../internetradio2.0/resources \
-               ../../internetradio2.0/include  \
-               ../../internetradio2.0/dataproviderinc \
-               ../../internetradio2.0/cachemgmtinc \
-               ../../internetradio2.0/xmlparserinc \
-               ../../internetradio2.0/sessionloginc \
-               ../../internetradio2.0/settingsinc \
+               ../../internetradio2.0/inc  \
+               ../../internetradio2.0/irdataprovider/inc \
+               ../../internetradio2.0/ircachemgmt/inc \
+               ../../internetradio2.0/irxmlparser/inc \
+               ../../internetradio2.0/irsessionlog/inc \
                ../irqcommon/inc \
                ../irqfavoritesdb/inc \
                ../irqlogger/inc \
+               ../irqsettings/inc \
                ../../presetserver/include \
                ../../presetserver/clientinc \
                ../../presetserver/serverinc
@@ -51,7 +51,7 @@
         -lirfavoritesdb \
         -lirqfavorites \
         -lirnetworkcontroller \
-        -lirsettings \
+        -lirqsettings \
         -lisdsclientinterface \
         -lirdataprovider \
         -lflogger \
@@ -62,17 +62,23 @@
 symbian{
   TARGET.UID3 = 0xec6ecb67
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 #input
 
 #header files list
-HEADERS += inc\irqisdsclient.h \
-           inc\irqisdsclientimpl.h
+HEADERS += inc/irqisdsclient.h \
+           inc/irqisdsclientexporter.h \
+           inc/irqabstractisdsclientimpl.h
 
 #source files list
-SOURCES += irqisdsclient.cpp \
-           irqisdsclientimpl.cpp
+SOURCES += irqisdsclient.cpp
+
+symbian{
+HEADERS += inc/irqisdsclientimpl_symbian.h
+SOURCES += irqisdsclientimpl_symbian.cpp
+}
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
 
--- a/qtinternetradio/irqisdsclient/src/irqisdsclient.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqisdsclient/src/irqisdsclient.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -15,80 +15,77 @@
 *
 */
 
-#include "irqisdsclientimpl.h"   
- 
+#include "irqisdsclientimpl_symbian.h"   
+
+QMutex IRQIsdsClient::mMutex;
+int IRQIsdsClient::mRef = 0;
+IRQIsdsClient *IRQIsdsClient::mInstance = NULL;
+
 //Static function
 //to get an instance of the IRQIsdsClient
 //@return IRQIsdsClient *
-EXPORT_C IRQIsdsClient *IRQIsdsClient::openInstance()
+IRQIsdsClient *IRQIsdsClient::openInstance()
 {
-    IRQIsdsClient* irqisdsclient =
-            reinterpret_cast<IRQIsdsClient*> (Dll::Tls());
-
-    if (NULL == irqisdsclient)
+    mMutex.lock();
+    if (NULL == mInstance)
     {
-        irqisdsclient = new IRQIsdsClient();
-        int result = 0;
-        result = Dll::SetTls(irqisdsclient); 
-        
-        if( KErrNone != result )
-        {
-            delete irqisdsclient;
-            return NULL;
-        }
-        
-        irqisdsclient->iSingletonInstances = 1;
+        mInstance = new IRQIsdsClient();
     }
-    else
-        irqisdsclient->iSingletonInstances++;
+	if (NULL != mInstance)
+    {
+        mInstance->mRef++;
+	}
 
-    return irqisdsclient;
+    mMutex.unlock();
+    return mInstance;
 }
 
 //
 //close the instance.
 //@return void
-EXPORT_C void IRQIsdsClient::closeInstance()
+void IRQIsdsClient::closeInstance()
 {
-    iSingletonInstances--;
+    mMutex.lock();
+    mRef--;
 
-    if (0 == iSingletonInstances)
+    if (0 == mRef)
     {
-        Dll::SetTls(NULL);
+        mInstance = NULL;
         delete this;
     }
 
+    mMutex.unlock();
     return;
 }
 
 //Issue a search request to the isds server
 //@param QString, the requested search string
 //
-EXPORT_C void IRQIsdsClient::isdsSearchRequest(const QString& aIsdsSearchString)
+void IRQIsdsClient::isdsSearchRequest(const QString& aIsdsSearchString)
 {
-    iImpl->isdsSearchRequestImpl(aIsdsSearchString);     
+    d_ptr->isdsSearchRequestImpl(aIsdsSearchString);     
 }
 
 //Send the category request by the category type
 // 
-EXPORT_C void IRQIsdsClient::isdsCategoryRequest(
+void IRQIsdsClient::isdsCategoryRequest(
         IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache)
 { 
-    iImpl->isdsCategoryRequestImpl(aIDType, aCache);
+    d_ptr->isdsCategoryRequestImpl(aIDType, aCache);
 }
 
-EXPORT_C bool IRQIsdsClient::isdsIsCategoryCached(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType)
+bool IRQIsdsClient::isdsIsCategoryCached(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType)
 {
-    return iImpl->isdsIsCategoryCachedImpl(aIDType);
+    return d_ptr->isdsIsCategoryCachedImpl(aIDType);
 }
 
-EXPORT_C bool IRQIsdsClient::isdsIsChannelCached(int aIndex)
+bool IRQIsdsClient::isdsIsChannelCached(int aIndex)
 {
-    return iImpl->isdsIsChannelCachedImpl(aIndex);
+    return d_ptr->isdsIsChannelCachedImpl(aIndex);
 }
 //Send the channels request by the channel index in the specify category
 //
-EXPORT_C void IRQIsdsClient::isdsChannelRequest(int aIndex, bool& aCache)
+void IRQIsdsClient::isdsChannelRequest(int aIndex, bool& aCache)
 {
     
     if( 0 > aIndex )
@@ -98,13 +95,13 @@
     if( isdsIsCategoryBanner() && 0 == aIndex )
         return;
     
-    iImpl->isdsChannelRequestImpl(aIndex, aCache);
+    d_ptr->isdsChannelRequestImpl(aIndex, aCache);
 }
 
 //issue a listen request to the isds client
 //@param int,bool, the current index of channel, the history tag  
 //
-EXPORT_C void IRQIsdsClient::isdsListenRequest(int aCurrentIndex,
+void IRQIsdsClient::isdsListenRequest(int aCurrentIndex,
         bool aHistoryBool)
 { 
     if (0 > aCurrentIndex)
@@ -114,26 +111,26 @@
     if (isdsIsChannelBanner() && 0 == aCurrentIndex)
         return;
     
-    iImpl->isdsListenRequestImpl(aCurrentIndex,aHistoryBool); 
+    d_ptr->isdsListenRequestImpl(aCurrentIndex,aHistoryBool); 
 }
 
 //to syncronize presets
 //@param int,QString, the preset id and the last modified tag for the preset   
 //
-EXPORT_C int IRQIsdsClient::isdsSyncPreset(int aPresetId,
+int IRQIsdsClient::isdsSyncPreset(int aPresetId,
         const QString& aIfModifySince, IRQFavoritesDB *aFavPresets)
 {     
     TInt result = 0;
-    result = iImpl->isdsSyncPresetImpl(aPresetId, aIfModifySince, aFavPresets);
+    result = d_ptr->isdsSyncPresetImpl(aPresetId, aIfModifySince, aFavPresets);
     return result;
 } 
 
 //Cacel the request sent by the UI.
 //@param None
 //
-EXPORT_C void IRQIsdsClient::isdsCancelRequest()
+void IRQIsdsClient::isdsCancelRequest()
 {
-    iImpl->isdsCancelRequestImpl();  
+    d_ptr->isdsCancelRequestImpl();  
 }
 
  
@@ -141,89 +138,89 @@
 //to see wether category view has a banner.
 //@param None
 //
-EXPORT_C bool IRQIsdsClient::isdsIsCategoryBanner()
+bool IRQIsdsClient::isdsIsCategoryBanner()
 {
-    return iImpl->isdsIsCategoryBannerImpl();
+    return d_ptr->isdsIsCategoryBannerImpl();
 }
 
 //
 //to see wether channel view has a banner.
 //@param None
-EXPORT_C bool IRQIsdsClient::isdsIsChannelBanner()
+bool IRQIsdsClient::isdsIsChannelBanner()
 {
-    return iImpl->isdsIsChannelBannerImpl();
+    return d_ptr->isdsIsChannelBannerImpl();
 }
 
 //the api is called from the UI(nowplaying view) to download logo.
 //@param None
 //
-EXPORT_C void IRQIsdsClient::isdsLogoDownSendRequest(IRQPreset* aPreset,
+void IRQIsdsClient::isdsLogoDownSendRequest(IRQPreset* aPreset,
         int aNPVReq, int aXValue, int aYValue)
 { 
-    iImpl->isdsLogoDownSendRequestImpl(aPreset, aNPVReq, aXValue, aYValue);
+    d_ptr->isdsLogoDownSendRequestImpl(aPreset, aNPVReq, aXValue, aYValue);
 }
 
-EXPORT_C bool IRQIsdsClient::isdsIsLogoCached(IRQPreset* aPreset, int aXValue, int aYValue)
+bool IRQIsdsClient::isdsIsLogoCached(IRQPreset* aPreset, int aXValue, int aYValue)
 {
-    return iImpl->isdsIsLogoCachedImpl(aPreset, aXValue, aYValue);
+    return d_ptr->isdsIsLogoCachedImpl(aPreset, aXValue, aYValue);
 }
 //
 //the api is called to cancel the current transaction
 //@param None
 //
-EXPORT_C void IRQIsdsClient::isdsLogoDownCancelTransaction()
+void IRQIsdsClient::isdsLogoDownCancelTransaction()
 {
-    iImpl->isdsLogoDownCancelTransactionImpl();
+    d_ptr->isdsLogoDownCancelTransactionImpl();
 }
 
 //
 //To know the status of downloading logo
-EXPORT_C bool IRQIsdsClient::isdsLogoDownIsRunning() const
+bool IRQIsdsClient::isdsLogoDownIsRunning() const
 {
-    return iImpl->isdsLogoDownIsRunningImpl();
+    return d_ptr->isdsLogoDownIsRunningImpl();
 }
 
 //takes the url as a parameter and returns the logo data which is in cache
 //this API is called form the search results for to display logo on the view
 //@param QString: the url of the img, int: the status for getting
 //
-EXPORT_C void IRQIsdsClient::isdsLogoDownCheckCacheLogo(const QString& aURL,
+void IRQIsdsClient::isdsLogoDownCheckCacheLogo(const QString& aURL,
         int& aStatus)
 { 
-    iImpl->isdsLogoDownCheckCacheLogoImpl(aURL, aStatus);
+    d_ptr->isdsLogoDownCheckCacheLogoImpl(aURL, aStatus);
 }
 
 //get the cache logo from the logodown engine. The "send" is the point from a logodown engine
 //@param None
 //
-EXPORT_C TDesC8& IRQIsdsClient::isdsLogoDownSendCacheLogo()
+TDesC8& IRQIsdsClient::isdsLogoDownSendCacheLogo()
 {
-    return iImpl->isdsLogoDownSendCacheLogoImpl();
+    return d_ptr->isdsLogoDownSendCacheLogoImpl();
 }
 
-EXPORT_C void IRQIsdsClient::isdsPostLog(const QString& aFileName)
+void IRQIsdsClient::isdsPostLog(const QString& aFileName)
 {
-    iImpl->isdsPostLogImpl(aFileName);
+    d_ptr->isdsPostLogImpl(aFileName);
 }
 
-EXPORT_C void IRQIsdsClient::isdsGetIRID()
+void IRQIsdsClient::isdsGetIRID()
 {
-    iImpl->isdsGetIRIDImpl();
+    d_ptr->isdsGetIRIDImpl();
 }
 
-EXPORT_C void IRQIsdsClient::isdsGetBrowseBanner(QString& aBannerUrl, QString& aClickThroughUrl)
+void IRQIsdsClient::isdsGetBrowseBanner(QString& aBannerUrl, QString& aClickThroughUrl)
 {
-    iImpl->isdsGetBrowseBannerImpl(aBannerUrl, aClickThroughUrl);
+    d_ptr->isdsGetBrowseBannerImpl(aBannerUrl, aClickThroughUrl);
 }
 
-EXPORT_C void IRQIsdsClient::isdsMultSearch(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText)
+void IRQIsdsClient::isdsMultSearch(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText)
 {
-    iImpl->isdsMultSearchImpl(aGenreID, aCountryID, aLanguageID, aSearchText);
+    d_ptr->isdsMultSearchImpl(aGenreID, aCountryID, aLanguageID, aSearchText);
 }
 
-EXPORT_C bool IRQIsdsClient::isdsIsConstructSucceed() const
+bool IRQIsdsClient::isdsIsConstructSucceed() const
 {
-    return iImpl->isdsIsConstructSucceed();
+    return d_ptr->isdsIsConstructSucceed();
 }
 
 /************************ private functions **************************/
@@ -231,45 +228,13 @@
 // private
 IRQIsdsClient::~IRQIsdsClient()
 {    
-    delete iImpl;
+    delete d_ptr;
 }
 
 
 IRQIsdsClient::IRQIsdsClient()
 {    
-    iImpl = new IRQIsdsClientImpl(); 
-    Q_ASSERT(iImpl);
-    
-    connect(iImpl, SIGNAL(categoryItemsChangedImpl(QList<IRQBrowseCategoryItem *> *)),
-                this, SIGNAL(categoryItemsChanged(QList<IRQBrowseCategoryItem *> *)));
-    
-    connect(iImpl, SIGNAL(channelItemsChangedImpl(QList<IRQChannelItem *> *)),
-                    this, SIGNAL(channelItemsChanged(QList<IRQChannelItem *> *)));
-    
-    connect(iImpl, SIGNAL(operationExceptionImpl(IRQError)),
-            this, SIGNAL(operationException(IRQError)));
-    
-    
-    connect(iImpl, SIGNAL(presetResponseImpl(IRQPreset *)),
-            this, SIGNAL(presetResponse(IRQPreset *)));
-   
-    
-    connect(iImpl, SIGNAL(syncPresetResultImpl(IRQSycPresetStatus, IRQPreset*)),
-                this, SIGNAL(syncPresetResult(IRQSycPresetStatus,  IRQPreset*)));
-    
-    
-    connect(iImpl, SIGNAL(presetLogoDownloadedImpl(IRQPreset*)),
-                    this, SIGNAL(presetLogoDownloaded(IRQPreset*)));
-   
-    
-    connect(iImpl, SIGNAL(presetLogoDownloadErrorImpl()),
-                        this, SIGNAL(presetLogoDownloadError()));     
-   
-    
-    connect(iImpl, SIGNAL(iridReceivedImpl(QString)), 
-                        this, SIGNAL(iridReceived(QString)));
-    
-}
-
+    d_ptr = new IRQIsdsClientImpl(this); 
+    Q_ASSERT(d_ptr);
+} 
  
- 
--- a/qtinternetradio/irqisdsclient/src/irqisdsclientimpl.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,586 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifdef USER_DEFINED_ISDSURL
-#include <QFile>
-#include <QTextStream>
-#include <QStringList>
-#endif // USER_DEFINED_ISDSURL
-#include "irqisdsclientimpl.h"
-#include "irqenums.h"
-#include "irqfavoritesdb.h"
-#include "irlogodownloadengine.h"
-#include "irdataprovider.h"
-#include "irhttpdataprovider.h"
-#include "irqutility.h"
-#include "irbrowsecatagoryitems.h"
-#include "irbrowsechannelitems.h"
-#include "isdsclientdll.h"
-#include "irqisdsdatastructure.h"
-#include "irqlogger.h"
-
-#ifdef USER_DEFINED_ISDSURL
-static const char* KDefaultIsdsUrl = "http://88.114.146.238/isds";
-void getIsdsUrlFromConfiguration(QString & aUrl);
-#endif // USER_DEFINED_ISDSURL
-
-IRQIsdsClientImpl::IRQIsdsClientImpl() : iISDSClient(NULL), iFavPresets(NULL),
-                                                                    iLogoDownloadEngine(NULL)
-{
-#ifdef USER_DEFINED_ISDSURL
-    QString userDefinedIsdsUrl(KDefaultIsdsUrl);
-    getIsdsUrlFromConfiguration(userDefinedIsdsUrl);
-    TPtrC irqissbaseurl(reinterpret_cast<const TUint16*>(userDefinedIsdsUrl.utf16()));
-#else    
-    _LIT( irqissbaseurl, "http://idirectory.xgns.net/isds" );
-#endif    
-    TRAPD(error, iISDSClient = CIRIsdsClient::NewL(*this, irqissbaseurl));
-    if(KErrNone != error)
-    {
-        return;
-    }
-    
-    iLogoDownloadEngine
-            = iISDSClient->GetDataProvider()->GetHttpDataProvider()->GetLogoDownloadEngine();
-}
-
-IRQIsdsClientImpl::~IRQIsdsClientImpl()
-{
-    delete iISDSClient;
-}
-
-//used to indicate errors in retrieving data from isds server
-//@param int, the error code sent by the http receiver 
-//
-void IRQIsdsClientImpl::IsdsErrorL(int aErrCode)
-{
-    LOG_FORMAT( "This is a QString %d", aErrCode);
-    if (KNotFound == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorNotFound);
-    }
-    else if (KErrCouldNotConnect == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorCouldNotConnect);
-    }
-    else if (KDndTimedOut == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorTimeOut);
-    }
-    else if (KServiceUnavailable == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorServiceUnavailable);
-    }
-    else if (KErrCorrupt == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorCorrupt);
-    }
-    else if (KDataProviderTimeout == aErrCode)
-    {
-        emit operationExceptionImpl(EIRQErrorTimeOut);
-    }
-    else
-        emit operationExceptionImpl(EIRQErrorGeneral);
-}
-
-void IRQIsdsClientImpl::isdsSearchRequestImpl(const QString& aIsdsSearchString)
-{
-
-    TPtrC16 searchDes(
-            reinterpret_cast<const TUint16*> (aIsdsSearchString.utf16()));
-   
-    TRAPD( err, iISDSClient->IRISDSSearchL(searchDes));
-    if (KErrNone != err)
-    {
-        emit operationExceptionImpl(EIRQErrorGeneral);
-    }
-}
-
- 
-
-//Send the category request by the category type
-// 
-void IRQIsdsClientImpl::isdsCategoryRequestImpl(
-        IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache)
-{
-    iCatBannerTag = false;
-    TRAPD( err, aCache = !(iISDSClient->IRIsdsClientIntefaceL((CIRIsdsClient::TIRIsdsclientInterfaceIDs)aIDType)));
-    if (err != KErrNone)
-    {
-        emit operationExceptionImpl(EIRQErrorGeneral);
-    }
-}
-
-bool IRQIsdsClientImpl::isdsIsCategoryCachedImpl(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType)
-{
-    bool cache = false;
-    TRAP_IGNORE(cache = iISDSClient->IRIsdsIsCategoryCachedL((CIRIsdsClient::TIRIsdsclientInterfaceIDs)aIDType));    
-    return cache;
-}
-
-bool IRQIsdsClientImpl::isdsIsChannelCachedImpl(int aIndex)
-{
-    bool cache = false;
-    TRAP_IGNORE(cache = iISDSClient->IRIsdsIsChannelCachedL(aIndex)); 
-    return cache;
-}
-
-//Send the channels request by the channel index in the specify category
-//
-void IRQIsdsClientImpl::isdsChannelRequestImpl(int aIndex, bool& aCache)
-{
-    iChannelBannerTag = false;
-    TRAPD( err, aCache = !(iISDSClient->IRIsdsClientIntefaceL(aIndex, CIRIsdsClient::ECatagory)));
-    if (err != KErrNone)
-    {
-        emit operationExceptionImpl(EIRQErrorGeneral);
-    }
-}
-
-//issue a listen request to the isds client
-//@param int,bool, the current index of channel, the history tag  
-//
-void IRQIsdsClientImpl::isdsListenRequestImpl(int aCurrentIndex,
-        bool aHistoryBool)
-{
-    if (aHistoryBool)
-    {
-        TRAPD( err, iISDSClient->IRIsdsClientIntefaceL(aCurrentIndex, CIRIsdsClient::EChannels, ETrue));
-        if (err != KErrNone)
-        {
-            emit operationExceptionImpl(EIRQErrorGeneral);
-        }
-    }
-    else
-    {
-         
-        TRAPD( err, iISDSClient->IRIsdsClientIntefaceL(aCurrentIndex, CIRIsdsClient::EChannels));
-        if (err != KErrNone)
-        {
-            emit operationExceptionImpl(EIRQErrorGeneral);
-        }
-    }
-}
-
-//to syncronize presets
-//@param int,QString, the preset id and the last modified tag for the preset   
-//
-int IRQIsdsClientImpl::isdsSyncPresetImpl(int aPresetId,
-        const QString& aIfModifySince, IRQFavoritesDB *aFavPresets)
-{
-    iFavPresets = aFavPresets;
-    TPtrC16 modifySinceDes(
-            reinterpret_cast<const TUint16*> (aIfModifySince.utf16()));
-    TInt result = 0;
-    TRAP_IGNORE(result = iISDSClient->SyncPresetL(aPresetId,modifySinceDes));     
-    return result;
-}
-
-//Cacel the request sent by the UI.
-//@param None
-//
-void IRQIsdsClientImpl::isdsCancelRequestImpl()
-{
-    TRAPD( err, iISDSClient->IRISDSCancelRequest());
-    if (err != KErrNone)
-    {
-        emit operationExceptionImpl(EIRQErrorGeneral);
-    }
-}
-
-//to see wether category view has a banner.
-//@param None
-//
-bool IRQIsdsClientImpl::isdsIsCategoryBannerImpl()
-{
-    return iCatBannerTag;
-}
-
-//
-//to see wether channel view has a banner.
-//@param None
-bool IRQIsdsClientImpl::isdsIsChannelBannerImpl()
-{
-    return iChannelBannerTag;
-}
-
- 
-//the api is called from the UI(nowplaying view) to download logo.
-//@param None
-//
-void IRQIsdsClientImpl::isdsLogoDownSendRequestImpl(IRQPreset* aPreset,
-        int aNPVReq, int aXValue, int aYValue)
-{
-    if (NULL == aPreset)
-        return;
-
-    CIRIsdsPreset *cirPreset = NULL;
-    TRAP_IGNORE(cirPreset = CIRIsdsPreset::NewL());
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(*aPreset, *cirPreset);
-    
-    aXValue = aXValue % 1000;
-    aYValue = aYValue % 1000;
-    
-    TRAPD( err, iLogoDownloadEngine->SendRequestL(cirPreset,this, aNPVReq, aXValue, aYValue));//0 0 
-    delete cirPreset;
-    if (err != KErrNone)
-    {
-        emit operationExceptionImpl(EIRQErrorGeneral);
-    }
-}
-
-bool IRQIsdsClientImpl::isdsIsLogoCachedImpl(IRQPreset* aPreset, int aXValue, int aYValue)
-{
-    if( NULL == aPreset )
-        return false;
-    
-    bool cached = false;
-    CIRIsdsPreset *cirPreset = NULL;
-    TRAP_IGNORE(cirPreset = CIRIsdsPreset::NewL());
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(*aPreset, *cirPreset);
-    aXValue = aXValue % 1000;
-    aYValue = aYValue % 1000;
-    
-    TRAP_IGNORE(cached = iLogoDownloadEngine->isLogoCachedL(cirPreset,aXValue, aYValue));
-	  delete cirPreset;
-	  cirPreset = NULL;
-	
-    return cached;
-}
-
-//
-//the api is called to cancel the current transaction
-//@param None
-//
-void IRQIsdsClientImpl::isdsLogoDownCancelTransactionImpl()
-{
-    iLogoDownloadEngine->CancelTransaction();
-}
-
-//
-//To know the status of downloading logo
-bool IRQIsdsClientImpl::isdsLogoDownIsRunningImpl() const
-{
-    return iLogoDownloadEngine->IsRunning();
-}
-
-//takes the url as a parameter and returns the logo data which is in cache
-//this API is called form the search results for to display logo on the view
-//@param QString: the url of the img, int: the status for getting
-//
-void IRQIsdsClientImpl::isdsLogoDownCheckCacheLogoImpl(
-        const QString& aURL, int& aStatus)
-{
-    TInt status = 0;
-    TPtrC16 url(reinterpret_cast<const TUint16*> (aURL.utf16()));
-    TRAP_IGNORE(iLogoDownloadEngine->GetCacheLogoL(url, status));       
-    aStatus = status;
-    
-}
-
-//get the cache logo from the logodown engine. The "send" is the point from a logodown engine
-//@param None
-//
-TDesC8& IRQIsdsClientImpl::isdsLogoDownSendCacheLogoImpl()
-{
-    return iLogoDownloadEngine->SendCacheLogo();
-}
-
-void IRQIsdsClientImpl::isdsPostLogImpl(const QString &aFileName)
-{
-    TPtrC16 fileName(
-                reinterpret_cast<const TUint16*> (aFileName.utf16()));
-    TBuf<256> fileBuf = fileName;
-    TRAP_IGNORE(iISDSClient->IRISDSPostL(fileBuf));     
-}
-
-void IRQIsdsClientImpl::isdsGetIRIDImpl()
-{
-    TRAP_IGNORE(iISDSClient->IRGetIRIDL());
-}
-
-void IRQIsdsClientImpl::isdsGetBrowseBannerImpl(QString& aBannerUrl, QString& aClickThroughUrl)
-{
-    aBannerUrl = iCatBannerUrl;
-    aClickThroughUrl = iCatClickThroughUrl;
-}
-
-void IRQIsdsClientImpl::isdsMultSearchImpl(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText)
-{
-    TPtrC16 genreID(reinterpret_cast<const TUint16*> (aGenreID.utf16()));
-    TPtrC16 countryID(reinterpret_cast<const TUint16*> (aCountryID.utf16()));
-    TPtrC16 languageID(reinterpret_cast<const TUint16*> (aLanguageID.utf16()));
-    TPtrC16 searchText(reinterpret_cast<const TUint16*> (aSearchText.utf16()));
-    TRAP_IGNORE(iISDSClient->IRISDSMultiSearchL(genreID, countryID, languageID, searchText));
-}
-//when we get the category data from low layer, the function is called and
-//we will generate the data pushed to UI, the IRQIsdsClientImpl will not free the 
-//memory.
-//
-void IRQIsdsClientImpl::IsdsCatogoryDataReceivedL(CArrayPtrFlat<
-        CIRBrowseCatagoryItems> & aParsedStructure)
-{
-    iCatBannerTag = false;
-    iCatBannerUrl.clear();
-    iCatClickThroughUrl.clear();
-
-    /* the data is pushed to the UI and irqisds is not care when it's deleted */
-    QList<IRQBrowseCategoryItem *> * pushBrowseCategoryItemList = new QList<
-            IRQBrowseCategoryItem *> ;
-    for (TInt i = 0; i < aParsedStructure.Count(); i++)
-    {
-        if (NULL != aParsedStructure[i]->iCatBannerUrl)
-        {
-            iCatBannerTag = true;
-            if (0 != aParsedStructure[i]->iCatBannerUrl->Length())
-            {
-                iCatBannerUrl = QString::fromUtf16(
-                        aParsedStructure[i]->iCatBannerUrl->Des().Ptr(),
-                        aParsedStructure[i]->iCatBannerUrl->Des().Length());
-            }
-
-            if (NULL != aParsedStructure[i]->iCatClickThroughUrl)
-            {
-                if (0 != aParsedStructure[i]->iCatClickThroughUrl->Length())
-                {
-                    iCatClickThroughUrl
-                            = QString::fromUtf16(
-                                    aParsedStructure[i]->iCatClickThroughUrl->Des().Ptr(),
-                                    aParsedStructure[i]->iCatClickThroughUrl->Des().Length());
-                }
-            }
-        }// end if ( NULL != ) 
-
-        if (NULL != aParsedStructure[i]->iCatName)
-        {
-            IRQBrowseCategoryItem * oneItem = new IRQBrowseCategoryItem();
-            oneItem->catName = QString::fromUtf16(
-                    aParsedStructure[i]->iCatName->Des().Ptr(),
-                    aParsedStructure[i]->iCatName->Des().Length());
-            oneItem->size = aParsedStructure[i]->iSize;
-            pushBrowseCategoryItemList->append(oneItem);
-        }
-    }// end for
-
-    /* now we get the data and we need to signal the ui to stop the 
-     dialog and emit and call the setdata of model*/
-    emit
-    categoryItemsChangedImpl(pushBrowseCategoryItemList);
-
-}
-
-//when we get the channels data from low layer, the function is called and
-//we will generate the data pushed to UI
-//
-void IRQIsdsClientImpl::IsdsChannelDataReceivedL(CArrayPtrFlat<
-        CIRBrowseChannelItems> & aParsedStructure)
-{
-    iChannelBannerTag = false;
-    iChannelBannerUrl.clear();
-    iChannelClickThroughUrl.clear();
-
-    QList<IRQChannelItem *> *pushBrowseChannelItemList = new QList<
-            IRQChannelItem *> ;
-
-    for (int i = 0; i < aParsedStructure.Count(); i++)
-    {
-        if (NULL != aParsedStructure[i]->iBannerUrl)
-        {
-            iChannelBannerTag = true;
-
-            if (0 != aParsedStructure[i]->iBannerUrl->Length())
-            {
-                iChannelBannerUrl = QString::fromUtf16(
-                        aParsedStructure[i]->iBannerUrl->Des().Ptr(),
-                        aParsedStructure[i]->iBannerUrl->Des().Length());
-            }
-
-            if (NULL != aParsedStructure[i]->iClickThroughUrl)
-            {
-                if (0 != aParsedStructure[i]->iClickThroughUrl->Length())
-                {
-                    iChannelClickThroughUrl
-                            = QString::fromUtf16(
-                                    aParsedStructure[i]->iClickThroughUrl->Des().Ptr(),
-                                    aParsedStructure[i]->iClickThroughUrl->Des().Length());
-                }
-            }
-        } //end if aParsedStructure[i]->
-
-        if (NULL != aParsedStructure[i]->iChannelName)
-        {
-            IRQChannelItem * oneChannelItem = new IRQChannelItem();
-            oneChannelItem->channelName = QString::fromUtf16(
-                    aParsedStructure[i]->iChannelName->Des().Ptr(),
-                    aParsedStructure[i]->iChannelName->Des().Length());
-            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())
-            {
-
-                oneChannelItem->imageURL = QString::fromUtf16(
-                        aParsedStructure[i]->iImgUrl.Ptr(),
-                        aParsedStructure[i]->iImgUrl.Length());;
-            }
-            else
-                oneChannelItem->imageURL = "";
-
-            pushBrowseChannelItemList->append(oneChannelItem);
-        }
-    }
-
-    /* after we get data, we push it to the UI to show*/
-    emit
-    channelItemsChangedImpl(pushBrowseChannelItemList);
-    
-}
-
-//when we get the presets data from low layer, the function is called and
-//we will generate the data pushed to UI. 
-//
-void IRQIsdsClientImpl::IsdsPresetDataReceivedL(
-        CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure)
-{
-    CIRIsdsPreset* preset = aParsedStructure[0];
-    IRQPreset* qPreset = new IRQPreset();
-    /* we need convert the CIR to QT */
-    IRQUtility::convertCIRIsdsPreset2IRQPrest(*preset, *qPreset);
-    qPreset->type = IRQPreset::EIsds;
-    emit
-    presetResponseImpl(qPreset);
-    
-}
-
-//when we find that the preset to be syc is deleted from isds server, the function 
-//will be called to notify the UI. DISCUSSED FURTHER
-//
-void IRQIsdsClientImpl::IsdsPresetRemovedL(TInt aId)
-{
-    if(iFavPresets)
-    {
-        iFavPresets->makePresetUserDefined(aId, 0);
-    }
-    emit
-    syncPresetResultImpl(EIRQIsdsSycPresetRemoved, NULL);
-}
-
-//when we find that the preset to be syc is changed from isds server, the function 
-//will be called to notify the UI.
-//
-void IRQIsdsClientImpl::IsdsPresetChangedL(CIRIsdsPreset& aPreset)
-{
-    IRQPreset* qPreset = new IRQPreset();
-    IRQUtility::convertCIRIsdsPreset2IRQPrest(aPreset, *qPreset);
-    qPreset->type = IRQPreset::EIsds;
-    if(iFavPresets)
-    {        
-        iFavPresets->replacePreset(*qPreset);
-    }
-    emit syncPresetResultImpl(EIRQIsdsSycPresetChanged, qPreset);
-}
-
-//when we find that the preset to be syc is changed from isds server, the function 
-//will be called to notify the UI.
-//
-void IRQIsdsClientImpl::IsdsPresetNoChangeL()
-{
-    emit syncPresetResultImpl(EIRQIsdsSycPresetNoChange, NULL);
-
-}
-
-//called back when a preset's logo has downloaded
-//@param CIRIsdsPreset*, preset with downloaded logo
-//
-void IRQIsdsClientImpl::PresetLogoDownloadedL(CIRIsdsPreset* aPreset)
-{
-    if (NULL == aPreset)
-        return;
-
-    IRQPreset * irqPreset = new IRQPreset();
-    IRQUtility::convertCIRIsdsPreset2IRQPrest(*aPreset, *irqPreset);
-
-    emit presetLogoDownloadedImpl(irqPreset);
-}
-
-//called back when a preset's logo has not downloaded
-//@param CIRIsdsPreset*, preset with no logo data
-//
-void IRQIsdsClientImpl::PresetLogoDownloadError(CIRIsdsPreset* aPreset)
-{
-    if (NULL == aPreset)
-        return;
-
-    emit presetLogoDownloadErrorImpl();
-}
-
-//receive the irid from isds server, not implementated
-//
-void IRQIsdsClientImpl::IsdsIRIDRecieved(const TDesC& aIRID)
-{
-    //nothing now
-    QString irid = QString::fromUtf16(aIRID.Ptr(),aIRID.Length());
-    emit iridReceivedImpl(irid);     
-}
-
- 
-
-
-//
-//receive the ota info from isds server, not implementated
-//
-void IRQIsdsClientImpl::IsdsOtaInfoRecieved(CIROTAUpdate &aOtaData)
-{
-    //nothing now
-    Q_UNUSED(aOtaData);    
-}
-
-bool IRQIsdsClientImpl::isdsIsConstructSucceed() const
-{
-    return iISDSClient != NULL;
-}
-
-
-#ifdef USER_DEFINED_ISDSURL
-void getIsdsUrlFromConfiguration(QString & aUrl)
-{
-    QFile file("C:\\data\\QTIRConfigure.txt");
-    if (file.open(QIODevice::ReadOnly)) 
-    {
-        QTextStream stream( &file );
-        QString line;
-        QStringList parameter;
-        while (!stream.atEnd())
-        {
-            line = stream.readLine();
-            parameter = line.split("=");
-            if (parameter.count() == 2)
-            {
-                if (parameter.first() == "userDefinedIsdsUrl")
-                {
-                    aUrl = parameter.last();
-                    break;
-                }
-            }
-        }
-        file.close();
-    }
-}
-#endif  // USER_DEFINED_ISDSURL
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqisdsclient/src/irqisdsclientimpl_symbian.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,551 @@
+/*
+* 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 "irqisdsclientimpl_symbian.h"
+#include "irqenums.h"
+#include "irqfavoritesdb.h"
+#include "irlogodownloadengine.h"
+#include "irdataprovider.h"
+#include "irhttpdataprovider.h"
+#include "irqutility.h"
+#include "irbrowsecatagoryitems.h"
+#include "irbrowsechannelitems.h"
+#include "isdsclientdll.h"
+#include "irqisdsdatastructure.h"
+#include "irqsettings.h"
+#include "irqlogger.h"
+
+IRQIsdsClientImpl::IRQIsdsClientImpl(IRQIsdsClient *aParent) : iISDSClient(NULL), iFavPresets(NULL),
+                                                                    iLogoDownloadEngine(NULL), q_ptr(aParent)
+{
+    IRQSettings *irSettings = IRQSettings::openInstance();    
+    QString isdsUrl = irSettings->getIsdsUrl();
+    irSettings->closeInstance();
+    
+    if (isdsUrl.endsWith('/')) // remove the last '/' at the end of the url
+    {
+        isdsUrl.chop(1);
+    }
+    TPtrC irqisdsbaseurl(reinterpret_cast<const TUint16*>(isdsUrl.utf16()));
+
+    TRAPD(error, iISDSClient = CIRIsdsClient::NewL(*this, irqisdsbaseurl));
+    if(KErrNone != error)
+    {
+        return;
+    }
+    
+    iLogoDownloadEngine
+            = iISDSClient->GetDataProvider()->GetHttpDataProvider()->GetLogoDownloadEngine();
+}
+
+IRQIsdsClientImpl::~IRQIsdsClientImpl()
+{
+    delete iISDSClient;
+}
+
+//used to indicate errors in retrieving data from isds server
+//@param int, the error code sent by the http receiver 
+//
+void IRQIsdsClientImpl::IsdsErrorL(int aErrCode)
+{
+    LOG_FORMAT( "This is a QString %d", aErrCode);
+    if (KNotFound == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorNotFound);
+    }
+    else if (KErrCouldNotConnect == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorCouldNotConnect);
+    }
+    else if (KDndTimedOut == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorTimeOut);
+    }
+    else if (KServiceUnavailable == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorServiceUnavailable);
+    }
+    else if (KErrCorrupt == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorCorrupt);
+    }
+    else if (KDataProviderTimeout == aErrCode)
+    {
+        emit q_ptr->operationException(EIRQErrorTimeOut);
+    }
+    else
+        emit q_ptr->operationException(EIRQErrorGeneral);
+}
+
+void IRQIsdsClientImpl::isdsSearchRequestImpl(const QString& aIsdsSearchString)
+{
+
+    TPtrC16 searchDes(
+            reinterpret_cast<const TUint16*> (aIsdsSearchString.utf16()));
+   
+    TRAPD( err, iISDSClient->IRISDSSearchL(searchDes));
+    if (KErrNone != err)
+    {
+        emit q_ptr->operationException(EIRQErrorGeneral);
+    }
+}
+
+ 
+
+//Send the category request by the category type
+// 
+void IRQIsdsClientImpl::isdsCategoryRequestImpl(
+        IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType, bool& aCache)
+{
+    iCatBannerTag = false;
+    TRAPD( err, aCache = !(iISDSClient->IRIsdsClientIntefaceL((CIRIsdsClient::TIRIsdsclientInterfaceIDs)aIDType)));
+    if (err != KErrNone)
+    {
+        emit q_ptr->operationException(EIRQErrorGeneral);
+    }
+}
+
+bool IRQIsdsClientImpl::isdsIsCategoryCachedImpl(IRQIsdsClient::IRQIsdsClientInterfaceIDs aIDType)
+{
+    bool cache = false;
+    TRAP_IGNORE(cache = iISDSClient->IRIsdsIsCategoryCachedL((CIRIsdsClient::TIRIsdsclientInterfaceIDs)aIDType));    
+    return cache;
+}
+
+bool IRQIsdsClientImpl::isdsIsChannelCachedImpl(int aIndex)
+{
+    bool cache = false;
+    TRAP_IGNORE(cache = iISDSClient->IRIsdsIsChannelCachedL(aIndex)); 
+    return cache;
+}
+
+//Send the channels request by the channel index in the specify category
+//
+void IRQIsdsClientImpl::isdsChannelRequestImpl(int aIndex, bool& aCache)
+{
+    iChannelBannerTag = false;
+    TRAPD( err, aCache = !(iISDSClient->IRIsdsClientIntefaceL(aIndex, CIRIsdsClient::ECatagory)));
+    if (err != KErrNone)
+    {
+        emit q_ptr->operationException(EIRQErrorGeneral);
+    }
+}
+
+//issue a listen request to the isds client
+//@param int,bool, the current index of channel, the history tag  
+//
+void IRQIsdsClientImpl::isdsListenRequestImpl(int aCurrentIndex,
+        bool aHistoryBool)
+{
+    if (aHistoryBool)
+    {
+        TRAPD( err, iISDSClient->IRIsdsClientIntefaceL(aCurrentIndex, CIRIsdsClient::EChannels, ETrue));
+        if (err != KErrNone)
+        {
+            emit q_ptr->operationException(EIRQErrorGeneral);
+        }
+    }
+    else
+    {
+         
+        TRAPD( err, iISDSClient->IRIsdsClientIntefaceL(aCurrentIndex, CIRIsdsClient::EChannels));
+        if (err != KErrNone)
+        {
+            emit q_ptr->operationException(EIRQErrorGeneral);
+        }
+    }
+}
+
+//to syncronize presets
+//@param int,QString, the preset id and the last modified tag for the preset   
+//
+int IRQIsdsClientImpl::isdsSyncPresetImpl(int aPresetId,
+        const QString& aIfModifySince, IRQFavoritesDB *aFavPresets)
+{
+    iFavPresets = aFavPresets;
+    TPtrC16 modifySinceDes(
+            reinterpret_cast<const TUint16*> (aIfModifySince.utf16()));
+    TInt result = 0;
+    TRAP_IGNORE(result = iISDSClient->SyncPresetL(aPresetId,modifySinceDes));     
+    return result;
+}
+
+//Cacel the request sent by the UI.
+//@param None
+//
+void IRQIsdsClientImpl::isdsCancelRequestImpl()
+{
+    TRAPD( err, iISDSClient->IRISDSCancelRequest());
+    if (err != KErrNone)
+    {
+        emit q_ptr->operationException(EIRQErrorGeneral);
+    }
+}
+
+//to see wether category view has a banner.
+//@param None
+//
+bool IRQIsdsClientImpl::isdsIsCategoryBannerImpl()
+{
+    return iCatBannerTag;
+}
+
+//
+//to see wether channel view has a banner.
+//@param None
+bool IRQIsdsClientImpl::isdsIsChannelBannerImpl()
+{
+    return iChannelBannerTag;
+}
+
+ 
+//the api is called from the UI(nowplaying view) to download logo.
+//@param None
+//
+void IRQIsdsClientImpl::isdsLogoDownSendRequestImpl(IRQPreset* aPreset,
+        int aNPVReq, int aXValue, int aYValue)
+{
+    if (NULL == aPreset)
+        return;
+
+    CIRIsdsPreset *cirPreset = NULL;
+    TRAP_IGNORE(cirPreset = CIRIsdsPreset::NewL());
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(*aPreset, *cirPreset);
+    
+    aXValue = aXValue % 1000;
+    aYValue = aYValue % 1000;
+    
+    TRAPD( err, iLogoDownloadEngine->SendRequestL(cirPreset,this, aNPVReq, aXValue, aYValue));//0 0 
+    delete cirPreset;
+    if (err != KErrNone)
+    {
+        emit q_ptr->operationException(EIRQErrorGeneral);
+    }
+}
+
+bool IRQIsdsClientImpl::isdsIsLogoCachedImpl(IRQPreset* aPreset, int aXValue, int aYValue)
+{
+    if( NULL == aPreset )
+        return false;
+    
+    bool cached = false;
+    CIRIsdsPreset *cirPreset = NULL;
+    TRAP_IGNORE(cirPreset = CIRIsdsPreset::NewL());
+    IRQUtility::convertIRQPreset2CIRIsdsPreset(*aPreset, *cirPreset);
+    aXValue = aXValue % 1000;
+    aYValue = aYValue % 1000;
+    
+    TRAP_IGNORE(cached = iLogoDownloadEngine->IsLogoCachedL(cirPreset,aXValue, aYValue));
+	  delete cirPreset;
+	  cirPreset = NULL;
+	
+    return cached;
+}
+
+//
+//the api is called to cancel the current transaction
+//@param None
+//
+void IRQIsdsClientImpl::isdsLogoDownCancelTransactionImpl()
+{
+    iLogoDownloadEngine->CancelTransaction();
+}
+
+//
+//To know the status of downloading logo
+bool IRQIsdsClientImpl::isdsLogoDownIsRunningImpl() const
+{
+    return iLogoDownloadEngine->IsRunning();
+}
+
+//takes the url as a parameter and returns the logo data which is in cache
+//this API is called form the search results for to display logo on the view
+//@param QString: the url of the img, int: the status for getting
+//
+void IRQIsdsClientImpl::isdsLogoDownCheckCacheLogoImpl(
+        const QString& aURL, int& aStatus)
+{
+    TInt status = 0;
+    TPtrC16 url(reinterpret_cast<const TUint16*> (aURL.utf16()));
+    TRAP_IGNORE(iLogoDownloadEngine->GetCacheLogoL(url, status));       
+    aStatus = status;
+    
+}
+
+//get the cache logo from the logodown engine. The "send" is the point from a logodown engine
+//@param None
+//
+TDesC8& IRQIsdsClientImpl::isdsLogoDownSendCacheLogoImpl()
+{
+    return iLogoDownloadEngine->SendCacheLogo();
+}
+
+void IRQIsdsClientImpl::isdsPostLogImpl(const QString &aFileName)
+{
+    TPtrC16 fileName(
+                reinterpret_cast<const TUint16*> (aFileName.utf16()));
+    TBuf<256> fileBuf = fileName;
+    TRAP_IGNORE(iISDSClient->IRISDSPostL(fileBuf));     
+}
+
+void IRQIsdsClientImpl::isdsGetIRIDImpl()
+{
+    TRAP_IGNORE(iISDSClient->IRGetIRIDL());
+}
+
+void IRQIsdsClientImpl::isdsGetBrowseBannerImpl(QString& aBannerUrl, QString& aClickThroughUrl)
+{
+    aBannerUrl = iCatBannerUrl;
+    aClickThroughUrl = iCatClickThroughUrl;
+}
+
+void IRQIsdsClientImpl::isdsMultSearchImpl(QString aGenreID, QString aCountryID, QString aLanguageID, QString aSearchText)
+{
+    TPtrC16 genreID(reinterpret_cast<const TUint16*> (aGenreID.utf16()));
+    TPtrC16 countryID(reinterpret_cast<const TUint16*> (aCountryID.utf16()));
+    TPtrC16 languageID(reinterpret_cast<const TUint16*> (aLanguageID.utf16()));
+    TPtrC16 searchText(reinterpret_cast<const TUint16*> (aSearchText.utf16()));
+    TRAP_IGNORE(iISDSClient->IRISDSMultiSearchL(genreID, countryID, languageID, searchText));
+}
+//when we get the category data from low layer, the function is called and
+//we will generate the data pushed to UI, the IRQIsdsClientImpl will not free the 
+//memory.
+//
+void IRQIsdsClientImpl::IsdsCatogoryDataReceivedL(CArrayPtrFlat<
+        CIRBrowseCatagoryItems> & aParsedStructure)
+{
+    iCatBannerTag = false;
+    iCatBannerUrl.clear();
+    iCatClickThroughUrl.clear();
+
+    /* the data is pushed to the UI and irqisds is not care when it's deleted */
+    QList<IRQBrowseCategoryItem *> * pushBrowseCategoryItemList = new QList<
+            IRQBrowseCategoryItem *> ;
+    for (TInt i = 0; i < aParsedStructure.Count(); i++)
+    {
+        if (NULL != aParsedStructure[i]->iCatBannerUrl)
+        {
+            iCatBannerTag = true;
+            if (0 != aParsedStructure[i]->iCatBannerUrl->Length())
+            {
+                iCatBannerUrl = QString::fromUtf16(
+                        aParsedStructure[i]->iCatBannerUrl->Des().Ptr(),
+                        aParsedStructure[i]->iCatBannerUrl->Des().Length());
+            }
+
+            if (NULL != aParsedStructure[i]->iCatClickThroughUrl)
+            {
+                if (0 != aParsedStructure[i]->iCatClickThroughUrl->Length())
+                {
+                    iCatClickThroughUrl
+                            = QString::fromUtf16(
+                                    aParsedStructure[i]->iCatClickThroughUrl->Des().Ptr(),
+                                    aParsedStructure[i]->iCatClickThroughUrl->Des().Length());
+                }
+            }
+        }// end if ( NULL != ) 
+
+        if (NULL != aParsedStructure[i]->iCatName)
+        {
+            IRQBrowseCategoryItem * oneItem = new IRQBrowseCategoryItem();
+            oneItem->catName = QString::fromUtf16(
+                    aParsedStructure[i]->iCatName->Des().Ptr(),
+                    aParsedStructure[i]->iCatName->Des().Length());
+            oneItem->size = aParsedStructure[i]->iSize;
+            pushBrowseCategoryItemList->append(oneItem);
+        }
+    }// end for
+
+    /* now we get the data and we need to signal the ui to stop the 
+     dialog and emit and call the setdata of model*/
+    emit
+    q_ptr->categoryItemsChanged(pushBrowseCategoryItemList);
+
+}
+
+//when we get the channels data from low layer, the function is called and
+//we will generate the data pushed to UI
+//
+void IRQIsdsClientImpl::IsdsChannelDataReceivedL(CArrayPtrFlat<
+        CIRBrowseChannelItems> & aParsedStructure)
+{
+    iChannelBannerTag = false;
+    iChannelBannerUrl.clear();
+    iChannelClickThroughUrl.clear();
+
+    QList<IRQChannelItem *> *pushBrowseChannelItemList = new QList<
+            IRQChannelItem *> ;
+
+    for (int i = 0; i < aParsedStructure.Count(); i++)
+    {
+        if (NULL != aParsedStructure[i]->iBannerUrl)
+        {
+            iChannelBannerTag = true;
+
+            if (0 != aParsedStructure[i]->iBannerUrl->Length())
+            {
+                iChannelBannerUrl = QString::fromUtf16(
+                        aParsedStructure[i]->iBannerUrl->Des().Ptr(),
+                        aParsedStructure[i]->iBannerUrl->Des().Length());
+            }
+
+            if (NULL != aParsedStructure[i]->iClickThroughUrl)
+            {
+                if (0 != aParsedStructure[i]->iClickThroughUrl->Length())
+                {
+                    iChannelClickThroughUrl
+                            = QString::fromUtf16(
+                                    aParsedStructure[i]->iClickThroughUrl->Des().Ptr(),
+                                    aParsedStructure[i]->iClickThroughUrl->Des().Length());
+                }
+            }
+        } //end if aParsedStructure[i]->
+
+        if (NULL != aParsedStructure[i]->iChannelName)
+        {
+            IRQChannelItem * oneChannelItem = new IRQChannelItem();
+            oneChannelItem->channelName = QString::fromUtf16(
+                    aParsedStructure[i]->iChannelName->Des().Ptr(),
+                    aParsedStructure[i]->iChannelName->Des().Length());
+            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())
+            {
+
+                oneChannelItem->imageURL = QString::fromUtf16(
+                        aParsedStructure[i]->iImgUrl.Ptr(),
+                        aParsedStructure[i]->iImgUrl.Length());;
+            }
+            else
+                oneChannelItem->imageURL = "";
+
+            pushBrowseChannelItemList->append(oneChannelItem);
+        }
+    }
+
+    /* after we get data, we push it to the UI to show*/
+    emit
+    q_ptr->channelItemsChanged(pushBrowseChannelItemList);
+    
+}
+
+//when we get the presets data from low layer, the function is called and
+//we will generate the data pushed to UI. 
+//
+void IRQIsdsClientImpl::IsdsPresetDataReceivedL(
+        CArrayPtrFlat<CIRIsdsPreset> & aParsedStructure)
+{
+    CIRIsdsPreset* preset = aParsedStructure[0];
+    IRQPreset* qPreset = new IRQPreset();
+    /* we need convert the CIR to QT */
+    IRQUtility::convertCIRIsdsPreset2IRQPrest(*preset, *qPreset);
+    qPreset->type = IRQPreset::EIsds;
+    emit
+    q_ptr->presetResponse(qPreset);
+    
+}
+
+//when we find that the preset to be syc is deleted from isds server, the function 
+//will be called to notify the UI. DISCUSSED FURTHER
+//
+void IRQIsdsClientImpl::IsdsPresetRemovedL(TInt aId)
+{
+    if(iFavPresets)
+    {
+        iFavPresets->makePresetUserDefined(aId, 0);
+    }
+    emit
+    q_ptr->syncPresetResult(EIRQIsdsSycPresetRemoved, NULL);
+}
+
+//when we find that the preset to be syc is changed from isds server, the function 
+//will be called to notify the UI.
+//
+void IRQIsdsClientImpl::IsdsPresetChangedL(CIRIsdsPreset& aPreset)
+{
+    IRQPreset* qPreset = new IRQPreset();
+    IRQUtility::convertCIRIsdsPreset2IRQPrest(aPreset, *qPreset);
+    qPreset->type = IRQPreset::EIsds;
+    if(iFavPresets)
+    {        
+        iFavPresets->replacePreset(*qPreset);
+    }
+    emit q_ptr->syncPresetResult(EIRQIsdsSycPresetChanged, qPreset);
+}
+
+//when we find that the preset to be syc is changed from isds server, the function 
+//will be called to notify the UI.
+//
+void IRQIsdsClientImpl::IsdsPresetNoChangeL()
+{
+    emit q_ptr->syncPresetResult(EIRQIsdsSycPresetNoChange, NULL);
+
+}
+
+//called back when a preset's logo has downloaded
+//@param CIRIsdsPreset*, preset with downloaded logo
+//
+void IRQIsdsClientImpl::PresetLogoDownloadedL(CIRIsdsPreset* aPreset)
+{
+    if (NULL == aPreset)
+        return;
+
+    IRQPreset * irqPreset = new IRQPreset();
+    IRQUtility::convertCIRIsdsPreset2IRQPrest(*aPreset, *irqPreset);
+
+    emit q_ptr->presetLogoDownloaded(irqPreset);
+}
+
+//called back when a preset's logo has not downloaded
+//@param CIRIsdsPreset*, preset with no logo data
+//
+void IRQIsdsClientImpl::PresetLogoDownloadError(CIRIsdsPreset* aPreset)
+{
+    if (NULL == aPreset)
+        return;
+
+    emit q_ptr->presetLogoDownloadError();
+}
+
+//receive the irid from isds server, not implementated
+//
+void IRQIsdsClientImpl::IsdsIRIDRecieved(const TDesC& aIRID)
+{
+    //nothing now
+    QString irid = QString::fromUtf16(aIRID.Ptr(),aIRID.Length());
+    emit q_ptr->iridReceived(irid);     
+}
+
+ 
+
+
+//
+//receive the ota info from isds server, not implementated
+//
+void IRQIsdsClientImpl::IsdsOtaInfoRecieved(CIROTAUpdate &aOtaData)
+{
+    //nothing now
+    Q_UNUSED(aOtaData);    
+}
+
+bool IRQIsdsClientImpl::isdsIsConstructSucceed() const
+{
+    return iISDSClient != NULL;
+}
--- a/qtinternetradio/irqlogger/irqlogger.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqlogger/irqlogger.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -28,7 +28,7 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 
 INCLUDEPATH += inc \
-               ../../internetradio2.0/include
+               ../../internetradio2.0/inc
 
 LIBS += -lflogger
         
@@ -36,6 +36,7 @@
   TARGET.UID3 = 0xEc6eac02
   TARGET.EPOCALLOWDLLDATA = 1
   TARGET.CAPABILITY += CAP_GENERAL_DLL
+  MMP_RULES += SMPSAFE
 }
        
 #header files list
--- a/qtinternetradio/irqmediaplayer/inc/irqmediaplayer.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/inc/irqmediaplayer.h	Wed Aug 18 09:40:26 2010 +0300
@@ -19,16 +19,16 @@
 
 #include <QObject>
 #include "irqenums.h"
+#include "irqmediaplayerexporter.h"
 
 class IRQPlayerAdapterInterface;
 class IRQMetaData;
-class CStereoWidening;
 
 /**
  * This class provides the interface to IR Media Player component
  */
 
-class IRQMediaPlayer : public QObject
+class IRQMEDIAPLAYER_DLL_EXPORT IRQMediaPlayer : public QObject
 {
     Q_OBJECT
 
@@ -37,7 +37,7 @@
     /**
      *  Constructor
      */
-    IMPORT_C IRQMediaPlayer();
+    IRQMediaPlayer();
 
     /**
      *  Destructor
@@ -48,34 +48,34 @@
      *  Returns the current volume of playback, it's a percentage
      *  @return int
      */
-    IMPORT_C int  getVolume();
+    int  getVolume();
 
 public slots:
 
     /**
      *  Plays a radio station
      */
-    IMPORT_C void playStation(const QString &aUrl, int aApId);
+    void playStation(const QString &aUrl, int aApId);
 
     /**
      *  Stops playback
      */
-    IMPORT_C void stop();
+    void stop();
 
     /**
      *  Sets the volume to player, it's a percentage
      */
-    IMPORT_C void setVolume(int aVolume);
+    void setVolume(int aVolume);
 
     /**
      *  Turns on the stereo effect
      */
-    IMPORT_C void enableStereoEffect();
+    void enableStereoEffect();
 
     /**
      *  Turns off the stereo effect
      */
-    IMPORT_C void disableStereoEffect();
+    void disableStereoEffect();
 
 signals:
 
@@ -105,22 +105,11 @@
     void volumeExpected(int& aVolume);
 
 private:
-    /**
-     *  Turns on the stereo effect
-     */
-    void enableStereoEffectL();
-
-private:
 
     /**
      *  Player adpater interface
      */
     IRQPlayerAdapterInterface* iPlayer;
-
-    /**
-     *  Used for handling Stereo Mode
-     */
-    CStereoWidening* iStereoEffect;
 };
 
 #endif /* IRQMEDIAPLAYER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqmediaplayer/inc/irqmediaplayerexporter.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 IRQMEDIAPLAYEREXPORTER_H_
+#define IRQMEDIAPLAYEREXPORTER_H_
+
+#include <QtGlobal>
+
+#ifdef BUILD_IRQMEDIAPLAYER_DLL
+    #define IRQMEDIAPLAYER_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQMEDIAPLAYER_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif /* IRQMEDIAPLAYEREXPORTER_H_ */
--- a/qtinternetradio/irqmediaplayer/inc/irqmmfadapter.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/inc/irqmmfadapter.h	Wed Aug 18 09:40:26 2010 +0300
@@ -22,6 +22,7 @@
 #include "irqplayeradapterinterface.h"
 
 class IRQMetaData;
+class CStereoWidening;
 
 /**
  * This class wraps the MMF interface CVideoPlayerUtility
@@ -42,6 +43,8 @@
     void  setVolume(int aVolume);                      // Set volume to player
     int   getVolume();                                 // Get current volume from player
     void* getPlayerInstance();                         // Get audio player instance for stereo effect
+    void  enableStereoEffect();                        //Turns on the stereo effect
+    void  disableStereoEffect();                       //Turns off the stereo effect
 
     // Callback functions, MVideoPlayerUtilityObserver methods
     void MvpuoOpenComplete(TInt aError);                  // Opening url completed
@@ -62,7 +65,8 @@
     void setMetadataEventConfig();                  // Enable meta data event
     static TInt isPrepareCompleted(TAny* aPointer); // Periodic called function
     void checkPrepare();                            // Check if preparation completed
-
+    void enableStereoEffectL();
+    
 private:
     CVideoPlayerUtility2*  iVideoPlayer;
     IRQMetaData*          iQMetaData;       // Saving meta data
@@ -73,6 +77,11 @@
      */
     CPeriodic*            iPrepareTimer;
     QString               iLastArtistSongName;
+    
+    /**
+     *  Used for handling Stereo Mode
+     */
+    CStereoWidening* iStereoEffect;
 };
 
 #endif /* IRQMMFADAPTER_H_ */
--- a/qtinternetradio/irqmediaplayer/inc/irqphononadapter.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/inc/irqphononadapter.h	Wed Aug 18 09:40:26 2010 +0300
@@ -37,6 +37,8 @@
     void  setVolume(int aVolume);
     int   getVolume();
     void* getPlayerInstance();
+    void  enableStereoEffect();
+    void  disableStereoEffect();
 };
 
 #endif /* IRQPHONONADAPTER_H_ */
--- a/qtinternetradio/irqmediaplayer/inc/irqplayeradapterinterface.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/inc/irqplayeradapterinterface.h	Wed Aug 18 09:40:26 2010 +0300
@@ -56,6 +56,16 @@
      */
     virtual void* getPlayerInstance() = 0;
 
+    /**
+     *  Turns on the stereo effect
+     */
+    virtual void enableStereoEffect() = 0;
+    
+    /**
+     *  Turns off the stereo effect
+     */
+    virtual void disableStereoEffect() = 0;
+    
 signals:
 
     /**
--- a/qtinternetradio/irqmediaplayer/irqmediaplayer.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/irqmediaplayer.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -17,7 +17,7 @@
 TARGET.CAPABILITY = CAP_GENERAL_DLL
 
 defFilePath = ..
-DEFINES += MMFADAPTER
+DEFINES += MMFADAPTER BUILD_IRQMEDIAPLAYER_DLL
 
 DEPENDPATH += src
 LIBS += -lmediaclientvideo \
@@ -29,8 +29,8 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
 
 INCLUDEPATH += inc  \
-               ..\irqcommon\inc \
-               ..\irqlogger\inc            
+               ../irqcommon/inc \
+               ../irqlogger/inc            
                 
                         
                   
@@ -40,13 +40,14 @@
   TARGET.UID3 = 0xea3ed061
   TARGET.EPOCALLOWDLLDATA = 1
   TARGET.VID = VID_DEFAULT
+  MMP_RULES += SMPSAFE
 }
 
 # Input
-HEADERS += inc\irqplayeradapterinterface.h \
-           inc\irqmediaplayer.h  \
-           inc\irqmmfadapter.h  \
-           inc\irqphononadapter.h
+HEADERS += inc/irqplayeradapterinterface.h \
+           inc/irqmediaplayer.h  \
+           inc/irqmmfadapter.h  \
+           inc/irqphononadapter.h
 
 SOURCES += irqmediaplayer.cpp \
            irqmmfadapter.cpp \
--- a/qtinternetradio/irqmediaplayer/src/irqmediaplayer.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/src/irqmediaplayer.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -14,7 +14,7 @@
 * Description:
 *
 */
-#include <StereoWideningBase.h>
+
 #include "irqmediaplayer.h"
 #if defined(MMFADAPTER)
 #include "irqmmfadapter.h"
@@ -24,8 +24,6 @@
 
 #include "irqlogger.h"
 
-//Constants
-const int KDefaultStereoLevel = 100;            // Default stereo level
 
 // ---------------------------------------------------------------------------
 // IRQMediaPlayer::IRQMediaPlayer
@@ -33,9 +31,9 @@
 // Creates player adpater and connect the signals
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQMediaPlayer::IRQMediaPlayer() :
-    iStereoEffect(NULL)
+IRQMediaPlayer::IRQMediaPlayer()
 {
+    LOG_METHOD;
 #if defined(MMFADAPTER)
     iPlayer = new IRQMMFAdapter();
 #elif defined(PHONONAdapter)
@@ -62,11 +60,9 @@
 //
 IRQMediaPlayer::~IRQMediaPlayer()
 {
+    LOG_METHOD;
     delete iPlayer;
     iPlayer = NULL;
-
-    delete iStereoEffect;
-    iStereoEffect = NULL;
 }
 
 // ---------------------------------------------------------------------------
@@ -74,8 +70,10 @@
 // Plays a specific radio station via certain access point id
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQMediaPlayer::playStation(const QString &aUrl, int aApId)
+void IRQMediaPlayer::playStation(const QString &aUrl, int aApId)
 {
+    LOG_METHOD;
+    LOG_FORMAT("aUrl=%s, aApId=%d", STRING2CHAR(aUrl), aApId);
     if (iPlayer)
     {
         iPlayer->playStation(aUrl, aApId);
@@ -87,8 +85,9 @@
 // Stops the playback
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQMediaPlayer::stop()
+void IRQMediaPlayer::stop()
 {
+    LOG_METHOD;
     if (iPlayer)
     {
         iPlayer->stop();
@@ -100,8 +99,10 @@
 // Sets the volume
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQMediaPlayer::setVolume(int aVolume)
+void IRQMediaPlayer::setVolume(int aVolume)
 {
+    LOG_METHOD;
+    LOG_FORMAT("aVolume=%d", aVolume);
     if (iPlayer)
     {
         iPlayer->setVolume(aVolume);
@@ -113,8 +114,9 @@
 // Gets the current volume of playback
 // ---------------------------------------------------------------------------
 //
-EXPORT_C int IRQMediaPlayer::getVolume()
+int IRQMediaPlayer::getVolume()
 {
+    LOG_METHOD;
     int val = 0;
 
     if (iPlayer)
@@ -130,14 +132,10 @@
 // Turns on stereo effect
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQMediaPlayer::enableStereoEffect()
+void IRQMediaPlayer::enableStereoEffect()
 {
-    if (!iPlayer || IRQPlayerAdapterInterface::EPlaying != iPlayer->iPlayState)
-    {
-        return;
-    }
-
-    TRAP_IGNORE(enableStereoEffectL());
+    LOG_METHOD;
+    iPlayer->enableStereoEffect();
 }
 
 // ---------------------------------------------------------------------------
@@ -145,48 +143,9 @@
 // Turns off stereo effect
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQMediaPlayer::disableStereoEffect()
+void IRQMediaPlayer::disableStereoEffect()
 {
     LOG_METHOD;
-    if (iStereoEffect)
-    {
-        if (iStereoEffect->IsEnabled())
-        {
-            TRAPD(error, iStereoEffect->DisableL());
-            if (KErrNone != error)
-            {
-                emit errorOccured(EIRQPlayerErrorSetStereoFailed);
-            }
-            delete iStereoEffect;
-            iStereoEffect = NULL;
-        }
-    }
+    iPlayer->disableStereoEffect();
 }
 
-// ---------------------------------------------------------------------------
-// IRQMediaPlayer::enableStereoEffectL
-// Turns on stereo effect
-// ---------------------------------------------------------------------------
-//
-void IRQMediaPlayer::enableStereoEffectL()
-{
-
-    TUint stereoLevel = KDefaultStereoLevel;
-
-    if (!iStereoEffect)
-    {
-#if defined(MMFADAPTER)
-        CVideoPlayerUtility* playerInstance = (CVideoPlayerUtility*)iPlayer->getPlayerInstance();
-#elif defined(PHONONAdapter)
-        void* playerInstance = iPlayer->getPlayerInstance();
-#endif
-        iStereoEffect = CStereoWidening::NewL(*playerInstance, EFalse, stereoLevel);
-    }
-
-    if (!iStereoEffect->IsEnabled())
-    {
-        iStereoEffect->EnableL();
-        iStereoEffect->SetStereoWideningLevelL(stereoLevel);
-        iStereoEffect->ApplyL();
-    }
-}
--- a/qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -19,6 +19,8 @@
 #include <coedef.h>
 #include <QStringList>
 #include <hxmetadatakeys.h>
+#include <StereoWideningBase.h>
+
 #include "irqmetadata.h"
 #include "irqenums.h"
 #include "irqmmfadapter.h"
@@ -30,6 +32,7 @@
 const TInt KVolumeMinPercentage  = 0;              // Minimum volume percentage
 const TInt KVolumeMaxPercentage  = 100;            // Maximum volume percentage
 const TInt KLoadingCompletePercentage = 100;       // Loading Complete percentage
+const int KDefaultStereoLevel = 100;            // Default stereo level
 
 // ---------------------------------------------------------------------------
 //  IRQMMFAdapter::IRQMMFAdapter
@@ -40,7 +43,7 @@
 IRQMMFAdapter::IRQMMFAdapter() :
     iVideoPlayer(NULL)
     ,iQMetaData(NULL)
-    ,iPrepareTimer(NULL)
+    ,iPrepareTimer(NULL), iStereoEffect(NULL)
 {
     iPlayState = EStopped;
 }
@@ -67,6 +70,9 @@
         delete iPrepareTimer;
         iPrepareTimer = NULL;
     }
+    
+    delete iStereoEffect;
+    iStereoEffect = NULL;
 }
 
 // ---------------------------------------------------------------------------
@@ -209,6 +215,33 @@
     return (void*)iVideoPlayer;
 }
 
+void IRQMMFAdapter::enableStereoEffect()
+{
+    if (IRQPlayerAdapterInterface::EPlaying != iPlayState)
+    {
+        return;
+    }
+
+    TRAP_IGNORE(enableStereoEffectL());
+}
+
+void IRQMMFAdapter::disableStereoEffect()
+{
+    if (iStereoEffect)
+    {
+        if (iStereoEffect->IsEnabled())
+        {
+            TRAPD(error, iStereoEffect->DisableL());
+            if (KErrNone != error)
+            {
+                emit errorOccured(EIRQPlayerErrorSetStereoFailed);
+            }
+            delete iStereoEffect;
+            iStereoEffect = NULL;
+        }
+    }
+}
+
 // ---------------------------------------------------------------------------
 //  IRQMMFAdapter::MvpuoOpenComplete
 //  Callback function, MVideoPlayerUtilityObserver method
@@ -530,3 +563,22 @@
         stop();
     }
 }
+
+void IRQMMFAdapter::enableStereoEffectL()
+{
+    LOG_METHOD;
+    TUint stereoLevel = KDefaultStereoLevel;
+
+    if (!iStereoEffect)
+    {
+        CVideoPlayerUtility* playerInstance = (CVideoPlayerUtility*)getPlayerInstance();
+        iStereoEffect = CStereoWidening::NewL(*playerInstance, EFalse, stereoLevel);
+    }
+
+    if (!iStereoEffect->IsEnabled())
+    {
+        iStereoEffect->EnableL();
+        iStereoEffect->SetStereoWideningLevelL(stereoLevel);
+        iStereoEffect->ApplyL();
+    }
+}
--- a/qtinternetradio/irqmediaplayer/src/irqphononadapter.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/src/irqphononadapter.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -91,3 +91,13 @@
 {
     return NULL;
 }
+
+void IRQPHONONAdapter::enableStereoEffect()
+{
+    
+}
+
+void IRQPHONONAdapter::disableStereoEffect()
+{
+    
+}
--- a/qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontroller.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontroller.h	Wed Aug 18 09:40:26 2010 +0300
@@ -18,11 +18,13 @@
 #define IRQNETWORKCONTROLLER_H_
 
 #include <QObject>
+#include <QMutex>
 
+#include "irqnetworkcontrollerexport.h"
 #include "irqenums.h"
 #include "irqevent.h"
 
-class IRQNetworkControllerBody;
+class IRQNetworkControllerPrivate;
 
 /**
  * This class provides the interface to IR Network Controller component
@@ -32,7 +34,7 @@
  *
  */
 
-class IRQNetworkController : public QObject
+class IRQNETWORKCONTROLLER_DLL_EXPORT IRQNetworkController : public QObject
 {
     Q_OBJECT
 
@@ -42,72 +44,72 @@
      *  Get the instance of IRQNetworkController
      *  @return IRQNetworkController*
      */
-    IMPORT_C static  IRQNetworkController* openInstance();
+    static  IRQNetworkController* openInstance();
 
     /**
      *  Close the instance of IRQNetworkController
      */
-    IMPORT_C void closeInstance();
+    void closeInstance();
 
     /**
      *  Return the variable which indicates if connection is active or not
      *  @return bool
      */
-    IMPORT_C bool getNetworkStatus() const;
+    bool getNetworkStatus() const;
 
     /**
      *  Return the IAP Id of the chosen IAP
      *  @return int Error code
      */
-    IMPORT_C IRQError getIAPId(unsigned long& aIapId) const;
+    IRQError getIAPId(unsigned long& aIapId) const;
     
     /**
      *  Configure the Access Point which is used by all the components for network connectivity
      */
-    IMPORT_C void  chooseAccessPoint();
+    void  chooseAccessPoint();
 
     /*
      * Cancel configuring access point
      */
-    IMPORT_C void cancelConnecting();
+    void cancelConnecting();
     
     /**
      *  This api is used to determine if the phone is in offline mode
      *  @return True if the phone is in offline mode else False
      */
-    IMPORT_C bool isOfflineMode();
+    bool isOfflineMode();
 
     /**
      *  This api is used to determine if the phone supports WLan usage
      *  @return True if the phone supports else False
      */
-    IMPORT_C bool isWlanSupported() const;
+    bool isWlanSupported() const;
 
     /**
      *  Reset the connection status to Disconnected state
      */
-    IMPORT_C void resetConnectionStatus();
+    void resetConnectionStatus();
 
     /**
      *  Used to determine the type of connection
      *  @return enum describing the type of connection ( GPRS/3G/WiFi )
      */
-    IMPORT_C IRQConnectionType identifyConnectionType() const;
+    IRQConnectionType identifyConnectionType() const;
 
     /**
      *  Notifies all observers whose network request is active to reissue the request
      */
-    IMPORT_C void notifyActiveNetworkObservers(IRQNetworkEvent aEvent);
+    void notifyActiveNetworkObservers(IRQNetworkEvent aEvent);
 
     /**
      *  Indicates if the hand over of network connection has happened
      */
-    IMPORT_C bool isHandlingOverConnection();
+    bool isHandlingOverConnection();
 
     /**
      *  Indicates if chooseAccessPoint is called
      */
-    IMPORT_C bool isConnectRequestIssued() const;
+    bool isConnectRequestIssued() const;
     
 signals:
 
@@ -131,14 +133,8 @@
      */
     void errorOccured(IRQError aError);
 
-private:
-    /**
-     *  Creates IRQNetworkController instance
-     */
-    static IRQNetworkController* createInstanceL();
-        
-    void constructL();
-
+private:     
+    
     /**
      *  Default C++ Constructor
      */
@@ -150,16 +146,35 @@
     ~IRQNetworkController();
 
 private:
-
-    /**
-     *  IRQNetworkControllerBody instance
-     */
-    IRQNetworkControllerBody* iBody;
-
+    
     /**
      * Number of objects currently referring to the singleton object IRQNetworkController
      */
-    int iSingletonInstances;
+    int mRefCount;
+    
+    /**
+     * The instance of IRQStatisticsReporter singleton
+     */
+    static IRQNetworkController *mInstance;
+    
+    /**
+     * Mutex for the thread-safe of openInstance()
+     */
+    static QMutex mMutex;
+        
+    /**
+     *  IRQNetworkControllerPrivate instance
+     */
+    IRQNetworkControllerPrivate* const d_ptr;
+    
+    /**
+     *  The successful mark for initialization of private data
+     */
+    bool mInitPrivateSuccess;
+     
+    Q_DISABLE_COPY(IRQNetworkController)
+    
+    friend class IRQNetworkControllerPrivate;
 };
 
 #endif /* IRQNETWORKCONTROLLER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontroller_p.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,136 @@
+/*
+* 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 IRQNETWORKCONTROLLERPRIVATE_H_
+#define IRQNETWORKCONTROLLERPRIVATE_H_
+
+#include <QObject>
+#include "irnetworkcontroller.h"
+#include "irqenums.h"
+#include "irqevent.h"
+
+class IRQNetworkController;
+/**
+ * This class implements the IR Network Controller component
+ */
+
+class IRQNetworkControllerPrivate : public MIRActiveNetworkObserver
+                                  , public MIRNetworkController
+{    
+public:
+    IRQNetworkControllerPrivate(IRQNetworkController* aNetworkController);
+    
+    /**
+     *  Create resources
+     *  @return bool
+     */
+    bool init();
+    /**
+     *  Default C++ Destructor
+     */
+    ~IRQNetworkControllerPrivate();
+
+    /**
+     *  Return the variable which indicates if connection is active or not
+     *  @return bool
+     */
+    bool getNetworkStatus() const;
+
+    /**
+     *  Return the IAP Id of the chosen IAP
+     *  @return int Error code
+     */
+    IRQError getIAPId(unsigned long& aIapId) const;
+    
+    /**
+     *  Configure the Access Point which is used by all the components for network connectivity
+     */
+    void  chooseAccessPoint();
+
+    /*
+     * Cancel configuring access point
+     */
+    void cancelConnecting();
+    
+    /**
+     *  This api is used to determine if the phone is in offline mode
+     *  @return True if the phone is in offline mode else False
+     */
+    bool isOfflineMode();
+
+    /**
+     *  This api is used to determine if the phone supports WLan usage
+     *  @return True if the phone supports else False
+     */
+    bool isWlanSupported() const;
+
+    /**
+     *  Reset the connection status to Disconnected state
+     */
+    void resetConnectionStatus();
+
+    /**
+     *  Used to determine the type of connection
+     *  @return enum describing the type of connection ( GPRS/3G/WiFi )
+     */
+    IRQConnectionType identifyConnectionType() const;
+
+    /**
+     *  Notifies all observers whose network request is active to reissue the request
+     */
+    void notifyActiveNetworkObservers(IRQNetworkEvent aEvent);
+
+    /**
+     *  Indicates if the hand over of network connection has happened
+     */
+    bool isHandlingOverConnection();
+
+    /**
+     *  Indicates if chooseAccessPoint is called
+     */
+    bool isConnectRequestIssued() const;
+
+    /**
+     *  MIRActiveNetworkObserver::NotifyActiveNetworkObserversL()
+     *  Callback which notifies all observers whose network request is active to reissue the request
+     *  @param aEvent Indicates the type of network event that occurred
+     */
+    void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
+
+    /**
+     *  MIRActiveNetworkObserver::ResetPendingRequests()
+     *  Callback which notifies all observers whose network request is active to reset the pending
+     *  request status
+     */
+    void ResetPendingRequests(TBool aValue);
+
+    /**
+     *  MIRNetworkController::IRNetworkEventL()
+     *  @param aEvent Indicates the type of network event that occurred
+     */
+    void IRNetworkEventL(TIRNetworkEvent aEvent);
+
+private:
+
+    /**
+     *  NetworkController singleton instance
+     */
+    CIRNetworkController* iNetworkController;
+    
+    IRQNetworkController* const q_ptr;
+};
+
+#endif /* IRQNetworkControllerPrivate_H_ */
--- a/qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontrollerbody.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef IRQNETWORKCONTROLLERBODY_H_
-#define IRQNETWORKCONTROLLERBODY_H_
-
-#include <QObject>
-#include "irnetworkcontroller.h"
-#include "irqenums.h"
-#include "irqevent.h"
-
-/**
- * This class implements the IR Network Controller component
- */
-
-class IRQNetworkControllerBody : public QObject
-                               , public MIRActiveNetworkObserver
-                               , public MIRNetworkController
-{
-    Q_OBJECT
-
-public:
-    /**
-     *  Create resources
-     */
-    void initL();
-    /**
-     *  Default C++ Destructor
-     */
-    ~IRQNetworkControllerBody();
-
-    /**
-     *  Return the variable which indicates if connection is active or not
-     *  @return bool
-     */
-    bool getNetworkStatus() const;
-
-    /**
-     *  Return the IAP Id of the chosen IAP
-     *  @return int Error code
-     */
-    IRQError getIAPId(unsigned long& aIapId) const;
-    
-    /**
-     *  Configure the Access Point which is used by all the components for network connectivity
-     */
-    void  chooseAccessPoint();
-
-    /*
-     * Cancel configuring access point
-     */
-    void cancelConnecting();
-    
-    /**
-     *  This api is used to determine if the phone is in offline mode
-     *  @return True if the phone is in offline mode else False
-     */
-    bool isOfflineMode();
-
-    /**
-     *  This api is used to determine if the phone supports WLan usage
-     *  @return True if the phone supports else False
-     */
-    bool isWlanSupported() const;
-
-    /**
-     *  Reset the connection status to Disconnected state
-     */
-    void resetConnectionStatus();
-
-    /**
-     *  Used to determine the type of connection
-     *  @return enum describing the type of connection ( GPRS/3G/WiFi )
-     */
-    IRQConnectionType identifyConnectionType() const;
-
-    /**
-     *  Notifies all observers whose network request is active to reissue the request
-     */
-    void notifyActiveNetworkObservers(IRQNetworkEvent aEvent);
-
-    /**
-     *  Indicates if the hand over of network connection has happened
-     */
-    bool isHandlingOverConnection();
-
-    /**
-     *  Indicates if chooseAccessPoint is called
-     */
-    bool isConnectRequestIssued() const;
-
-    /**
-     *  MIRActiveNetworkObserver::NotifyActiveNetworkObserversL()
-     *  Callback which notifies all observers whose network request is active to reissue the request
-     *  @param aEvent Indicates the type of network event that occurred
-     */
-    void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
-
-    /**
-     *  MIRActiveNetworkObserver::ResetPendingRequests()
-     *  Callback which notifies all observers whose network request is active to reset the pending
-     *  request status
-     */
-    void ResetPendingRequests(TBool aValue);
-
-    /**
-     *  MIRNetworkController::IRNetworkEventL()
-     *  @param aEvent Indicates the type of network event that occurred
-     */
-    void IRNetworkEventL(TIRNetworkEvent aEvent);
-    
-signals:
-
-    /**
-     *  Notifies all observers whose network request is active to reissue the request
-     *  Called in NotifyActiveNetworkObserversL()
-     */
-    void networkRequestNotified(IRQNetworkEvent aEvent);
-
-    /**
-     *  Notifies all observers whose network request is active to reset the pending request status
-     *  Called in ResetPendingRequests()
-     */
-    void pendingRequestsReset(bool aValue);
-
-    /**
-     *  Notifies the type of network event that occurred
-     *  Called in IRNetworkEventL
-     */
-    void networkEventNotified(IRQNetworkEvent aEvent);
-
-    /**
-     *  Notifies the error
-     */
-    void errorOccured(IRQError aError);
-
-private:
-
-    /**
-     *  NetworkController singleton instance
-     */
-    CIRNetworkController* iNetworkController;
-};
-
-#endif /* IRQNETWORKCONTROLLERBODY_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnetworkcontroller/inc/irqnetworkcontrollerexport.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 IRQNETWORKCONTROLLEREXPORT_H_
+#define IRQNETWORKCONTROLLEREXPORT_H_
+
+#include <QtGlobal>
+
+#ifdef BUILD_IRQNETWORKCONTROLLER_DLL
+    #define IRQNETWORKCONTROLLER_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQNETWORKCONTROLLER_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif /* IRQNETWORKCONTROLLEREXPORT_H_ */
--- a/qtinternetradio/irqnetworkcontroller/irqnetworkcontroller.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnetworkcontroller/irqnetworkcontroller.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -19,6 +19,7 @@
 
 MOC_DIR = moc
 DEPENDPATH += src
+DEFINES += BUILD_IRQNETWORKCONTROLLER_DLL
 defFilePath = ..
 
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
@@ -26,19 +27,20 @@
 INCLUDEPATH += $${MW_LAYER_PUBLIC_EXPORT_PATH(http)}
 
 INCLUDEPATH += inc \
-               ..\irqcommon\inc \
-               ..\..\internetradio2.0\networkcontrollerinc    
+               ../irqcommon/inc \
+               ../../internetradio2.0/irnetworkcontroller/inc    
 
 LIBS += -lirnetworkcontroller -lnetmeta
 
 symbian{
   TARGET.UID3 = 0xe71db754
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 # Input
-HEADERS += inc\irqnetworkcontroller.h inc\irqnetworkcontrollerbody.h
-SOURCES += irqnetworkcontroller.cpp irqnetworkcontrollerbody.cpp
+HEADERS += inc/irqnetworkcontroller.h inc/irqnetworkcontroller_p.h
+SOURCES += irqnetworkcontroller.cpp irqnetworkcontroller_p.cpp
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
 
--- a/qtinternetradio/irqnetworkcontroller/src/irqnetworkcontroller.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnetworkcontroller/src/irqnetworkcontroller.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -17,7 +17,11 @@
 #include <QStringList>
 
 #include "irqnetworkcontroller.h"
-#include "irqnetworkcontrollerbody.h" 
+#include "irqnetworkcontroller_p.h" 
+
+
+IRQNetworkController * IRQNetworkController::mInstance = NULL;
+QMutex IRQNetworkController::mMutex;
 
 // ---------------------------------------------------------------------------
 // IRQNetworkController::openInstance()
@@ -25,28 +29,28 @@
 // @return IRQNetworkController *
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQNetworkController* IRQNetworkController::openInstance()
+IRQNetworkController* IRQNetworkController::openInstance()
 {
-    // Get singleton instance
-    IRQNetworkController* irqnetworkcontroller =
-                           reinterpret_cast<IRQNetworkController*>(Dll::Tls());
+    mMutex.lock();
+    
+    if (NULL == mInstance) 
+    {
+        mInstance = new IRQNetworkController();
 
-    if (NULL == irqnetworkcontroller)
-    {
-        TRAPD(error, irqnetworkcontroller = createInstanceL());
-        if (KErrNone != error)
+        if (!mInstance->mInitPrivateSuccess) 
         {
-            delete irqnetworkcontroller;
-            irqnetworkcontroller = NULL;
-            Dll::SetTls(NULL);
+            delete mInstance;
+            mInstance = NULL;
         }
     }
     else
     {
-        irqnetworkcontroller->iSingletonInstances++;
+        mInstance->mRefCount++;
     }
 
-    return irqnetworkcontroller;
+    mMutex.unlock();
+
+    return mInstance;
 }
 
 // ---------------------------------------------------------------------------
@@ -54,15 +58,18 @@
 // Close a singleton instance of IRQNetworkController
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNetworkController::closeInstance()
+void IRQNetworkController::closeInstance()
 {
-    iSingletonInstances--;
-
-    if (0 == iSingletonInstances)
+    mMutex.lock();
+    if ((--mRefCount) == 0)
     {
-        Dll::SetTls(NULL);
+        if(this == mInstance)
+        {
+            mInstance = NULL;
+        }
         delete this;
     }
+    mMutex.unlock();
 }
 
 // ---------------------------------------------------------------------------
@@ -71,9 +78,9 @@
 // @return bool
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQNetworkController::getNetworkStatus() const
+bool IRQNetworkController::getNetworkStatus() const
 {
-    return iBody->getNetworkStatus();
+    return d_ptr->getNetworkStatus();
 }
 
 // ---------------------------------------------------------------------------
@@ -82,9 +89,9 @@
 // @return IRQError
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQError IRQNetworkController::getIAPId(unsigned long& aIapId) const
+IRQError IRQNetworkController::getIAPId(unsigned long& aIapId) const
 {
-    return iBody->getIAPId(aIapId);
+    return d_ptr->getIAPId(aIapId);
 }
 
 // ---------------------------------------------------------------------------
@@ -93,18 +100,18 @@
 // connectivity
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNetworkController::chooseAccessPoint()
+void IRQNetworkController::chooseAccessPoint()
 {
-    iBody->chooseAccessPoint();
+    d_ptr->chooseAccessPoint();
 }
 
 /*
  * Cancel configuring access point
  */
-EXPORT_C void IRQNetworkController::cancelConnecting()
+void IRQNetworkController::cancelConnecting()
 {
-    iBody->cancelConnecting();
-    iBody->resetConnectionStatus();
+    d_ptr->cancelConnecting();
+    d_ptr->resetConnectionStatus();
 }
 
 // ---------------------------------------------------------------------------
@@ -113,9 +120,9 @@
 // @return True if the phone is in offline mode else False
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQNetworkController::isOfflineMode()
+bool IRQNetworkController::isOfflineMode()
 {
-    return iBody->isOfflineMode();
+    return d_ptr->isOfflineMode();
 }
 
 // ---------------------------------------------------------------------------
@@ -124,9 +131,9 @@
 // @return True if the phone supports else False
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQNetworkController::isWlanSupported() const
+bool IRQNetworkController::isWlanSupported() const
 {
-    return iBody->isWlanSupported();
+    return d_ptr->isWlanSupported();
 }
 
 // ---------------------------------------------------------------------------
@@ -134,9 +141,9 @@
 // Resets the connection status to Disconnected state
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNetworkController::resetConnectionStatus()
+void IRQNetworkController::resetConnectionStatus()
 {
-    iBody->resetConnectionStatus();
+    d_ptr->resetConnectionStatus();
 }
 
 // ---------------------------------------------------------------------------
@@ -145,9 +152,9 @@
 // @return enum describing the type of connection ( GPRS/3G/WiFi )
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQConnectionType IRQNetworkController::identifyConnectionType() const
+IRQConnectionType IRQNetworkController::identifyConnectionType() const
 {
-    return iBody->identifyConnectionType();
+    return d_ptr->identifyConnectionType();
 }
 
 // ---------------------------------------------------------------------------
@@ -155,9 +162,9 @@
 // Notifies all observers whose network request is active to reissue the request
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNetworkController::notifyActiveNetworkObservers(IRQNetworkEvent aEvent)
+void IRQNetworkController::notifyActiveNetworkObservers(IRQNetworkEvent aEvent)
 {
-    iBody->notifyActiveNetworkObservers(aEvent);
+    d_ptr->notifyActiveNetworkObservers(aEvent);
 }
 
 // ---------------------------------------------------------------------------
@@ -166,9 +173,9 @@
 // @return bool
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQNetworkController::isHandlingOverConnection()
+bool IRQNetworkController::isHandlingOverConnection()
 {
-    return iBody->isHandlingOverConnection();
+    return d_ptr->isHandlingOverConnection();
 }
 
 // ---------------------------------------------------------------------------
@@ -177,9 +184,9 @@
 // @return bool
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQNetworkController::isConnectRequestIssued() const
+bool IRQNetworkController::isConnectRequestIssued() const
 {
-    return iBody->isConnectRequestIssued();
+    return d_ptr->isConnectRequestIssued();
 }
 
 // ---------------------------------------------------------------------------
@@ -187,8 +194,14 @@
 // Default constructor
 // ---------------------------------------------------------------------------
 //
-IRQNetworkController::IRQNetworkController()
+IRQNetworkController::IRQNetworkController() :
+    mRefCount(1), d_ptr(new IRQNetworkControllerPrivate(this)), mInitPrivateSuccess(false)
 {
+    Q_ASSERT(d_ptr);
+    if (d_ptr) 
+    {
+        mInitPrivateSuccess = d_ptr->init();
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -199,41 +212,6 @@
 //
 IRQNetworkController::~IRQNetworkController()
 {
-    delete iBody;
-    iBody = NULL;
+    delete d_ptr;
 }
 
-// ---------------------------------------------------------------------------
-// IRQNetworkController::constructL()
-// Two-Phase Constructor.
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkController::constructL()
-{
-    iBody = new (ELeave) IRQNetworkControllerBody();
-    Q_ASSERT(iBody);
-    iBody->initL();
-    
-    connect(iBody, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
-            this, SIGNAL(networkRequestNotified(IRQNetworkEvent)));
-    connect(iBody, SIGNAL(pendingRequestsReset(bool)),
-            this, SIGNAL(pendingRequestsReset(bool)));
-    connect(iBody, SIGNAL(networkEventNotified(IRQNetworkEvent)),
-            this, SIGNAL(networkEventNotified(IRQNetworkEvent)));
-    connect(iBody, SIGNAL(errorOccured(IRQError)),
-            this, SIGNAL(errorOccured(IRQError)));
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkController::createInstanceL()
-// Creates IRQNetworkController instance
-// ---------------------------------------------------------------------------
-//
-IRQNetworkController* IRQNetworkController::createInstanceL()
-{
-    IRQNetworkController* nwkController = new (ELeave) IRQNetworkController();
-    nwkController->constructL();
-    User::LeaveIfError(Dll::SetTls(nwkController));
-    nwkController->iSingletonInstances = 1;
-    return nwkController;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnetworkcontroller/src/irqnetworkcontroller_p.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,233 @@
+/*
+* 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 <QStringList>
+#include "irqnetworkcontroller_p.h"
+#include "irqnetworkcontroller.h"
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::IRQNetworkControllerPrivate()
+// Constructor
+//
+// ---------------------------------------------------------------------------
+//
+IRQNetworkControllerPrivate::IRQNetworkControllerPrivate(IRQNetworkController* aNetworkController) :
+    iNetworkController(NULL), q_ptr(aNetworkController)
+{
+
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::~IRQNetworkControllerPrivate()
+// Destructor
+//
+// ---------------------------------------------------------------------------
+//
+IRQNetworkControllerPrivate::~IRQNetworkControllerPrivate()
+{
+    if (iNetworkController)
+    {
+        iNetworkController->Close();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::GetNetworkStatus()
+// Returns the variable which indicates if connection is active or not
+// @return bool
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::getNetworkStatus() const
+{
+    return (bool)iNetworkController->GetNetworkStatus();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::getIAPId()
+// Gets the IAP Id of the chosen IAP
+// @return IRQError
+// ---------------------------------------------------------------------------
+//
+IRQError IRQNetworkControllerPrivate::getIAPId(unsigned long& aIapId) const
+{
+    IRQError retval = EIRQErrorNone;
+
+    if (KErrNotFound == iNetworkController->GetIAPId(aIapId))
+    {
+        retval = EIRQErrorNotFound;
+    }
+
+    return retval;
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::chooseAccessPoint()
+// Configures the Access Point which is used by all the components for network
+// connectivity
+// ---------------------------------------------------------------------------
+//
+void  IRQNetworkControllerPrivate::chooseAccessPoint()
+{
+    TRAPD(error, iNetworkController->ChooseAccessPointL());
+    if (KErrNone != error)
+    {
+        emit q_ptr->errorOccured(EIRQErrorGeneral);
+    }
+}
+
+/*
+ * Cancel configuring access point
+ */
+void IRQNetworkControllerPrivate::cancelConnecting()
+{
+    iNetworkController->CancelConnecting();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::isOfflineMode()
+// Indicates if the phone is in offline mode
+// @return True if the phone is in offline mode else False
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::isOfflineMode()
+{
+    return (bool)iNetworkController->IsOfflineMode();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::isWlanSupported()
+// Indicates if the phone supports WLan usage
+// @return True if the phone supports else False
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::isWlanSupported() const
+{
+    return (bool)iNetworkController->IsWlanSupported();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::resetConnectionStatus()
+// Resets the connection status to Disconnected state
+// ---------------------------------------------------------------------------
+//
+void IRQNetworkControllerPrivate::resetConnectionStatus()
+{
+    iNetworkController->ResetConnectionStatus();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::identifyConnectionType()
+// Indicates the type of connection
+// @return enum describing the type of connection ( GPRS/3G/WiFi )
+// ---------------------------------------------------------------------------
+//
+IRQConnectionType IRQNetworkControllerPrivate::identifyConnectionType() const
+{
+    return (IRQConnectionType)iNetworkController->IdentifyConnectionType();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::notifyActiveNetworkObservers()
+// Notifies all observers whose network request is active to reissue the request
+// ---------------------------------------------------------------------------
+//
+void IRQNetworkControllerPrivate::notifyActiveNetworkObservers(IRQNetworkEvent aEvent)
+{
+    TRAPD(error, iNetworkController->NotifyActiveNetworkObserversL((TIRNetworkEvent)aEvent));
+    if (KErrNone != error)
+    {
+        emit q_ptr->errorOccured(EIRQErrorGeneral);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::isHandlingOverConnection()
+// Indicates if the hand over of network connection has happened
+// @return bool
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::isHandlingOverConnection()
+{
+    return (bool)iNetworkController->IsHandingOverConnection();
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::isConnectRequestIssued()
+// Indicates if chooseAccessPoint is called
+// @return bool
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::isConnectRequestIssued() const
+{
+    return (bool)iNetworkController->iIsConnectRequestIssued;
+}
+
+// ---------------------------------------------------------------------------
+// MIRActiveNetworkObserver::NotifyActiveNetworkObserversL()
+// Callback which notifies all observers whose network request is active to reissue the request
+// @param aEvent Indicates the type of network event that occurred
+// ---------------------------------------------------------------------------
+//
+void IRQNetworkControllerPrivate::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)
+{
+    emit q_ptr->networkRequestNotified((IRQNetworkEvent)aEvent);
+}
+
+// ---------------------------------------------------------------------------
+// MIRActiveNetworkObserver::ResetPendingRequests()
+// Callback which notifies all observers whose network request is active to
+// reset the pending request status
+// ---------------------------------------------------------------------------
+//
+void IRQNetworkControllerPrivate::ResetPendingRequests(TBool aValue)
+{
+    emit q_ptr->pendingRequestsReset((bool)aValue);
+}
+
+// ---------------------------------------------------------------------------
+// MIRNetworkController::IRNetworkEventL()
+// @param aEvent Indicates the type of network event that occurred
+// ---------------------------------------------------------------------------
+//
+void IRQNetworkControllerPrivate::IRNetworkEventL(TIRNetworkEvent aEvent)
+{
+    emit q_ptr->networkEventNotified((IRQNetworkEvent)aEvent);
+}
+
+// ---------------------------------------------------------------------------
+// IRQNetworkControllerPrivate::init()
+// Create resources
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQNetworkControllerPrivate::init()
+{
+    bool br = false;
+    TInt leaveCode;
+    
+    // Get singleton instance
+    TRAP(leaveCode, iNetworkController = CIRNetworkController::OpenL(this));
+    if(KErrNone == leaveCode)
+    {
+        TRAP(leaveCode,iNetworkController->RegisterActiveNetworkObserverL(*this));
+        if(KErrNone == leaveCode)
+        {
+            br = true;
+        }
+    }
+   
+    return br;
+}
--- a/qtinternetradio/irqnetworkcontroller/src/irqnetworkcontrollerbody.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include <QStringList>
-#include "irqnetworkcontrollerbody.h"
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::~IRQNetworkControllerBody()
-// Destructor
-//
-// ---------------------------------------------------------------------------
-//
-IRQNetworkControllerBody::~IRQNetworkControllerBody()
-{
-    if (iNetworkController)
-    {
-        iNetworkController->Close();
-    }
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::GetNetworkStatus()
-// Returns the variable which indicates if connection is active or not
-// @return bool
-// ---------------------------------------------------------------------------
-//
-bool IRQNetworkControllerBody::getNetworkStatus() const
-{
-    return (bool)iNetworkController->GetNetworkStatus();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::getIAPId()
-// Gets the IAP Id of the chosen IAP
-// @return IRQError
-// ---------------------------------------------------------------------------
-//
-IRQError IRQNetworkControllerBody::getIAPId(unsigned long& aIapId) const
-{
-    IRQError retval = EIRQErrorNone;
-
-    if (KErrNotFound == iNetworkController->GetIAPId(aIapId))
-    {
-        retval = EIRQErrorNotFound;
-    }
-
-    return retval;
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::chooseAccessPoint()
-// Configures the Access Point which is used by all the components for network
-// connectivity
-// ---------------------------------------------------------------------------
-//
-void  IRQNetworkControllerBody::chooseAccessPoint()
-{
-    TRAPD(error, iNetworkController->ChooseAccessPointL());
-    if (KErrNone != error)
-    {
-        emit errorOccured(EIRQErrorGeneral);
-    }
-}
-
-/*
- * Cancel configuring access point
- */
-void IRQNetworkControllerBody::cancelConnecting()
-{
-    iNetworkController->CancelConnecting();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::isOfflineMode()
-// Indicates if the phone is in offline mode
-// @return True if the phone is in offline mode else False
-// ---------------------------------------------------------------------------
-//
-bool IRQNetworkControllerBody::isOfflineMode()
-{
-    return (bool)iNetworkController->IsOfflineMode();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::isWlanSupported()
-// Indicates if the phone supports WLan usage
-// @return True if the phone supports else False
-// ---------------------------------------------------------------------------
-//
-bool IRQNetworkControllerBody::isWlanSupported() const
-{
-    return (bool)iNetworkController->IsWlanSupported();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::resetConnectionStatus()
-// Resets the connection status to Disconnected state
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::resetConnectionStatus()
-{
-    iNetworkController->ResetConnectionStatus();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::identifyConnectionType()
-// Indicates the type of connection
-// @return enum describing the type of connection ( GPRS/3G/WiFi )
-// ---------------------------------------------------------------------------
-//
-IRQConnectionType IRQNetworkControllerBody::identifyConnectionType() const
-{
-    return (IRQConnectionType)iNetworkController->IdentifyConnectionType();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::notifyActiveNetworkObservers()
-// Notifies all observers whose network request is active to reissue the request
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::notifyActiveNetworkObservers(IRQNetworkEvent aEvent)
-{
-    TRAPD(error, iNetworkController->NotifyActiveNetworkObserversL((TIRNetworkEvent)aEvent));
-    if (KErrNone != error)
-    {
-        emit errorOccured(EIRQErrorGeneral);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::isHandlingOverConnection()
-// Indicates if the hand over of network connection has happened
-// @return bool
-// ---------------------------------------------------------------------------
-//
-bool IRQNetworkControllerBody::isHandlingOverConnection()
-{
-    return (bool)iNetworkController->IsHandingOverConnection();
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::isConnectRequestIssued()
-// Indicates if chooseAccessPoint is called
-// @return bool
-// ---------------------------------------------------------------------------
-//
-bool IRQNetworkControllerBody::isConnectRequestIssued() const
-{
-    return (bool)iNetworkController->iIsConnectRequestIssued;
-}
-
-// ---------------------------------------------------------------------------
-// MIRActiveNetworkObserver::NotifyActiveNetworkObserversL()
-// Callback which notifies all observers whose network request is active to reissue the request
-// @param aEvent Indicates the type of network event that occurred
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)
-{
-    emit networkRequestNotified((IRQNetworkEvent)aEvent);
-}
-
-// ---------------------------------------------------------------------------
-// MIRActiveNetworkObserver::ResetPendingRequests()
-// Callback which notifies all observers whose network request is active to
-// reset the pending request status
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::ResetPendingRequests(TBool aValue)
-{
-    emit pendingRequestsReset((bool)aValue);
-}
-
-// ---------------------------------------------------------------------------
-// MIRNetworkController::IRNetworkEventL()
-// @param aEvent Indicates the type of network event that occurred
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::IRNetworkEventL(TIRNetworkEvent aEvent)
-{
-    emit networkEventNotified((IRQNetworkEvent)aEvent);
-}
-
-// ---------------------------------------------------------------------------
-// IRQNetworkControllerBody::initL()
-// Create resources
-//
-// ---------------------------------------------------------------------------
-//
-void IRQNetworkControllerBody::initL()
-{
-    // Get singleton instance
-    iNetworkController = CIRNetworkController::OpenL(this);
-    iNetworkController->RegisterActiveNetworkObserverL(*this);
-}
--- a/qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserver.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserver.h	Wed Aug 18 09:40:26 2010 +0300
@@ -21,13 +21,13 @@
 
 #include <QObject>
 #include <QString>
+#include <QMutex>
 
-#include "irqnwkobserverinterface.h"  // MIRQNwkInfoUpdate
+#include "irqnwkinfoobserverexport.h"
 
-class IRQNwkInfoObserverImpl;
+class IRQNwkInfoObserverPrivate;
 
-class IRQNwkInfoObserver : public QObject, 
-                           public MIRQNwkInfoUpdate
+class IRQNWKINFOOBSERVER_DLL_EXPORT IRQNwkInfoObserver : public QObject
 {
     Q_OBJECT
     
@@ -36,23 +36,23 @@
      *  Get the instance of IRQNwkInfoObserver
      *  @return IRQNwkInfoObserver*
      */
-    IMPORT_C static  IRQNwkInfoObserver* openInstance();
+    static  IRQNwkInfoObserver* openInstance();
 
     /*!
      *  Close the instance of IRQNwkInfoObserver
      */
-    IMPORT_C void closeInstance();
+    void closeInstance();
 
 public:   
     /*!
      *  start monitoring network info change
      */
-    IMPORT_C void startMonitorNwkInfo();
+    void startMonitorNwkInfo();
 
     /*!
      *  stop monitoring network info change
      */    
-    IMPORT_C void stopMonitorNwkInfo();
+    void stopMonitorNwkInfo();
 
 signals:
 
@@ -72,26 +72,37 @@
      */    
     ~IRQNwkInfoObserver();
     
-    /**
-     *  Creates IRQNwkInfoObserver instance
-     */
-    static IRQNwkInfoObserver* createInstanceL();
-    
-    void constructL();    
-    
-public:      
-    /*!
-     * From MIRQNwkInfoUpdate.
-     */  
-    void updateCurrentNwkInfo(const QString &aCurrentNwkMCC, const QString &aCurrentNwkMNC);
-    
-    void updateHomeNwkInfo(const QString &aHomeNetworkMCC, const QString &aHomeNetworkMNC);  
     
 private:
 
-    IRQNwkInfoObserverImpl *iBody;
+    /**
+     * Number of objects currently referring to the singleton object IRQNwkInfoObserver
+     */
+    int mRefCount;
+    
+    /**
+     * The instance of IRQNwkInfoObserver singleton
+     */
+    static IRQNwkInfoObserver *mInstance;
     
-    int iSingletonInstances;    
+    /**
+     * Mutex for the thread-safe of openInstance()
+     */  
+    static QMutex mMutex;
+    
+    /**
+     *  IRQNwkInfoObserver instance
+     */
+    IRQNwkInfoObserverPrivate* d_ptr;
+    
+    /**
+     *  The successful mark for initialization of private data
+     */
+    bool mInitPrivateSuccess;
+
+    Q_DISABLE_COPY(IRQNwkInfoObserver)
+    
+    friend class IRQNwkInfoObserverPrivate; 
 };
 
 #endif // IRQNWKINFOOBSERVER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserver_p.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  class declaration for monitoring current network info change
+*
+*/
+
+
+#ifndef IRQNWKINFOOBSERVER_P_H_
+#define IRQNWKINFOOBSERVER_P_H_
+
+
+#include <e32base.h> // CActive
+#include <etel3rdparty.h> // CTelephony
+#include <QString>
+
+class IRQNwkInfoObserver;
+
+class IRQNwkInfoObserverPrivate : public CActive
+{
+public:
+ 
+    /*!
+     * Constructor
+     */
+    explicit IRQNwkInfoObserverPrivate(IRQNwkInfoObserver *aObserver);
+    
+    /**
+     * Second-phase constructor.
+     */
+    bool Construct();
+    
+    /*!
+     * Destructor.
+     */
+    ~IRQNwkInfoObserverPrivate();
+    
+    /*!
+     * starts network info monitoring
+     */
+    void startNwkInfoMonitor();    
+
+private:
+
+
+private:
+  
+    /*!
+     * Issue Subsequent network monitoring request
+     */
+    void issueRequest();
+
+    /*!
+     * From CActive.
+     */
+    void DoCancel();
+    void RunL();
+
+private:  
+
+    CTelephony* iTelephony;
+    
+    //Current Network
+    CTelephony::TNetworkInfoV1 iCurrentNetworkInfo;
+    CTelephony::TNetworkInfoV1Pckg iCurrentNetworkInfoV1Pckg;
+  
+    //Home Operator
+    CTelephony::TNetworkRegistrationV1 iHomeOperatorInfo;
+    CTelephony::TNetworkRegistrationV1Pckg iHomeOperatorInfoPckg;  
+      
+    QString iCurrentNwkMCC;
+    QString iCurrentNwkMNC;
+    
+    QString iHomeNetworkMCC;
+    QString iHomeNetworkMNC;    
+
+    bool iFirstTime;
+    bool iCurrentNetworkType;
+    bool iHomeNetworkType;
+  
+    IRQNwkInfoObserver *q_ptr;
+};
+
+#endif // IRQNWKINFOOBSERVER_P_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserverexport.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  interface for updating network info
+*
+*/
+
+
+#ifndef IRQNWKOBSERVEREXPORT_H_
+#define IRQNWKOBSERVEREXPORT_H_
+
+#include <QString>
+
+#ifdef BUILD_IRQNWKINFOOBSERVER_DLL
+    #define IRQNWKINFOOBSERVER_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQNWKINFOOBSERVER_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // IRQNWKOBSERVEREXPORT_H_
--- a/qtinternetradio/irqnwkinfoobserver/inc/irqnwkinfoobserverimpl.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
-* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  class declaration for monitoring current network info change
-*
-*/
-
-
-#ifndef IRQNWKINFOOBSERVERIMPL_H_
-#define IRQNWKINFOOBSERVERIMPL_H_
-
-
-#include <e32base.h> // CActive
-#include <etel3rdparty.h> // CTelephony
-#include <QString>
-
-class MIRQNwkInfoUpdate;
-
-class IRQNwkInfoObserverImpl : public CActive
-{
-public:
-    static IRQNwkInfoObserverImpl* NewL(MIRQNwkInfoUpdate *aObserver);
-
-    /*!
-     * Destructor.
-     */
-    ~IRQNwkInfoObserverImpl();
-    
-    /*!
-     * starts network info monitoring
-     */
-    void startNwkInfoMonitor();    
-        
-private:
-    /*!
-     * Constructor
-     */
-    explicit IRQNwkInfoObserverImpl(MIRQNwkInfoUpdate *aObserver);
-    
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-private:
-  
-    /*!
-     * Issue Subsequent network monitoring request
-     */
-    void issueRequest();
-
-    /*!
-     * From CActive.
-     */
-    void DoCancel();
-    void RunL();
-    
-private:  
-
-    CTelephony* iTelephony;
-    
-    //Current Network
-    CTelephony::TNetworkInfoV1 iCurrentNetworkInfo;
-    CTelephony::TNetworkInfoV1Pckg iCurrentNetworkInfoV1Pckg;
-  
-    //Home Operator
-    CTelephony::TNetworkRegistrationV1 iHomeOperatorInfo;
-    CTelephony::TNetworkRegistrationV1Pckg iHomeOperatorInfoPckg;  
-      
-    QString iCurrentNwkMCC;
-    QString iCurrentNwkMNC;
-    
-    QString iHomeNetworkMCC;
-    QString iHomeNetworkMNC;    
-
-    bool iFirstTime;
-    bool iCurrentNetworkType;
-    bool iHomeNetworkType;
-  
-    MIRQNwkInfoUpdate *iObserver;
-};
-
-#endif // IRQNWKINFOOBSERVERIMPL_H_
\ No newline at end of file
--- a/qtinternetradio/irqnwkinfoobserver/inc/irqnwkobserverinterface.h	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  interface for updating network info
-*
-*/
-
-
-#ifndef IRQNWKOBSERVERINTERFACE_H_
-#define IRQNWKOBSERVERINTERFACE_H_
-
-#include <QString>
-
-class MIRQNwkInfoUpdate
-{
-public:
-    virtual void updateCurrentNwkInfo(const QString &aCurrentNwkMCC, const QString &aCurrentNwkMNC) = 0;
-    virtual void updateHomeNwkInfo(const QString &aHomeNetworkMCC, const QString &aHomeNetworkMNC) = 0;
-};
-
-#endif // IRQNWKOBSERVERINTERFACE_H_
--- a/qtinternetradio/irqnwkinfoobserver/irqnwkinfoobserver.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnwkinfoobserver/irqnwkinfoobserver.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -19,6 +19,7 @@
 
 MOC_DIR = moc
 DEPENDPATH += src
+DEFINES += BUILD_IRQNWKINFOOBSERVER_DLL
 defFilePath = ..
 
 INCLUDEPATH += inc
@@ -26,17 +27,18 @@
 symbian{
   TARGET.UID3 = 0xe906e618
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 LIBS += -letel3rdparty
 
 # Input
-HEADERS += inc\irqnwkinfoobserver.h \
-           inc\irqnwkinfoobserverimpl.h \
-           inc\irqnwkobserverinterface.h
+HEADERS += inc/irqnwkinfoobserverexport.h \
+           inc/irqnwkinfoobserver.h \
+           inc/irqnwkinfoobserver_p.h \
 
 SOURCES += irqnwkinfoobserver.cpp \
-           irqnwkinfoobserverimpl.cpp
+           irqnwkinfoobserver_p.cpp
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
 
--- a/qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -15,35 +15,38 @@
 *
 */
 #include "irqnwkinfoobserver.h"
-#include "irqnwkinfoobserverimpl.h"
+#include "irqnwkinfoobserver_p.h"
+
+IRQNwkInfoObserver * IRQNwkInfoObserver::mInstance = NULL;
+QMutex IRQNwkInfoObserver::mMutex;
 
 // ---------------------------------------------------------------------------
 // IRQNwkInfoObserver::openInstance()
 // Static function to get a singleton instance of IRQNwkInfoObserver
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQNwkInfoObserver* IRQNwkInfoObserver::openInstance()
+IRQNwkInfoObserver* IRQNwkInfoObserver::openInstance()
 {
-    // Get singleton instance
-    IRQNwkInfoObserver* nwkInfoObserver =
-                           reinterpret_cast<IRQNwkInfoObserver*>(Dll::Tls());
+    mMutex.lock();
 
-    if(NULL == nwkInfoObserver)
+    if (NULL == mInstance) 
     {
-        TRAPD(error, nwkInfoObserver = createInstanceL());
-        if (KErrNone != error)
+        mInstance = new IRQNwkInfoObserver();
+
+        if (!mInstance->mInitPrivateSuccess) 
         {
-            delete nwkInfoObserver;
-            nwkInfoObserver = NULL;
-            Dll::SetTls(NULL);
+            delete mInstance;
+            mInstance = NULL;
         }
     }
     else
     {
-        nwkInfoObserver->iSingletonInstances++;
+        mInstance->mRefCount++;
     }
 
-    return nwkInfoObserver;
+    mMutex.unlock();
+
+    return mInstance;
 }
 
 // ---------------------------------------------------------------------------
@@ -51,15 +54,15 @@
 // Close a singleton instance of IRQNwkInfoObserver
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNwkInfoObserver::closeInstance()
+void IRQNwkInfoObserver::closeInstance()
 {
-    iSingletonInstances--;
-
-    if (0 == iSingletonInstances)
+    mMutex.lock();
+    if ((--mRefCount) == 0)
     {
-        Dll::SetTls(NULL);
+        mInstance = NULL;
         delete this;
     }
+    mMutex.unlock();
 }
 
 
@@ -67,10 +70,13 @@
 // Constructor
 // ---------------------------------------------------------------------------
 //
-IRQNwkInfoObserver::IRQNwkInfoObserver():iBody(NULL),
-                                         iSingletonInstances(0)
+IRQNwkInfoObserver::IRQNwkInfoObserver():
+        mRefCount(1), d_ptr(new IRQNwkInfoObserverPrivate(this)), mInitPrivateSuccess(false)
 {
-    
+    if (NULL != d_ptr) 
+    {
+        mInitPrivateSuccess = d_ptr->Construct();
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -81,34 +87,7 @@
 {
     stopMonitorNwkInfo();
     
-    delete iBody;
-    iBody = NULL;
-}
-
-// ---------------------------------------------------------------------------
-// IRQNwkInfoObserver::createInstanceL()
-// Creates IRQNwkInfoObserver instance
-// @return IRQNwkInfoObserver*
-// ---------------------------------------------------------------------------
-//
-IRQNwkInfoObserver* IRQNwkInfoObserver::createInstanceL()
-{
-    IRQNwkInfoObserver* nwkInfoObserver = new (ELeave) IRQNwkInfoObserver();
-    nwkInfoObserver->constructL();
-    User::LeaveIfError(Dll::SetTls(nwkInfoObserver));
-    nwkInfoObserver->iSingletonInstances = 1;
-
-    return nwkInfoObserver;
-}
-
-// ---------------------------------------------------------------------------
-// IRQNwkInfoObserver::constructL()
-// Two-Phase Constructor.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserver::constructL()
-{
-    iBody = IRQNwkInfoObserverImpl::NewL(this);
+    delete d_ptr;
 }
 
 // ---------------------------------------------------------------------------
@@ -116,11 +95,11 @@
 // start monitoring network info change
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNwkInfoObserver::startMonitorNwkInfo()
+void IRQNwkInfoObserver::startMonitorNwkInfo()
 {
-    if(iBody)
+    if(d_ptr)
     {
-        iBody->startNwkInfoMonitor();
+        d_ptr->startNwkInfoMonitor();
     }
 }
 
@@ -129,29 +108,10 @@
 // stop monitoring network info change
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQNwkInfoObserver::stopMonitorNwkInfo()
+void IRQNwkInfoObserver::stopMonitorNwkInfo()
 {
-    if(iBody)
+    if(d_ptr)
     {
-        iBody->Cancel();
+        d_ptr->Cancel();
     }
 }
-
-// ---------------------------------------------------------------------------
-// From MIRQNwkInfoUpdate.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserver::updateCurrentNwkInfo(const QString &aCurrentNwkMCC, const QString &aCurrentNwkMNC)
-{
-    emit currentNwkChanged(aCurrentNwkMCC,aCurrentNwkMNC);
-}
-
-
-// ---------------------------------------------------------------------------
-// From MIRQNwkInfoUpdate.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserver::updateHomeNwkInfo(const QString &aHomeNetworkMCC, const QString &aHomeNetworkMNC)
-{
-    emit homeNwkChanged(aHomeNetworkMCC,aHomeNetworkMNC);
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver_p.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,224 @@
+/*
+* 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 "irqnwkinfoobserver_p.h"
+#include "irqnwkinfoobserver.h"
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+IRQNwkInfoObserverPrivate::IRQNwkInfoObserverPrivate(IRQNwkInfoObserver *aObserver) : CActive(EPriorityLow),
+                                                 iTelephony(NULL),
+                                                 iCurrentNetworkInfoV1Pckg(iCurrentNetworkInfo),
+                                                 iHomeOperatorInfoPckg(iHomeOperatorInfo),
+                                                 iFirstTime(true),
+                                                 iCurrentNetworkType(true),
+                                                 iHomeNetworkType(false),
+                                                 q_ptr(aObserver)
+{
+}
+
+// ---------------------------------------------------------------------------
+// Second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+bool IRQNwkInfoObserverPrivate::Construct()
+{
+    bool br = false;
+    TInt leaveCode;
+    
+    // Get singleton instance
+    TRAP(leaveCode, iTelephony = CTelephony::NewL());
+    if(KErrNone == leaveCode)
+    {
+        CActiveScheduler::Add(this);
+        br = true;
+    }
+   
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+IRQNwkInfoObserverPrivate::~IRQNwkInfoObserverPrivate()
+{
+    Cancel();
+    delete iTelephony;
+    iTelephony = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// Function : IRQNwkInfoObserverPrivate::startNwkInfoMonitor()
+// Function to start network monitoring
+// ---------------------------------------------------------------------------
+//
+
+void IRQNwkInfoObserverPrivate::startNwkInfoMonitor()
+{
+    if(!IsActive() && iTelephony)
+    {
+        //get the current network info for the first time
+        iCurrentNetworkType = true;
+        iHomeNetworkType = false;
+        iTelephony->GetCurrentNetworkInfo(iStatus, iCurrentNetworkInfoV1Pckg);      
+        SetActive(); 
+    }  
+}
+
+// ---------------------------------------------------------------------------
+// Function : IRQNwkInfoObserverPrivate::issueRequest()
+// Issue Subsequent network monitoring request
+// ---------------------------------------------------------------------------
+//
+
+void IRQNwkInfoObserverPrivate::issueRequest()
+{
+    if(iCurrentNetworkType)
+    {
+        if(!IsActive() && iTelephony)
+        {
+            //notify if current operator changes
+            iTelephony->NotifyChange(iStatus,
+                    CTelephony::ECurrentNetworkInfoChange,
+                    iCurrentNetworkInfoV1Pckg);
+            SetActive();
+        }      
+    }
+    
+    if(iHomeNetworkType)
+    {
+        if(!IsActive() && iTelephony)
+        {
+            //notify if home operator changes
+            iTelephony->NotifyChange(iStatus,
+                      CTelephony::ENetworkRegistrationStatusChange,
+                      iHomeOperatorInfoPckg);
+            SetActive();
+        }  
+    }
+}
+
+
+// ---------------------------------------------------------------------------
+// From CActive.
+// ---------------------------------------------------------------------------
+//
+void IRQNwkInfoObserverPrivate::DoCancel()
+{
+    if(IsActive() && iTelephony)
+    {
+        //cancel the out standing requests if any
+        iTelephony->CancelAsync(CTelephony::ECurrentNetworkInfoChangeCancel);
+        iTelephony->CancelAsync(CTelephony::ENetworkRegistrationStatusChangeCancel);  
+        iTelephony->CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel);
+        iTelephony->CancelAsync(CTelephony::EGetNetworkRegistrationStatusCancel);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// From CActive.
+// ---------------------------------------------------------------------------
+//
+void IRQNwkInfoObserverPrivate::RunL()
+{  
+    if(KErrNone == iStatus.Int())
+    {    
+        if(iCurrentNetworkType)
+        {
+            //if the request was to find the current network changes
+            //then the value is updated
+          #ifdef __WINS__
+            iCurrentNwkMCC = "0";
+            iCurrentNwkMNC = "0";  
+          #else
+            iCurrentNwkMCC = QString::fromUtf16( iCurrentNetworkInfo.iCountryCode.Ptr(),
+                                            iCurrentNetworkInfo.iCountryCode.Length());
+            iCurrentNwkMNC = QString::fromUtf16( iCurrentNetworkInfo.iNetworkId.Ptr(),
+                                            iCurrentNetworkInfo.iNetworkId.Length());
+          #endif
+            //updating mcc+mnc value
+            if(q_ptr)
+            {
+                emit q_ptr->currentNwkChanged(iCurrentNwkMCC,iCurrentNwkMNC);
+            }
+            
+            iHomeNetworkType = ETrue;
+            iCurrentNetworkType = EFalse;
+            if(iFirstTime && iTelephony)
+            {
+                //if first time we have check the current operator is home operator
+                iTelephony->GetNetworkRegistrationStatus(iStatus,iHomeOperatorInfoPckg);      
+                SetActive();
+                iFirstTime = EFalse;
+            }
+            else
+            {
+                //else issue request is called for notifying home operator change
+                issueRequest();  
+            }      
+        }
+        else if(iHomeNetworkType)
+        {
+            //home operator (or the change in home operator is notified. 
+          #ifdef __WINS__
+            iHomeNetworkMCC = "0";
+            iHomeNetworkMNC = "0";
+            if(q_ptr)
+            {            
+                emit q_ptr->homeNwkChanged(iHomeNetworkMCC,iHomeNetworkMNC);
+            }
+          #else
+            //if registration status shows that user is registered in home network
+            //and not in roaming status, the current operator is updated
+            if(CTelephony::ERegisteredOnHomeNetwork == iHomeOperatorInfo.iRegStatus)
+            {
+                iHomeNetworkMCC = iCurrentNwkMCC;
+                iHomeNetworkMNC = iCurrentNwkMNC;
+                if(q_ptr)
+                {                    
+                    emit q_ptr->homeNwkChanged(iHomeNetworkMCC,iHomeNetworkMNC);
+                }
+            }
+          #endif
+                //issue request to find the current network change
+                iHomeNetworkType = EFalse;
+                iCurrentNetworkType = ETrue;
+                issueRequest();
+
+        }    
+        else
+        {
+            return;  
+        }
+    }
+    //if any error network is updated to zero    
+    else
+    {
+        iCurrentNwkMCC = "0";
+        iCurrentNwkMNC = "0";  
+        iHomeNetworkMCC = "0";
+        iHomeNetworkMNC = "0";
+        if(q_ptr)
+        {
+            emit q_ptr->currentNwkChanged(iCurrentNwkMCC,iCurrentNwkMNC);
+            emit q_ptr->homeNwkChanged(iHomeNetworkMCC,iHomeNetworkMNC);
+        }
+    }
+}
--- a/qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserverimpl.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "irqnwkinfoobserverimpl.h"
-#include "irqnwkobserverinterface.h"
-
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-IRQNwkInfoObserverImpl* IRQNwkInfoObserverImpl::NewL( MIRQNwkInfoUpdate *aObserver)
-{
-    IRQNwkInfoObserverImpl* self = new ( ELeave ) IRQNwkInfoObserverImpl( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-IRQNwkInfoObserverImpl::IRQNwkInfoObserverImpl(MIRQNwkInfoUpdate *aObserver) : CActive(EPriorityLow),
-                                                 iTelephony(NULL),
-                                                 iCurrentNetworkInfoV1Pckg(iCurrentNetworkInfo),
-                                                 iHomeOperatorInfoPckg(iHomeOperatorInfo),
-                                                 iFirstTime(true),
-                                                 iCurrentNetworkType(true),
-                                                 iHomeNetworkType(false),
-                                                 iObserver(aObserver)
-{
-}
-
-// ---------------------------------------------------------------------------
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserverImpl::ConstructL()
-{
-    iTelephony = CTelephony::NewL();
-    CActiveScheduler::Add(this);
-}
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-IRQNwkInfoObserverImpl::~IRQNwkInfoObserverImpl()
-{
-    Cancel();
-    delete iTelephony;
-    iTelephony = NULL;
-}
-
-// ---------------------------------------------------------------------------
-// Function : IRQNwkInfoObserverImpl::startNwkInfoMonitor()
-// Function to start network monitoring
-// ---------------------------------------------------------------------------
-//
-
-void IRQNwkInfoObserverImpl::startNwkInfoMonitor()
-{
-    if(!IsActive() && iTelephony)
-    {
-        //get the current network info for the first time
-        iCurrentNetworkType = true;
-        iHomeNetworkType = false;
-        iTelephony->GetCurrentNetworkInfo(iStatus, iCurrentNetworkInfoV1Pckg);      
-        SetActive(); 
-    }  
-}
-
-// ---------------------------------------------------------------------------
-// Function : IRQNwkInfoObserverImpl::issueRequest()
-// Issue Subsequent network monitoring request
-// ---------------------------------------------------------------------------
-//
-
-void IRQNwkInfoObserverImpl::issueRequest()
-{
-    if(iCurrentNetworkType)
-    {
-        if(!IsActive() && iTelephony)
-        {
-            //notify if current operator changes
-            iTelephony->NotifyChange(iStatus,
-                    CTelephony::ECurrentNetworkInfoChange,
-                    iCurrentNetworkInfoV1Pckg);
-            SetActive();
-        }      
-    }
-    
-    if(iHomeNetworkType)
-    {
-        if(!IsActive() && iTelephony)
-        {
-            //notify if home operator changes
-            iTelephony->NotifyChange(iStatus,
-                      CTelephony::ENetworkRegistrationStatusChange,
-                      iHomeOperatorInfoPckg);
-            SetActive();
-        }  
-    }
-}
-
-
-// ---------------------------------------------------------------------------
-// From CActive.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserverImpl::DoCancel()
-{
-    if(IsActive() && iTelephony)
-    {
-        //cancel the out standing requests if any
-        iTelephony->CancelAsync(CTelephony::ECurrentNetworkInfoChangeCancel);
-        iTelephony->CancelAsync(CTelephony::ENetworkRegistrationStatusChangeCancel);  
-        iTelephony->CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel);
-        iTelephony->CancelAsync(CTelephony::EGetNetworkRegistrationStatusCancel);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// From CActive.
-// ---------------------------------------------------------------------------
-//
-void IRQNwkInfoObserverImpl::RunL()
-{  
-    if(KErrNone == iStatus.Int())
-    {    
-        if(iCurrentNetworkType)
-        {
-            //if the request was to find the current network changes
-            //then the value is updated
-          #ifdef __WINS__
-            iCurrentNwkMCC = "0";
-            iCurrentNwkMNC = "0";  
-          #else
-            iCurrentNwkMCC = QString::fromUtf16( iCurrentNetworkInfo.iCountryCode.Ptr(),
-                                            iCurrentNetworkInfo.iCountryCode.Length());
-            iCurrentNwkMNC = QString::fromUtf16( iCurrentNetworkInfo.iNetworkId.Ptr(),
-                                            iCurrentNetworkInfo.iNetworkId.Length());
-          #endif
-            //updating mcc+mnc value
-            if(iObserver)
-            {
-                iObserver->updateCurrentNwkInfo(iCurrentNwkMCC,iCurrentNwkMNC);
-            }
-            
-            iHomeNetworkType = ETrue;
-            iCurrentNetworkType = EFalse;
-            if(iFirstTime && iTelephony)
-            {
-                //if first time we have check the current operator is home operator
-                iTelephony->GetNetworkRegistrationStatus(iStatus,iHomeOperatorInfoPckg);      
-                SetActive();
-                iFirstTime = EFalse;
-            }
-            else
-            {
-                //else issue request is called for notifying home operator change
-                issueRequest();  
-            }      
-        }
-        else if(iHomeNetworkType)
-        {
-            //home operator (or the change in home operator is notified. 
-          #ifdef __WINS__
-            iHomeNetworkMCC = "0";
-            iHomeNetworkMNC = "0";
-            if(iObserver)
-            {            
-                iObserver->updateHomeNwkInfo(iHomeNetworkMCC,iHomeNetworkMNC);
-            }
-          #else
-            //if registration status shows that user is registered in home network
-            //and not in roaming status, the current operator is updated
-            if(CTelephony::ERegisteredOnHomeNetwork == iHomeOperatorInfo.iRegStatus)
-            {
-                iHomeNetworkMCC = iCurrentNwkMCC;
-                iHomeNetworkMNC = iCurrentNwkMNC;
-                if(iObserver)
-                {                    
-                    iObserver->updateHomeNwkInfo(iHomeNetworkMCC,iHomeNetworkMNC);
-                }
-            }
-          #endif
-                //issue request to find the current network change
-                iHomeNetworkType = EFalse;
-                iCurrentNetworkType = ETrue;
-                issueRequest();
-
-        }    
-        else
-        {
-            return;  
-        }
-    }
-    //if any error network is updated to zero    
-    else
-    {
-        iCurrentNwkMCC = "0";
-        iCurrentNwkMNC = "0";  
-        iHomeNetworkMCC = "0";
-        iHomeNetworkMNC = "0";
-        if(iObserver)
-        {
-            iObserver->updateCurrentNwkInfo(iCurrentNwkMCC,iCurrentNwkMNC);
-            iObserver->updateHomeNwkInfo(iHomeNetworkMCC,iHomeNetworkMNC);
-        }
-    }
-}
--- a/qtinternetradio/irqsettings/inc/irqsettings.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsettings/inc/irqsettings.h	Wed Aug 18 09:40:26 2010 +0300
@@ -1,29 +1,29 @@
 /*
-* 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:
-*
-*/
+ * 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 IRQSETTINGS_H_
 #define IRQSETTINGS_H_
 
-#include <QString>
-#include <etelmm.h>
-
+#include "irqsettingsexport.h"
 #include "irqenums.h"
 #include "irviewdefinitions.h"
+#include <QString>
+#include <QMutex>
 
-class CIRSettings;
+class IRQSettingsPrivate;
 
 /**
  * This class provides the interface to IR settings component
@@ -33,7 +33,7 @@
  *
  */
 
-class IRQSettings
+class IRQSETTINGS_DLL_EXPORT IRQSettings
 {
 public:
 
@@ -41,82 +41,90 @@
      *  Get the instance of IRQSettings
      *  @return IRQSettings*
      */
-    IMPORT_C static IRQSettings* openInstance();
-    IMPORT_C void closeInstance();
+    static IRQSettings* openInstance();
+    void closeInstance();
 
-    IMPORT_C bool isFlagTermsAndConditions(bool& aFlag);
-    IMPORT_C void setFlagTermsAndConditions();
-    IMPORT_C void reSetFlagTermsAndConditions();
+    bool isFlagTermsAndConditions(bool& aFlag);
+    void setFlagTermsAndConditions();
+    void reSetFlagTermsAndConditions();
 
-    IMPORT_C bool getIRID(QString& aIRID);
-    IMPORT_C int getVolumeSetting();
-    IMPORT_C void setVolumeSetting(int aPlayVolume);
-    IMPORT_C void setTimeOut(int aTimeOut);
-    IMPORT_C int getTimeOut();
-    IMPORT_C void setMaxPresetCount(int aMaxCount);
-    IMPORT_C int maxPresetCount();
-    IMPORT_C QString privatePath();
-    IMPORT_C int getSongHistoryShow();
-    IMPORT_C void setSongHistoryShow(int aShowFlag);
+    bool getIRID(QString& aIRID);
+    int getVolumeSetting();
+    void setVolumeSetting(int aPlayVolume);
+    void setTimeOut(int aTimeOut);
+    int getTimeOut();
+    QString privatePath();
+    int getSongHistoryShow();
+    void setSongHistoryShow(int aShowFlag);
 
     /**
      * setStartingViewId()
      * Sets the starting view Id in cenrep
      */
-    IMPORT_C void setStartingViewId(unsigned long aStartingViewId);
+    void setStartingViewId(int aStartingViewId);
 
     /**
      * getStartingViewId()
      * Gets the starting view Id from cenrep
      */
-    IMPORT_C bool getStartingViewId(TIRViewId& aStartingViewId);
-             
-    IMPORT_C void setPreferredQuality(IRQPreferredQuality aQualityValue);
+    bool getStartingViewId(TIRViewId& aStartingViewId);
+
+    void setPreferredQuality(IRQPreferredQuality aQualityValue);
 
     /**
      * getPreferredQuality()
      * Gets the Preferred Quality from cenrep
-     */    
-    IMPORT_C IRQPreferredQuality getPreferredQuality() const;      
+     */
+    IRQPreferredQuality getPreferredQuality() const;
 
     /**
      * getGlobalAdvFlag()
      * Gets the global adv flag from cenrep. True: enable NAE adv
      */
-    IMPORT_C bool getGlobalAdvFlag(bool& aFlag);
+    bool getGlobalAdvFlag(bool& aFlag);
 
-    IMPORT_C bool getManuallyInputtedStationUrl(QString& aUrl);
-    IMPORT_C void setManuallyInputtedStationUrl(const QString& aUrl);
-    IMPORT_C bool getManuallyInputtedStationName(QString& aName);
-    IMPORT_C void setManuallyInputtedStationName(const QString& aName);
+    bool getManuallyInputtedStationUrl(QString& aUrl);
+    void setManuallyInputtedStationUrl(const QString& aUrl);
+    bool getManuallyInputtedStationName(QString& aName);
+    void setManuallyInputtedStationName(const QString& aName);
+    bool getSearchText(QString& aSearchText);
+    void setSearchText(const QString& aSearchText);
+    
+    int getMinDiskSpaceRequired();    
+    bool getIdentifySongEnabled();
+    int getSongRecognitionAppUid();
+    QString getIsdsUrl();
+    
 private:
 
     /**
      *  Default constructor must be private
-	 */
+     */
     IRQSettings();
 
     ~IRQSettings();
 
-    /**
-     *  Creates IRQSettings instance
-     */
-    static IRQSettings* createInstance();
-	static void doCreateInstanceL(IRQSettings * aQsettings);
-    
-    void constructL();
-
 private:
 
     /**
-     *  IRQSettings singleton instance
+     *  IRQSettingsPrivate instance
      */
-    CIRSettings* iSettings;
+    IRQSettingsPrivate* const d_ptr;
 
     /**
      * Number of objects currently referring to the singleton object IRQSettings
      */
-    int iSingletonInstances;
+    int mRefCount;
+
+    /**
+     * The instance of IRQSettings singleton
+     */
+    static IRQSettings *mInstance;
+
+    /**
+     * Mutex for the thread-safe of openInstance()
+     */
+    static QMutex mMutex;
 };
 
 #endif /* IRQSETTINGS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqsettings/inc/irqsettings_p.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,96 @@
+/*
+ * 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 IRQSETTINGS_P_H_
+#define IRQSETTINGS_P_H_
+
+#include <QString>
+#include "irqenums.h"
+#include "irviewdefinitions.h"
+
+class XQSettingsManager;
+
+class IRQSettingsPrivate
+{
+public:
+    IRQSettingsPrivate();
+    virtual ~IRQSettingsPrivate();
+
+    /**
+     *  Initialize, get the CIRSettings instance
+     *  @return bool
+     */
+    bool init();
+
+    QString privatePath();
+
+    bool isFlagTermsAndConditions(bool& aFlag);
+    void setFlagTermsAndConditions();
+    void reSetFlagTermsAndConditions();
+
+    bool getIRID(QString& aIRID);
+    int getVolumeSetting();
+    void setVolumeSetting(int aPlayVolume);
+    void setTimeOut(int aTimeOut);
+    int getTimeOut();
+    int getSongHistoryShow();
+    void setSongHistoryShow(int aShowFlag);
+
+    /**
+     * setStartingViewId()
+     * Sets the starting view Id in cenrep
+     */
+    void setStartingViewId(int aStartingViewId);
+
+    /**
+     * getStartingViewId()
+     * Gets the starting view Id from cenrep
+     */
+    bool getStartingViewId(TIRViewId& aStartingViewId);
+
+    void setPreferredQuality(IRQPreferredQuality aQualityValue);
+
+    /**
+     * getPreferredQuality()
+     * Gets the Preferred Quality from cenrep
+     */
+    IRQPreferredQuality getPreferredQuality() const;
+
+    /**
+     * getGlobalAdvFlag()
+     * Gets the global adv flag from cenrep. True: enable NAE adv
+     */
+    bool getGlobalAdvFlag(bool& aFlag);
+
+    bool getManuallyInputtedStationUrl(QString& aUrl);
+    void setManuallyInputtedStationUrl(const QString& aUrl);
+    bool getManuallyInputtedStationName(QString& aName);
+    void setManuallyInputtedStationName(const QString& aName);
+    bool getSearchText(QString& aSearchText);
+    void setSearchText(const QString& aSearchText);
+    
+    int getMinDiskSpaceRequired();    
+    bool getIdentifySongEnabled();
+    int getSongRecognitionAppUid();
+    QString getIsdsUrl();
+
+private:
+    XQSettingsManager* mSettingsManager;
+    QString     mPrivatePath; 
+};
+
+#endif /* IRQSETTINGS_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqsettings/inc/irqsettingsexport.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 IRQSETTINGSEXPORT_H_
+#define IRQSETTINGSEXPORT_H_
+
+#include <QtGlobal>
+
+#ifdef BUILD_IRQSETTINGS_DLL
+    #define IRQSETTINGS_DLL_EXPORT Q_DECL_EXPORT
+#else
+    #define IRQSETTINGS_DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif /* IRQSETTINGSEXPORT_H_ */
--- a/qtinternetradio/irqsettings/irqsettings.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsettings/irqsettings.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -19,22 +19,24 @@
 
 MOC_DIR = moc
 DEPENDPATH += src
+DEFINES += BUILD_IRQSETTINGS_DLL
 defFilePath = ..
 
 INCLUDEPATH += inc \
-               ..\irqcommon\inc \
-               ..\..\internetradio2.0\settingsinc
+               ../irqcommon/inc \
+               ../../internetradio2.0/inc
 
-LIBS += -lirsettings
+LIBS += -lxqsettingsmanager
 
 symbian{
   TARGET.UID3 = 0xe7437cbb
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 # Input
-HEADERS += inc\irqsettings.h
-SOURCES += irqsettings.cpp
+HEADERS += inc/irqsettings.h inc/irqsettings_p.h
+SOURCES += irqsettings.cpp irqsettings_p.cpp
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
 
--- a/qtinternetradio/irqsettings/src/irqsettings.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsettings/src/irqsettings.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -1,21 +1,25 @@
 /*
-* 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 "irsettings.h"
+ * 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 "irqsettings.h"
+#include "irqsettings_p.h"
+
+IRQSettings * IRQSettings::mInstance = NULL;
+QMutex IRQSettings::mMutex;
 
 // ---------------------------------------------------------------------------
 // IRQSettings::openInstance()
@@ -23,22 +27,22 @@
 // @return IRQSettings *
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQSettings* IRQSettings::openInstance()
+IRQSettings* IRQSettings::openInstance()
 {
-    // Get singleton instance
-    IRQSettings* irqsettings =
-                           reinterpret_cast<IRQSettings*>(Dll::Tls());
+    mMutex.lock();
 
-    if (NULL == irqsettings)
+    if (NULL == mInstance)
     {
-        irqsettings = createInstance();
+        mInstance = new IRQSettings();
     }
     else
     {
-        irqsettings->iSingletonInstances++;
+        mInstance->mRefCount++;
     }
 
-    return irqsettings;
+    mMutex.unlock();
+
+    return mInstance;
 }
 
 // ---------------------------------------------------------------------------
@@ -46,15 +50,18 @@
 // Close a singleton instance of IRQSettings
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::closeInstance()
+void IRQSettings::closeInstance()
 {
-    iSingletonInstances--;
-
-    if (0 == iSingletonInstances)
+    mMutex.lock();
+    if ((--mRefCount) == 0)
     {
-        Dll::SetTls(NULL);
+        if (this == mInstance)
+        {
+            mInstance = NULL;
+        }
         delete this;
     }
+    mMutex.unlock();
 }
 
 // ---------------------------------------------------------------------------
@@ -62,15 +69,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::isFlagTermsAndConditions(bool& aFlag)
+bool IRQSettings::isFlagTermsAndConditions(bool& aFlag)
 {
-    TRAPD(error, aFlag = (bool)iSettings->IsFlagTermsAndConditionsL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-    return true;
+    return d_ptr->isFlagTermsAndConditions(aFlag);
 }
 
 // ---------------------------------------------------------------------------
@@ -78,9 +79,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setFlagTermsAndConditions()
+void IRQSettings::setFlagTermsAndConditions()
 {
-    TRAP_IGNORE(iSettings->SetFlagTermsAndConditionsL());
+    d_ptr->setFlagTermsAndConditions();
 }
 
 // ---------------------------------------------------------------------------
@@ -88,9 +89,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::reSetFlagTermsAndConditions()
+void IRQSettings::reSetFlagTermsAndConditions()
 {
-    TRAP_IGNORE(iSettings->ReSetFlagTermsAndConditionsL());
+    d_ptr->reSetFlagTermsAndConditions();
 }
 
 // ---------------------------------------------------------------------------
@@ -98,17 +99,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::getIRID(QString& aIRID)
+bool IRQSettings::getIRID(QString& aIRID)
 {
-    TDeviceInfo irid;
-    TRAPD(error, irid = iSettings->GetIRIDL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-    aIRID = QString::fromUtf16(irid.Ptr(), irid.Length());
-    return true;
+    return d_ptr->getIRID(aIRID);
 }
 
 // ---------------------------------------------------------------------------
@@ -116,9 +109,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C int IRQSettings::getVolumeSetting()
+int IRQSettings::getVolumeSetting()
 {
-    return (int)iSettings->GetVolumeSetting();
+    return d_ptr->getVolumeSetting();
 }
 
 // ---------------------------------------------------------------------------
@@ -126,9 +119,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setVolumeSetting(int aPlayVolume)
+void IRQSettings::setVolumeSetting(int aPlayVolume)
 {
-    TRAP_IGNORE(iSettings->SetVolumeSettingL((TInt)aPlayVolume));
+    d_ptr->setVolumeSetting(aPlayVolume);
 }
 
 // ---------------------------------------------------------------------------
@@ -136,9 +129,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setTimeOut(int aTimeOut)
+void IRQSettings::setTimeOut(int aTimeOut)
 {
-    TRAP_IGNORE(iSettings->SetTimeOutL((TInt)aTimeOut));
+    d_ptr->setTimeOut(aTimeOut);
 }
 
 // ---------------------------------------------------------------------------
@@ -146,29 +139,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C int IRQSettings::getTimeOut()
-{
-    return (int)iSettings->GetTimeOut();
-}
-
-// ---------------------------------------------------------------------------
-// IRQSettings::setMaxPresetCount()
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void IRQSettings::setMaxPresetCount(int aMaxCount)
+int IRQSettings::getTimeOut()
 {
-    TRAP_IGNORE(iSettings->SetMaxPresetCountL((TInt)aMaxCount));
-}
-
-// ---------------------------------------------------------------------------
-// IRQSettings::maxPresetCount()
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C int IRQSettings::maxPresetCount()
-{
-    return (int)iSettings->MaxPresetCount();
+    return d_ptr->getTimeOut();
 }
 
 // ---------------------------------------------------------------------------
@@ -176,21 +149,19 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C QString IRQSettings::privatePath()
+QString IRQSettings::privatePath()
 {
-    TPath privatePath = iSettings->PrivatePath();
-
-    return QString::fromUtf16(privatePath.Ptr(), privatePath.Length());
+    return d_ptr->privatePath();
 }
 
-EXPORT_C void IRQSettings::setSongHistoryShow(int aShowFlag)
+void IRQSettings::setSongHistoryShow(int aShowFlag)
 {
-    TRAP_IGNORE(iSettings->SetSongHisotryShowL(aShowFlag));
+    d_ptr->setSongHistoryShow(aShowFlag);
 }
 
-EXPORT_C int IRQSettings::getSongHistoryShow()
-{                     
-    return iSettings->GetSongHistoryShow();
+int IRQSettings::getSongHistoryShow()
+{
+    return d_ptr->getSongHistoryShow();
 }
 
 // ---------------------------------------------------------------------------
@@ -198,9 +169,9 @@
 // Sets the starting view Id in cenrep
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setStartingViewId(unsigned long aStartingViewId)
+void IRQSettings::setStartingViewId(int aStartingViewId)
 {
-    TRAP_IGNORE(iSettings->SetStartingViewIdL((TUint32)aStartingViewId));
+    d_ptr->setStartingViewId(aStartingViewId);
 }
 
 // ---------------------------------------------------------------------------
@@ -208,17 +179,9 @@
 // Gets the starting view Id from cenrep
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::getStartingViewId(TIRViewId& aStartingViewId)
+bool IRQSettings::getStartingViewId(TIRViewId& aStartingViewId)
 {
-    TUint32 startingViewId = 0;
-    TRAPD(error, startingViewId = iSettings->GetStartingViewIdL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-	aStartingViewId = (TIRViewId)startingViewId;
-    return true;
+    return d_ptr->getStartingViewId(aStartingViewId);
 }
 
 // ---------------------------------------------------------------------------
@@ -226,19 +189,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setPreferredQuality(IRQPreferredQuality aQualityValue)
+void IRQSettings::setPreferredQuality(IRQPreferredQuality aQualityValue)
 {
-    TInt value = 0;
-    switch(aQualityValue)
-    {
-        case EIRQHighQuality:
-            value = 1;
-            break;
-		default:
-            break;
-    }
-        
-    TRAP_IGNORE(iSettings->SetPreferredQualityL(value));
+    d_ptr->setPreferredQuality(aQualityValue);
 }
 
 // ---------------------------------------------------------------------------
@@ -246,16 +199,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C IRQPreferredQuality IRQSettings::getPreferredQuality() const
+IRQPreferredQuality IRQSettings::getPreferredQuality() const
 {
-    TInt value = iSettings->GetPreferredQuality();
-    switch(value)
-    {
-        case 1:
-            return EIRQHighQuality;
-        default:
-            return EIRQStandardQuality;
-    }
+    return d_ptr->getPreferredQuality();
 }
 
 // ---------------------------------------------------------------------------
@@ -263,15 +209,9 @@
 // Gets the global advertisement flag from cenrep
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::getGlobalAdvFlag(bool& aFlag)
+bool IRQSettings::getGlobalAdvFlag(bool& aFlag)
 {
-    TRAPD(error, aFlag = iSettings->GetGlobalAdvFlagL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-    return true;
+    return d_ptr->getGlobalAdvFlag(aFlag);
 }
 
 // ---------------------------------------------------------------------------
@@ -279,17 +219,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::getManuallyInputtedStationUrl(QString& aUrl)
+bool IRQSettings::getManuallyInputtedStationUrl(QString& aUrl)
 {
-    TPath stationUrl;
-    TRAPD(error, stationUrl = iSettings->GetManuallyInputtedStationUrlL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-    aUrl = QString::fromUtf16(stationUrl.Ptr(), stationUrl.Length());
-    return true;
+    return d_ptr->getManuallyInputtedStationUrl(aUrl);
 }
 
 // ---------------------------------------------------------------------------
@@ -297,10 +229,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setManuallyInputtedStationUrl(const QString& aUrl)
+void IRQSettings::setManuallyInputtedStationUrl(const QString& aUrl)
 {
-    TPtrC stationUrl(reinterpret_cast<const TUint16*>(aUrl.utf16()));
-    TRAP_IGNORE(iSettings->SetManuallyInputtedStationUrlL(stationUrl));
+    d_ptr->setManuallyInputtedStationUrl(aUrl);
 }
 
 // ---------------------------------------------------------------------------
@@ -308,17 +239,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C bool IRQSettings::getManuallyInputtedStationName(QString& aName)
+bool IRQSettings::getManuallyInputtedStationName(QString& aName)
 {
-    TPath stationName;
-    TRAPD(error, stationName = iSettings->GetManuallyInputtedStationNameL());
-    if (KErrNone != error)
-    {
-        return false;
-    }
-
-    aName = QString::fromUtf16(stationName.Ptr(), stationName.Length());
-    return true;
+    return d_ptr->getManuallyInputtedStationName(aName);
 }
 
 // ---------------------------------------------------------------------------
@@ -326,18 +249,58 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void IRQSettings::setManuallyInputtedStationName(const QString& aName)
+void IRQSettings::setManuallyInputtedStationName(const QString& aName)
 {
-    TPtrC stationName(reinterpret_cast<const TUint16*>(aName.utf16()));
-    TRAP_IGNORE(iSettings->SetManuallyInputtedStationNameL(stationName));
+    d_ptr->setManuallyInputtedStationName(aName);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettings::getSearchText(QString& aSearchText)
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettings::getSearchText(QString& aSearchText)
+{
+    return d_ptr->getSearchText(aSearchText);
 }
 
 // ---------------------------------------------------------------------------
+// IRQSettings::setSearchText(const QString& aSearchText)
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettings::setSearchText(const QString& aSearchText)
+{
+    d_ptr->setSearchText(aSearchText);
+}
+
+int IRQSettings::getMinDiskSpaceRequired()
+{
+    return d_ptr->getMinDiskSpaceRequired();
+}
+
+bool IRQSettings::getIdentifySongEnabled()
+{
+    return d_ptr->getIdentifySongEnabled();    
+}
+    
+int IRQSettings::getSongRecognitionAppUid()
+{
+    return d_ptr->getSongRecognitionAppUid();
+}
+
+QString IRQSettings::getIsdsUrl()
+{
+    return d_ptr->getIsdsUrl();
+}    
+    
+// ---------------------------------------------------------------------------
 // IRQSettings::IRQSettings()
 // Constructor
 // ---------------------------------------------------------------------------
 //
-IRQSettings::IRQSettings()
+IRQSettings::IRQSettings() :
+    d_ptr(new IRQSettingsPrivate()), mRefCount(1)
 {
 }
 
@@ -348,55 +311,6 @@
 //
 IRQSettings::~IRQSettings()
 {
-    if (iSettings)
-    {
-        iSettings->Close();
-    }
+    delete d_ptr;
 }
 
-// ---------------------------------------------------------------------------
-// IRQSettings::createInstanceL()
-// Creates IRQSettings instance
-// @return IRQSettings*
-// ---------------------------------------------------------------------------
-//
-IRQSettings* IRQSettings::createInstance()
-{
-    IRQSettings* irqsettings = new IRQSettings();
-    
-    TRAPD(leaveCode, doCreateInstanceL(irqsettings));
-    if (KErrNone != leaveCode)
-    {
-        delete irqsettings;
-        irqsettings = NULL;
-        return NULL;
-    }
-    else
-    {
-        irqsettings->iSingletonInstances = 1;
-        return irqsettings;
-    }
-}
-
-// ---------------------------------------------------------------------------
-// IRQSettings::doCreateInstanceL()
-// Creates IRQSettings instance
-// @return IRQSettings*
-// ---------------------------------------------------------------------------
-//
-void IRQSettings::doCreateInstanceL(IRQSettings * aQsettings)
-{
-    aQsettings->constructL();
-    Dll::SetTls(aQsettings);
-
-}
-// ---------------------------------------------------------------------------
-// IRQSettings::constructL()
-// Two-Phase Constructor.
-// ---------------------------------------------------------------------------
-//
-void IRQSettings::constructL()
-{
-    // Get singleton instance
-    iSettings = CIRSettings::OpenL();
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqsettings/src/irqsettings_p.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,530 @@
+/*
+ * 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 "irqsettings_p.h"
+#include "irinternalcrkeys.h"
+#include <XQSettingsKey>
+#include <XQSettingsManager>
+#include <QDesktopServices>
+#include <QTextCodec>
+
+const int KDefaultVolume            = 6;
+const int KDefaultHttpTimeOut       = 60000000; // unit: us, 6s
+const int KIRDefaultMinDiskSpace    = 3145728;  // byte, 3MB
+const QString KIRDefaultIsdsUrl     = "http://idirectory.xgns.net/isds";
+#ifdef USE_TEST_ISDS_SERVER
+const QString KIRTestIsdsUrl        = "http://88.114.146.238/isds";
+#endif
+
+IRQSettingsPrivate::IRQSettingsPrivate() :
+    mSettingsManager(new XQSettingsManager())
+{
+    mPrivatePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/";
+}
+
+IRQSettingsPrivate::~IRQSettingsPrivate()
+{
+    if (mSettingsManager)
+    {
+        delete mSettingsManager;
+    }
+}
+
+QString IRQSettingsPrivate::privatePath()
+{
+    return mPrivatePath;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::isFlagTermsAndConditions()
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::isFlagTermsAndConditions(bool& aFlag)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        int nFlag = value.toInt();
+        aFlag = ( nFlag == 1 );         
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setFlagTermsAndConditions()
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setFlagTermsAndConditions()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, 1);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::reSetFlagTermsAndConditions()
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::reSetFlagTermsAndConditions()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRTermsAndConditionsFlag);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, 0);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getIRID()
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getIRID(QString& aIRID)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRIrId);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aIRID = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getVolumeSetting()
+//
+// ---------------------------------------------------------------------------
+//
+int IRQSettingsPrivate::getVolumeSetting()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRPlayerVolume);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int ir = KDefaultVolume;
+
+    if (!value.isNull())
+    {
+        ir = value.toInt();
+    }
+
+    return ir;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setVolumeSetting()
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setVolumeSetting(int aPlayVolume)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRPlayerVolume);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, aPlayVolume);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setTimeOut()
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setTimeOut(int aTimeOut)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRHttpTimeout);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, aTimeOut);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getTimeOut()
+//
+// ---------------------------------------------------------------------------
+//
+int IRQSettingsPrivate::getTimeOut()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRHttpTimeout);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int ir = KDefaultHttpTimeOut;
+
+    if (!value.isNull())
+    {
+        ir = value.toInt();
+    }
+
+    return ir;
+}
+
+void IRQSettingsPrivate::setSongHistoryShow(int aShowFlag)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRSongHistoryFTU);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, aShowFlag);
+}
+
+int IRQSettingsPrivate::getSongHistoryShow()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRSongHistoryFTU);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int ir = 0;
+
+    if (!value.isNull())
+    {
+        ir = value.toInt();
+    }
+
+    return ir;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setStartingViewId()
+// Sets the starting view Id in cenrep
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setStartingViewId(int aStartingViewId)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRStartingViewId);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, aStartingViewId);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getStartingViewId()
+// Gets the starting view Id from cenrep
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getStartingViewId(TIRViewId& aStartingViewId)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRStartingViewId);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aStartingViewId = (TIRViewId) value.toInt();
+    }
+    else
+    {
+        aStartingViewId = EIRView_CategoryView;
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setPreferredQuality()
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setPreferredQuality(IRQPreferredQuality aQualityValue)
+{
+    TInt value = 0;
+    switch (aQualityValue)
+    {
+    case EIRQHighQuality:
+        value = 1;
+        break;
+    default:
+        break;
+    }
+
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRPreferredQuality);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, value);
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getPreferredQuality()
+//
+// ---------------------------------------------------------------------------
+//
+IRQPreferredQuality IRQSettingsPrivate::getPreferredQuality() const
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRPreferredQuality);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int ir = 0;
+
+    if (!value.isNull())
+    {
+        ir = value.toInt();
+    }
+
+    switch (ir)
+    {
+    case 1:
+        return EIRQHighQuality;
+    default:
+        return EIRQStandardQuality;
+    }
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getGlobalAdvFlag()
+// Gets the global advertisement flag from cenrep
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getGlobalAdvFlag(bool& aFlag)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRGlobalAdvEnabled);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aFlag = value.toBool();
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getManuallyInputtedStationUrl(QString& aUrl)
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getManuallyInputtedStationUrl(QString& aUrl)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRManuallyInputStationUrl);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aUrl = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setManuallyInputtedStationUrl(const QString& aUrl)
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setManuallyInputtedStationUrl(const QString& aUrl)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRManuallyInputStationUrl);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, QString::fromUtf16(aUrl.utf16()));
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getManuallyInputtedStationName(QString& aName)
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getManuallyInputtedStationName(QString& aName)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRManuallyInputStationName);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aName = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setManuallyInputtedStationName(const QString& aName)
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setManuallyInputtedStationName(const QString& aName)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRManuallyInputStationName);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, QString::fromUtf16(aName.utf16()));
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::getSearchText(QString& aSearchText)
+//
+// ---------------------------------------------------------------------------
+//
+bool IRQSettingsPrivate::getSearchText(QString& aSearchText)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRSearchText);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool br = !value.isNull();
+
+    if (br)
+    {
+        aSearchText = value.toString();
+    }
+
+    return br;
+}
+
+// ---------------------------------------------------------------------------
+// IRQSettingsPrivate::setSearchText(const QString& aSearchText)
+//
+// ---------------------------------------------------------------------------
+//
+void IRQSettingsPrivate::setSearchText(const QString& aSearchText)
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRSearchText);
+
+    Q_ASSERT(mSettingsManager);
+    mSettingsManager->writeItemValue(profileKey, aSearchText.toUtf8());    
+}
+
+int IRQSettingsPrivate::getMinDiskSpaceRequired()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRMinDiskSpaceRequired);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int retVal = KIRDefaultMinDiskSpace;
+        
+    if (!value.isNull())
+    {
+        retVal = value.toInt();
+    }
+
+    return retVal;
+}
+
+bool IRQSettingsPrivate::getIdentifySongEnabled()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRIdentifySongEnabled);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    bool retVal = false;
+        
+    if (!value.isNull())
+    {
+        retVal = value.toBool();
+    }
+
+    return retVal;
+}
+   
+int IRQSettingsPrivate::getSongRecognitionAppUid()
+{
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRSongRecognitionAppUid);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    int retVal = 0;
+        
+    if (!value.isNull())
+    {
+        retVal = value.toInt();
+    }
+
+    return retVal;
+}
+
+QString IRQSettingsPrivate::getIsdsUrl()
+{
+#ifdef USE_TEST_ISDS_SERVER
+    return KIRTestIsdsUrl;
+#else    
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidInternetRadio.iUid, KIRIsdsUrl);
+
+    Q_ASSERT(mSettingsManager);
+    QVariant value = mSettingsManager->readItemValue(profileKey);
+
+    QString retVal = KIRDefaultIsdsUrl;
+        
+    if (!value.isNull())
+    {
+        retVal = QTextCodec::codecForName("UTF-16")->toUnicode(value.toByteArray());;
+    }
+
+    return retVal;    
+#endif    
+}    
--- a/qtinternetradio/irqsonghistory/irqsonghistory.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsonghistory/irqsonghistory.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -18,26 +18,27 @@
 
 defFilePath = ..
 
-DEPENDPATH += src ..\..\internetradio2.0\songhistorysrc
+DEPENDPATH += src ../../internetradio2.0/irsonghistory/src
 LIBS += -lbafl -ledbms -lefsrv -lirsettings -lflogger
 
 INCLUDEPATH += inc \
-               ..\irqmediaplayer\inc \
-               ..\irqcommon\inc \
-               ..\..\internetradio2.0\songhistoryinc \
-               ..\..\internetradio2.0\settingsinc \
-               ..\..\internetradio2.0\include
+               ../irqmediaplayer/inc \
+               ../irqcommon/inc \
+               ../../internetradio2.0/irsettings/inc \
+               ../../internetradio2.0/inc \
+               ../../internetradio2.0/irsonghistory/inc \
 
 MOC_DIR = moc
 
 symbian{
   TARGET.UID3 = 0xe009dfe1
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 }
 
 # Input
-HEADERS += inc\irqsonghistoryengine.h \
-           inc\irqsonghistoryinfo.h
+HEADERS += inc/irqsonghistoryengine.h \
+           inc/irqsonghistoryinfo.h
 
 SOURCES += irqsonghistoryengine.cpp \
            irqsonghistoryinfo.cpp \
--- a/qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -165,7 +165,7 @@
     TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
     TPtrC channelDesc(reinterpret_cast<const TUint16*>(aPreset.description.utf16()), aPreset.description.length());
     TPtrC imageUrl(reinterpret_cast<const TUint16*>(aPreset.imgUrl.utf16()), aPreset.imgUrl.length());
-    TPtrC genreName(reinterpret_cast<const TUint16*>(aPreset.genreName.utf16()), aPreset.genreName.length());
+    TPtrC genreName(reinterpret_cast<const TUint16*>(aPreset.genreName.utf16()), aPreset.genreName.length()>KMaxColumnLength ? KMaxColumnLength : aPreset.genreName.length());
     TPtrC countryName(reinterpret_cast<const TUint16*>(aPreset.countryName.utf16()), aPreset.countryName.length());
     TPtrC languageName(reinterpret_cast<const TUint16*>(aPreset.languageName.utf16()), aPreset.languageName.length());
     TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());
--- a/qtinternetradio/irqstatisticsreporter/inc/irqstatisticsreporter.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqstatisticsreporter/inc/irqstatisticsreporter.h	Wed Aug 18 09:40:26 2010 +0300
@@ -192,7 +192,7 @@
     
     static QMutex mMutex;
     static int mRef;
-    static IRQStatisticsReporter *mInstatnce;
+    static IRQStatisticsReporter *mInstance;
     
     Q_DISABLE_COPY(IRQStatisticsReporter)     
 };
--- a/qtinternetradio/irqstatisticsreporter/irqstatisticsreporter.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqstatisticsreporter/irqstatisticsreporter.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -24,6 +24,7 @@
   TARGET.EPOCALLOWDLLDATA = 1
   TARGET.CAPABILITY = CAP_GENERAL_DLL
   SYMBIAN_PLATFORMS = WINSCW ARMV5
+  MMP_RULES += SMPSAFE
 }
 
 ########## Dependency Path ##############################
@@ -31,14 +32,14 @@
 DEPENDPATH += src
 INCLUDEPATH += /epoc32/include/platform \
                inc \
-               ../irqcommon\inc \
+               ../irqcommon/inc \
                ../irqisdsclient/inc \
                ../irqnetworkcontroller/inc \
                ../irqnwkinfoobserver/inc \
                ../irqlogger/inc \
                ../irqsettings/inc
 symbian{
-INCLUDEPATH += ../../internetradio2.0/sessionloginc
+INCLUDEPATH += ../../internetradio2.0/irsessionlog/inc
 }
 
 
--- a/qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -22,7 +22,7 @@
 
 QMutex IRQStatisticsReporter::mMutex;
 int IRQStatisticsReporter::mRef = 0;
-IRQStatisticsReporter *IRQStatisticsReporter::mInstatnce = NULL;
+IRQStatisticsReporter *IRQStatisticsReporter::mInstance = NULL;
 
 // ---------------------------------------------------------------------------
 // IRQStatisticsReporter::openInstance()
@@ -32,16 +32,16 @@
 IRQStatisticsReporter* IRQStatisticsReporter::openInstance()
 {
     mMutex.lock();
-    if( NULL == mInstatnce )
+    if( NULL == mInstance )
     {
-        mInstatnce = new IRQStatisticsReporter();
+        mInstance = new IRQStatisticsReporter();
     }       
-    if( mInstatnce != NULL )
+    if( mInstance != NULL )
     {
         mRef++;
     }
     mMutex.unlock();
-    return mInstatnce;
+    return mInstance;
 }
 
 // ---------------------------------------------------------------------------
@@ -51,13 +51,14 @@
 //
 void IRQStatisticsReporter::closeInstance()
 {
-    if( mInstatnce != NULL )
+    if( mInstance != NULL )
     {
         mMutex.lock();
         mRef--;
         if( 0 == mRef )
         {
-            delete mInstatnce;
+            delete mInstance;
+            mInstance = NULL;
         }        
         mMutex.unlock();
     }
--- a/qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter_symbian_p.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqstatisticsreporter/src/irqstatisticsreporter_symbian_p.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -198,7 +198,7 @@
     if(mBody && mSessionOngoing)
     {
         updateTerminatedBy(aTerminatedBy);
-        TRAP_IGNORE(mBody->SessionEndL(EFalse));
+        TRAP_IGNORE(mBody->SessionEndL());
     }
     mSessionOngoing = false;
 }
--- a/qtinternetradio/irqsystemeventhandler/inc/irqsystemeventhandler_p.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsystemeventhandler/inc/irqsystemeventhandler_p.h	Wed Aug 18 09:40:26 2010 +0300
@@ -59,10 +59,6 @@
     void headsetIsConnected();
     void headsetIsDisconnected();
     
-#ifdef USER_DEFINED_DISKSPACE
-    void getDiskSpaceCriticalLevel(qint64 & aLevel);  
-#endif
-    
 private:
     
     IRQSystemEventHandler * const q_ptr; 
--- a/qtinternetradio/irqsystemeventhandler/irqsystemeventhandler.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsystemeventhandler/irqsystemeventhandler.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -16,12 +16,15 @@
 DEFINES += BUILD_IRQSYSTEMEVENTHANDLEREXPORTS_DLL
 
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE \
-               ..\irqlogger\inc
+               ../irqlogger/inc \
+               ../irqcommon/inc \
+               ../irqsettings/inc
 
 LIBS += -lalarmclient \
         -lefsrv \
         -lirqlogger \
         -lplatformenv \
+        -lirqsettings \
         -laccclient
                 
 # Input
@@ -47,6 +50,7 @@
 symbian{
   TARGET.UID3 = 0xEa421d0b
   TARGET.EPOCALLOWDLLDATA = 1
+  MMP_RULES += SMPSAFE
 } 
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
--- a/qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -20,20 +20,16 @@
 #include "irdiskspaceobserver.h"
 #include "iralarmobserver.h"
 #include "irpropertyobserver.h"
+#include "irqsettings.h"
 #include "irqlogger.h"
 
-#ifdef USER_DEFINED_DISKSPACE 
-#include <QFile>
-#include <QTextStream>
-#include <QStringList> 
-#endif
-
-#define DEFAULT_DISKSPACE_LOW_LEVEL   (3*1024*1024)
-
 IRQSystemEventHandlerPrivate::IRQSystemEventHandlerPrivate(IRQSystemEventHandler *aSystemEventHandler) : q_ptr(aSystemEventHandler),
-                              mAlarmOn(false),mDefaultLevel(DEFAULT_DISKSPACE_LOW_LEVEL),mAlarmObserver(NULL), mDiskSpaceObserver(NULL),
+                              mAlarmOn(false),mAlarmObserver(NULL), mDiskSpaceObserver(NULL),
                               mPropertyObserver(NULL),mErrorCode(0)
-{ 
+{
+    IRQSettings *irSettings = IRQSettings::openInstance();
+    mDefaultLevel = irSettings->getMinDiskSpaceRequired();
+    irSettings->closeInstance();
 }
 
 IRQSystemEventHandlerPrivate::~IRQSystemEventHandlerPrivate()
@@ -45,11 +41,7 @@
 }
 
 bool IRQSystemEventHandlerPrivate::init()
-{ 
-#ifdef USER_DEFINED_DISKSPACE
-    getDiskSpaceCriticalLevel(mDefaultLevel);
-#endif  
-    
+{     
     TRAPD(err, initializeL());      
     if( KErrNone == err )
     {
@@ -135,35 +127,6 @@
     return mErrorCode;
 }
 
-#ifdef USER_DEFINED_DISKSPACE
-void IRQSystemEventHandlerPrivate::getDiskSpaceCriticalLevel(qint64 & aLevel)
-{
-    QFile file("C:\\data\\QTIRConfigure.txt");
-    if(file.open(QIODevice::ReadOnly)) 
-    {
-        QTextStream stream( &file );
-        QString line;
-        QStringList parameter;
-        while (!stream.atEnd())
-        {
-            line = stream.readLine();
-            parameter = line.split("=");
-            if (parameter.count() == 2)
-            {
-                if (parameter.first() == "diskSpaceCriticalLevel")
-                {
-                    QString level = parameter.last();
-                    aLevel = level.toLongLong();
-                    break;
-                }
-            }
-        }
-    }
-    
-    file.close();
-}
-#endif
-
 void IRQSystemEventHandlerPrivate::alarmStarted()
 {
     if( !mAlarmOn )
--- a/qtinternetradio/rom/internetradio_binaries.txt	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-# internet radio
-internetradio.exe
-irdatastructures.dll
-ircommandchannel.dll
-irdataprovider.dll
-irxmlparser.dll
-isdsclientinterface.dll
-irstreamsource.dll
-irfavoritesdb.dll
-ircachemgmt.dll
-irnetworkcontroller.dll
-irsettings.dll
-irsessionlog.dll
-iractiveidleengine.dll
-irsettingsview.dll
-irmediaengine.dll
-irfilerecognizer.dll
-presetplugin.dll
-irrfsplugin.dll
-irgeneralsettings200.dll
-iractiveidle.dll
\ No newline at end of file
--- a/qtinternetradio/rom/qtinternetradio.iby	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/rom/qtinternetradio.iby	Wed Aug 18 09:40:26 2010 +0300
@@ -34,15 +34,6 @@
 file=ABI_DIR\BUILD_DIR\irqsystemeventhandler.dll     SHARED_LIB_DIR\irqsystemeventhandler.dll
 file=ABI_DIR\BUILD_DIR\irqlogger.dll               SHARED_LIB_DIR\irqlogger.dll
 
-data=ZRESOURCE\apps\internet_radio_10_1.mif    APP_RESOURCE_DIR\internet_radio_10_1.mif
 data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\internet_radio_10_1_reg.rsc     Private\10003a3f\import\apps\internet_radio_10_1_reg.rsc
-
-#the following is for splash screen
-data=ZRESOURCE\hb\splashml\internet_radio_default.splashml     RESOURCE_FILES_DIR\hb\splashml\internet_radio_default.splashml
-data=ZRESOURCE\hb\splashml\internet_radio_default.docml        RESOURCE_FILES_DIR\hb\splashml\internet_radio_default.docml
-data=ZRESOURCE\hb\splashml\internet_radio_normal.splashml      RESOURCE_FILES_DIR\hb\splashml\internet_radio_normal.splashml
-data=ZRESOURCE\hb\splashml\internet_radio_normal.docml         RESOURCE_FILES_DIR\hb\splashml\internet_radio_normal.docml
-data=ZRESOURCE\hb\splashml\internet_radio_nowplaying.splashml  RESOURCE_FILES_DIR\hb\splashml\internet_radio_nowplaying.splashml
-data=ZRESOURCE\hb\splashml\internet_radio_nowplaying.docml     RESOURCE_FILES_DIR\hb\splashml\internet_radio_nowplaying.docml
-
+ 
 #endif
--- a/qtinternetradio/rom/qtinternetradio_binaries.txt	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#qtinternetradio
-qtinternetradio.exe
-irqutility.dll
-irqisdsclient.dll
-irqmediaplayer.dll
--- a/qtinternetradio/rom/qtinternetradio_resources.iby	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/rom/qtinternetradio_resources.iby	Wed Aug 18 09:40:26 2010 +0300
@@ -20,4 +20,12 @@
 #include <data_caging_paths_for_iby.hrh> 
 data=DATAZ_\APP_RESOURCE_DIR\internet_radio_10_1.rsc APP_RESOURCE_DIR\internet_radio_10_1.rsc
 data=DATAZ_\QT_TRANSLATIONS_DIR\internet_radio_10_1.qm QT_TRANSLATIONS_DIR\internet_radio_10_1.qm 
+
+//the following are for splash screen
+data=ZRESOURCE\hb\splashml\internet_radio_normal.splashml      RESOURCE_FILES_DIR\hb\splashml\internet_radio_normal.splashml
+data=ZRESOURCE\hb\splashml\internet_radio_normal.docml         RESOURCE_FILES_DIR\hb\splashml\internet_radio_normal.docml
+data=ZRESOURCE\hb\splashml\internet_radio_nowplaying.splashml  RESOURCE_FILES_DIR\hb\splashml\internet_radio_nowplaying.splashml
+data=ZRESOURCE\hb\splashml\internet_radio_nowplaying.docml     RESOURCE_FILES_DIR\hb\splashml\internet_radio_nowplaying.docml
+data=ZRESOURCE\hb\splashml\internet_radio_termscons.splashml   RESOURCE_FILES_DIR\hb\splashml\internet_radio_termscons.splashml
+data=ZRESOURCE\hb\splashml\internet_radio_termscons.docml      RESOURCE_FILES_DIR\hb\splashml\internet_radio_termscons.docml
 #endif
--- a/qtinternetradio/ui/inc/irabstractlistviewbase.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irabstractlistviewbase.h	Wed Aug 18 09:40:26 2010 +0300
@@ -28,6 +28,7 @@
 class HbAction;
 class IRQMetaData;
 class HbAbstractViewItem;
+class IRPlayingBanner;
 
 class IrAbstractListViewBase : public IRBaseView
 {
@@ -40,8 +41,6 @@
     TIRViewParameter getViewParameter() const;
     
     ~IrAbstractListViewBase();
-
-    void setPlayingBannerTextColor(const QString &aColor);
     
 protected:    
     IrAbstractListViewBase(IRApplication *aApplication, TIRViewId aViewId);
@@ -87,6 +86,8 @@
 	void openWebAddress();
 	
 	virtual void listViewLongPressed(HbAbstractViewItem *aItem, const QPointF &aCoords);
+
+	void playingBannerTapFinished();
 	
 private:
     void initMenu();
@@ -98,7 +99,6 @@
     
 protected:
 	HbListView    *iListView;
-	HbWidget      *iPlayingBanner;
 	HbLabel       *iStationName;
 	HbMarqueeItem *iArtistSongName;
 	HbGroupBox    *iHeadingLabel;
--- a/qtinternetradio/ui/inc/irapplication.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irapplication.h	Wed Aug 18 09:40:26 2010 +0300
@@ -35,8 +35,7 @@
 class IRLastPlayedStationInfo;
 class IRQFavoritesDB;
 class IRQNetworkController;
-class IRQDiskSpaceWatcher;
-class QLocalServer;
+class IRQDiskSpaceWatcher; 
 class IRQAdvClient;
 class HbProgressDialog;
 class IRQSystemEventHandler;
@@ -45,12 +44,11 @@
 class IrMonitorService;
 class IrControlService;
 #endif 
+
 class IRFileViewService;
 class HbMessageBox;
 
-#ifdef LOCALIZATION
-class QTranslator;
-#endif
+ 
 
 class IRApplication : public QObject
 {
@@ -89,13 +87,7 @@
     void launchStartingView(TIRViewId aViewId);
     
     bool isAppFullyStarted() const;
-    
-#ifdef LOCALIZATION
-    /*
-     * this function will take ownership of the translator
-     */
-    void setTranslator(QTranslator* aTranslator);
-#endif
+    bool isEmbeddedInstance() const;
 	
     //from QObject
     bool event(QEvent* e);
@@ -112,8 +104,7 @@
     //connect to signal 'networkEventNotified' from IRQNetworkController
     void networkEventNotified(IRQNetworkEvent aEvent);
     void cancelConnect();
-    void loadGenre();
-    void newLocalSocketConnection();
+    void loadGenre();     
     void handleDiskSpaceLow(qint64 aCriticalLevel);
     void handleTermsConsAccepted();
     void handleCallActivated();
@@ -130,8 +121,6 @@
     void setExitingView(); 
     TIRHandleResult handleConnectionEstablished();
     
-    void startLocalServer();
-    bool eventFilter(QObject *object, QEvent *event);
     
 #ifdef _DEBUG
     void readConfiguration();
@@ -166,16 +155,9 @@
 
     QEvent::Type iInitEvent;
 
-    QString iConnectingText;
-    
-    QLocalServer *iLocalServer;
+    QString iConnectingText;     
     
-    HbProgressDialog *iLoadingNote;
-    
-#ifdef LOCALIZATION
-    QTranslator  *iTranslator;
-#endif
-    
+    HbProgressDialog *iLoadingNote;    
     IRQSystemEventHandler *iSystemEventHandler;    	
     TIRUseNetworkReason iUseNetworkReason;	
     
@@ -188,6 +170,7 @@
       
     IRFileViewService   *iFileViewService;
     HbMessageBox *iMessageBox;
+	bool          iIsEmbedded;
 };
 
 #endif
--- a/qtinternetradio/ui/inc/ircategoryview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/ircategoryview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -31,6 +31,9 @@
 	 
     void loadCategory(IRQIsdsClient::IRQIsdsClientInterfaceIDs aCategory);
     
+signals:
+    void applicationReady();
+        
 protected:
     IRCategoryView(IRApplication* aApplication, TIRViewId aViewId);
        
@@ -68,9 +71,6 @@
     
     void normalInit();
     
-    void initToolBar();
- 
-    
 private:
     int iLastSelectItem;
     IRCategoryModel *iModel;
--- a/qtinternetradio/ui/inc/irfavoritesview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irfavoritesview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -32,6 +32,9 @@
 public:
     ~IRFavoritesView();
     
+signals:
+    void applicationReady();
+
 protected:
     IRFavoritesView(IRApplication *aApplication, TIRViewId aViewId);
     
@@ -48,6 +51,7 @@
     void actionClicked(HbAction *aAction);
     void renameConfirmed(HbAction *aAction);
     void deleteDialogClosed(HbAction *aAction);
+    void deleteContext(HbAction *aAction);
     
 private:
     //from IrAbstractListViewBase
@@ -64,6 +68,7 @@
     void renameContextAction();
     void detailsContextAction();
     void updateIconIndexArray();
+    void popupDeleteContextConfirmMessageBox();
     
     //from base view 
     void listViewLongPressed(HbAbstractViewItem *aItem, const QPointF& aCoords);
--- a/qtinternetradio/ui/inc/irmainview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irmainview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -27,7 +27,10 @@
 	Q_OBJECT
 public:
 	~IRMainView();
-        
+
+signals:
+    void applicationReady();
+	    
 protected:
     //only friend class IRViewManager can create this view
     IRMainView(IRApplication *aApplication, TIRViewId aViewId);
@@ -57,8 +60,6 @@
     
     void normalInit();
     
-    void initToolBar();
-    
 private:
     IRMainModel *iMainModel;
 
--- a/qtinternetradio/ui/inc/irnowplayingview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irnowplayingview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -26,6 +26,8 @@
 class IRQMetaData;
 class IRStationShare;
 class HbLabel;
+class HbMarqueeItem;
+class QEvent;
 
 /**
  * This class shows the station information when it's played.
@@ -39,6 +41,9 @@
 public:
     ~IRNowPlayingView();
 
+signals:
+    void applicationReady();
+        
 protected:
     IRNowPlayingView(IRApplication* aApplication, TIRViewId aViewId);
 
@@ -46,6 +51,8 @@
     void launchAction();   
     TIRHandleResult handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason);
 
+    // from HbWidget
+    void changeEvent(QEvent *event);
 
 private slots:
     // slots for logo download
@@ -84,6 +91,12 @@
     void updateAdvImage();
 #endif
     
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+    void handleDummySongIdentify();
+    void handleDummyGoToNms();
+    void handleDummyFindInNms();
+#endif
+    
 private:
     void initialize();
     void initMenu();
@@ -93,6 +106,7 @@
     void updateWidgets();
     void updateMusicStoreStatus();
     void updateForLauchAction();
+    void updateSongName(const QString &aSongName);
     
     void updateStationLogo();	
     void loadStationLogo();
@@ -124,7 +138,8 @@
     };
     LogoDownloadState iLogoDownloadState;
     
-    HbLabel *iSongName;
+    HbLabel *iSongNameLabel;
+    HbMarqueeItem *iSongNameMarquee;
     HbLabel *iArtistName;
     HbLabel *iStationName;
     HbLabel *iStationLogo;
--- a/qtinternetradio/ui/inc/iropenwebaddressview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/iropenwebaddressview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -51,6 +51,7 @@
     void initDataForm();
     bool initPreset(IRQPreset &aPreset);
     bool eventFilter(QObject *object, QEvent *event);
+    void hideVkb();
 
 private slots:
     // play this station
@@ -72,6 +73,7 @@
     HbDataFormModelItem *iUrl;
     HbDataFormModelItem *iName;
     HbLineEdit          *iNameEditorPtr;
+    HbLineEdit          *iUrlEditorPtr;
     
     HbPushButton        *iPlayButton;
     friend class         IRViewManager;
--- a/qtinternetradio/ui/inc/irplaycontroller.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irplaycontroller.h	Wed Aug 18 09:40:26 2010 +0300
@@ -161,7 +161,7 @@
     // Play next URL if the previous failed to connect.
     bool playNextUrl();
 
-    void doPlay(const QString& aUrl);
+    void doPlay(const QString aUrl);
 	
 	void startSession();
 	void endSession(IRQTerminatedType aStopReason);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/inc/irplayingbanner.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef IRPLAYINGBANNER_H_
+#define IRPLAYINGBANNER_H_
+
+#include <HbWidget>
+
+class HbLabel;
+class HbMarqueeItem;
+
+/**
+ * This class is to overload the gestureevent function.
+ */
+class IRPlayingBanner : public HbWidget
+{
+    Q_OBJECT
+public:
+    IRPlayingBanner();
+
+signals:
+    void playingBannerTapFinished();
+
+private:
+    // from HbWidgetBase
+    void gestureEvent(QGestureEvent *aEvent);
+
+    // from HbWidget
+    void changeEvent(QEvent *event);
+
+    void setPlayingBannerTextColor(const QString &aColor);
+
+    void init();
+
+private:
+    HbLabel       *iStationName;
+    HbMarqueeItem *iArtistSongName;
+};
+
+#endif /* IRPLAYINGBANNER_H_ */
--- a/qtinternetradio/ui/inc/irplsview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irplsview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -43,8 +43,7 @@
     void itemAboutToBeSelected(bool &aNeedNetwork);    
 #endif
     void handleItemSelected();
-    void listViewLongPressed(HbAbstractViewItem *aItem, const QPointF &aCoords);
-    void launchAction();
+    void listViewLongPressed(HbAbstractViewItem *aItem, const QPointF &aCoords);    
     
 private:
     IRPlsModel *iPlsModel;
--- a/qtinternetradio/ui/inc/irsearchchannelsview.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irsearchchannelsview.h	Wed Aug 18 09:40:26 2010 +0300
@@ -57,6 +57,7 @@
     void lazyInit();
     void startConvert(int aIndex);   
     void initTimer();
+    bool eventFilter(QObject *object, QEvent *event);
     
 private slots: //slots
      
@@ -72,7 +73,8 @@
     void convertAnother();
     void presetLogoDownload(IRQPreset* aPreset);
     void presetLogoDownloadError();
-    
+    void hideVkb();
+
 public slots:    
     //this slot is used to back to previouse view or minimize the search widget
     void minimizeSearchPanel();   
@@ -97,6 +99,7 @@
     IRQPreset           *iLogoPreset;     
     QTimer              *iConvertTimer;
     QList<int>           iIconIndexArray;
+    IRQSettings          *iSettings;    
     friend class IRViewManager;
 };
 #endif //IRSEARCHCHANNELSVIEW_H
--- a/qtinternetradio/ui/inc/iruidefines.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/iruidefines.h	Wed Aug 18 09:40:26 2010 +0300
@@ -82,7 +82,8 @@
 static const char* NOW_PLAYING_VIEW_OBJECT_ADDTOFAV                   = "add_2_fav_act";
 static const char* NOW_PLAYING_VIEW_OBJECT_FLIP                       = "detail_act";
 static const char* NOW_PLAYING_VIEW_OBJECT_STATION_LOGO               = "station_logo";
-static const char* NOW_PLAYING_VIEW_OBJECT_SONG_NAME                  = "song_name";
+static const char* NOW_PLAYING_VIEW_OBJECT_SONG_NAME_LABEL            = "song_name_label";
+static const char* NOW_PLAYING_VIEW_OBJECT_SONG_NAME_MARQUEE          = "song_name_marquee";
 static const char* NOW_PLAYING_VIEW_OBJECT_ARTIST_NAME                = "artist_name";
 static const char* NOW_PLAYING_VIEW_OBJECT_STATION_NAME               = "station_name";
 #ifdef ADV_ENABLED
@@ -112,6 +113,10 @@
 static const char* TERMS_CONS_VIEW_DECLINE_BTN  = "decline_btn";
 static const char* TERMS_CONS_VIEW_TEXT_EDIT  = "text_edit";
 
+// NowPlayingBanner
+static const QString KNowPlayingBannerColorPressed = "qtc_multimedia_trans_pressed";
+static const QString KNowPlayingBannerColorNormal = "qtc_multimedia_trans_normal";
+
 #define LOADING_ANIMATION_ICON_SIZE 50
 
 #endif /* IRUIDEFINES_H_ */
--- a/qtinternetradio/ui/inc/irviewmanager.h	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/inc/irviewmanager.h	Wed Aug 18 09:40:26 2010 +0300
@@ -61,7 +61,8 @@
     
     void saveActivity();
     
-    void removeActivity();
+    void removeActivity();    
+    
     
 public slots:
     void backToPreviousView();
@@ -111,6 +112,7 @@
     bool iExiting;    
     QMap<TIRViewId, QPixmap> iScreenShots;
     ActivityInformation iActivityBackup;
+    bool iIsEmbedded;
 };
 
 #endif
--- a/qtinternetradio/ui/resources/layout/abstractlistviewbase.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/abstractlistviewbase.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument context="IrAbstractListViewBase" version="0.9">
     <object name="go2station_act" type="HbAction">
-        <string locid="txt_irad_opt_go_to_station" name="text"/>
+        <string locid="Go to station" name="text"/>
     </object>
     <object name="setting_act" type="HbAction">
         <string locid="txt_common_opt_settings" name="text"/>
@@ -37,7 +37,7 @@
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
             </widget>
             <widget name="listView" type="HbListView"/>
-            <widget name="playingBanner" type="HbWidget">
+            <widget name="playingBanner" type="IRPlayingBanner">
                 <widget name="stationName" type="HbLabel">
                     <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
                     <string name="alignment" value="AlignVCenter|AlignLeft"/>
@@ -68,7 +68,7 @@
         <string locid="txt_irad_title_internet_radio" name="title"/>
     </widget>
     <section name="section_with_playingbanner">
-        <widget name="playingBanner" type="HbWidget">
+        <widget name="playingBanner" type="IRPlayingBanner">
             <bool name="visible" value="TRUE"/>
         </widget>
         <widget name="view_container" role="HbView:widget" type="HbWidget">
@@ -81,7 +81,7 @@
         </widget>
     </section>
     <section name="section_no_playingbanner">
-        <widget name="playingBanner" type="HbWidget">
+        <widget name="playingBanner" type="IRPlayingBanner">
             <bool name="visible" value="FALSE"/>
         </widget>
         <widget name="view_container" role="HbView:widget" type="HbWidget">
@@ -101,12 +101,21 @@
         </widget>
     </section>
     <section name="section_with_toolbar_no_heading">
+        <widget name="ext-IrAbstractListViewBase" type="HbView">
+            <widget name="toolbar" role="HbView:toolBar" type="HbToolBar">
+                <enums name="orientation" value="Horizontal"/>
+                <ref object="genres" role="HbToolBar:addAction"/>
+                <ref object="collections" role="HbToolBar:addAction"/>
+                <ref object="favorites" role="HbToolBar:addAction"/>
+                <ref object="search" role="HbToolBar:addAction"/>
+            </widget>
+        </widget>
         <widget name="headingText" type="HbGroupBox">
             <sizehint height="0un" type="PREFERRED"/>
             <sizehint height="0un" type="MAXIMUM"/>
             <bool name="visible" value="FALSE"/>
         </widget>
-    </section> 
+    </section>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="with_playingbanner" sections="#common section_with_playingbanner"/>
--- a/qtinternetradio/ui/resources/layout/nowplayingview.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/nowplayingview.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument version="1.1">
     <object name="go2station_act" type="HbAction">
-        <string locid="txt_irad_opt_go_to_station" name="text"/>
+        <string locid="Go to station" name="text"/>
     </object>
     <object name="share_station_act" type="HbAction">
         <string locid="txt_irad_opt_share" name="text"/>
@@ -10,7 +10,7 @@
         <string locid="txt_irad_opt_identify_song" name="text"/>
     </object>
     <object name="setting_act" type="HbAction">
-        <string locid="txt_irad_opt_network_setting" name="text"/>
+        <string locid="txt_common_opt_settings" name="text"/>
     </object>
     <object name="exit_act" type="HbAction">
         <string locid="txt_common_opt_exit" name="text"/>
@@ -42,26 +42,45 @@
                 <string name="plainText" value="Artist Name"/>
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
             </widget>
-            <widget name="song_name" type="HbLabel">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizehint height="expr(var(hb-param-text-height-primary)+2*var(hb-param-margin-label))" type="PREFERRED"/>
-                <string name="plainText" value="Song Name"/>
-                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
-            </widget>
             <widget name="station_name" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                 <sizehint height="expr(var(hb-param-text-height-secondary)+2*var(hb-param-margin-label))" type="PREFERRED"/>
                 <string name="plainText" value="Station Name"/>
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
             </widget>
+            <widget name="song_name_stack_layout" type="HbWidget">
+                <widget name="song_name_label" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <sizehint height="expr(var(hb-param-text-height-primary)+2*var(hb-param-margin-label))" type="PREFERRED"/>
+                    <string name="plainText" value="Song Name"/>
+                    <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="song_name_marquee" type="HbMarqueeItem">
+                    <sizehint height="expr(var(hb-param-text-height-primary)+2*var(hb-param-margin-label))" type="PREFERRED"/>
+                    <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <layout type="stacked">
+                    <stackitem itemname="song_name_label"/>
+                    <stackitem itemname="song_name_marquee"/>
+                </layout>
+            </widget>
             <layout orientation="Vertical" type="linear">
                 <linearitem itemname="station_logo"/>
                 <linearitem itemname="artist_name"/>
-                <linearitem itemname="song_name"/>
+                <linearitem itemname="song_name_stack_layout"/>
                 <linearitem itemname="station_name"/>
             </layout>
         </widget>
-        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar"/>
+        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
+            <enums name="orientation" value="Horizontal"/>
+            <ref object="musicstore_act" role="HbWidget:addAction"/>
+            <ref object="play_stop_act" role="HbWidget:addAction"/>
+            <ref object="add_2_fav_act" role="HbWidget:addAction"/>
+            <ref object="detail_act" role="HbWidget:addAction"/>
+        </widget>
         <string locid="txt_irad_title_internet_radio" name="title"/>
     </widget>
     <section name="song_recog_yes_section">
@@ -91,17 +110,17 @@
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                 <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
                 <sizehint height="38un" type="FIXED" width="38un"/>
+                <sizehint height="38un" type="MINIMUM" width="38un"/>
                 <sizehint height="38un" type="MAXIMUM" width="38un"/>
-                <sizehint height="38un" type="MINIMUM" width="38un"/>
             </widget>
             <contentsmargins bottom="var(hb-param-margin-gene-screen)" left="var(hb-param-margin-gene-screen)" right="var(hb-param-margin-gene-screen)" top="var(hb-param-margin-gene-screen)"/>
             <layout type="anchor">
                 <anchoritem dst="station_name" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="station_name" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-horizontal)" src="song_name" srcEdge="BOTTOM"/>
+                <anchoritem dst="station_name" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-horizontal)" src="song_name_stack_layout" srcEdge="BOTTOM"/>
                 <anchoritem dst="station_name" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="song_name" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="song_name" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-horizontal)" src="artist_name" srcEdge="BOTTOM"/>
-                <anchoritem dst="song_name" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-horizontal)" src="artist_name" srcEdge="BOTTOM"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="station_logo" dstEdge="TOP" spacing="5un" src="" srcEdge="TOP"/>
                 <anchoritem dst="station_logo" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
                 <anchoritem dst="artist_name" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
@@ -123,19 +142,19 @@
             <layout type="anchor">
                 <anchoritem dst="station_logo" dstEdge="LEFT" spacing="5un" src="" srcEdge="LEFT"/>
                 <anchoritem dst="station_logo" dstEdge="TOP" spacing="5un" src="" srcEdge="TOP"/>
-                <anchoritem dst="song_name" dstEdge="LEFT" spacing="5un" src="station_logo" srcEdge="RIGHT"/>
-                <anchoritem dst="song_name" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="song_name" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="LEFT" spacing="5un" src="station_logo" srcEdge="RIGHT"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="song_name_stack_layout" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
                 <anchoritem dst="artist_name" dstEdge="LEFT" spacing="5un" src="station_logo" srcEdge="RIGHT"/>
                 <anchoritem dst="artist_name" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="artist_name" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-middle-vertical)" src="song_name" srcEdge="TOP"/>
+                <anchoritem dst="artist_name" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-middle-vertical)" src="song_name_stack_layout" srcEdge="TOP"/>
                 <anchoritem dst="station_name" dstEdge="LEFT" spacing="5un" src="station_logo" srcEdge="RIGHT"/>
-                <anchoritem dst="station_name" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="song_name" srcEdge="BOTTOM"/>
+                <anchoritem dst="station_name" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="song_name_stack_layout" srcEdge="BOTTOM"/>
                 <anchoritem dst="station_name" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
             </layout>
         </widget>
     </section>
-    <metadata activeUIState="prt_ui" display="NHD-3.2-inch_portrait" unit="un">
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="prt_ui" sections="#common prt_section"/>
         <uistate name="lsc_ui" sections="#common lsc_section"/>
--- a/qtinternetradio/ui/resources/layout/openwebaddressview.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/openwebaddressview.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -12,10 +12,12 @@
                 <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="FIXED"/>
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
-                <string locid="txt_irad_opt_go_to_station" name="heading"/>
+                <string locid="Go to station" name="heading"/>
             </widget>
             <widget name="internalContainer" type="HbWidget">
-                <widget name="dataForm" type="HbDataForm"/>
+                <widget name="dataForm" type="HbDataForm">
+                    <enums name="clampingStyle" value="StrictClamping"/>
+                </widget>
                 <widget name="playButton" type="HbPushButton">
                     <bool name="checkable" value="FALSE"/>
                     <bool name="stretched" value="TRUE"/>
--- a/qtinternetradio/ui/resources/layout/stationdetailsview.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/stationdetailsview.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <object name="exit_act" type="HbAction">
         <string locid="txt_common_opt_exit" name="text"/>
     </object>
@@ -12,37 +12,45 @@
                         <enums name="elideMode" value="ElideNone"/>
                         <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
                     </widget>
-                    <widget name="description" type="HbLabel">
-                        <enums name="textWrapping" value="TextWordWrap"/>
-                        <enums name="elideMode" value="ElideNone"/>
-                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
-                    </widget>
-                    <widget name="bitRate" type="HbLabel">
-                        <enums name="textWrapping" value="TextWordWrap"/>
-                        <enums name="elideMode" value="ElideNone"/>
-                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
-                    </widget>
                     <widget name="genre" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="MINIMUM"/>                 
                         <enums name="textWrapping" value="TextWordWrap"/>
                         <enums name="elideMode" value="ElideNone"/>
                         <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                     </widget>
                     <widget name="language" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="MINIMUM"/>   
                         <enums name="textWrapping" value="TextWordWrap"/>
                         <enums name="elideMode" value="ElideNone"/>
                         <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                     </widget>
                     <widget name="country" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="MINIMUM"/>   
+                        <enums name="textWrapping" value="TextWordWrap"/>
+                        <enums name="elideMode" value="ElideNone"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="bitRate" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="MINIMUM"/>   
+                        <enums name="textWrapping" value="TextWordWrap"/>
+                        <enums name="elideMode" value="ElideNone"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="description" type="HbLabel">
                         <enums name="textWrapping" value="TextWordWrap"/>
                         <enums name="elideMode" value="ElideNone"/>
                         <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                     </widget>
                     <widget name="stationUrl" type="HbLabel">
-                        <enums name="textWrapping" value="TextWrapAnywhere"/>
+                        <enums name="textWrapping" value="TextWordWrap"/>
                         <enums name="elideMode" value="ElideNone"/>
                         <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                     </widget>
-                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalStretch="0"/>
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <layout type="anchor">
                         <anchoritem dst="stationName" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
@@ -87,11 +95,35 @@
         <widget name="scrollAreaContents" role="HbScrollArea:contents" type="HbWidget">
             <sizehint type="PREFERRED" width="expr(var(hb-param-screen-short-edge) - 2*var(hb-param-margin-gene-screen))"/>
         </widget>
+        <widget name="genre" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-short-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="language" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-short-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="country" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-short-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="bitRate" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-short-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
     </section>
     <section name="landscape">
         <widget name="scrollAreaContents" role="HbScrollArea:contents" type="HbWidget">
             <sizehint type="PREFERRED" width="expr(var(hb-param-screen-long-edge) - 2*var(hb-param-margin-gene-screen))"/>
         </widget>
+        <widget name="genre" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-long-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="language" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-long-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="country" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-long-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
+        <widget name="bitRate" type="HbLabel">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-screen-long-edge) - 2*var(hb-param-margin-gene-screen))"/>
+        </widget>
     </section>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
--- a/qtinternetradio/ui/resources/splashscreen/internet_radio_default.docml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="genres" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
-        <icon iconName="qtg_mono_genres" name="icon"/>
-    </object>
-    <object name="collections" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
-        <icon iconName="qtg_mono_radio_collections" name="icon"/>
-    </object>
-    <object name="favorites" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
-        <icon iconName="qtg_mono_favourites" name="icon"/>
-    </object>
-    <object name="search" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
-        <icon iconName="qtg_mono_search" name="icon"/>
-    </object>
-    <widget name="internet_radio_defaultview" type="HbView">
-        <widget name="content" role="HbView:widget" type="HbWidget">
-            <widget name="toolBar" type="HbToolBar">
-                <ref object="genres" role="HbToolBar:addAction"/>
-                <ref object="collections" role="HbToolBar:addAction"/>
-                <ref object="favorites" role="HbToolBar:addAction"/>
-                <ref object="search" role="HbToolBar:addAction"/>
-            </widget> 
-            <layout orientation="Vertical" type="linear">
-                <stretchitem stretchfactor="1"/>                 
-                <linearitem itemname="toolBar"/>
-            </layout>
-        </widget>
-        <string locid="txt_irad_title_internet_radio" name="title"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-        <dummydata objectName="listView" section="#common" value="6"/>
-    </metadata>
-</hbdocument>
--- a/qtinternetradio/ui/resources/splashscreen/internet_radio_default.splashml	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<hbsplash version="1">
-    <docml>internet_radio_default.docml</docml>
-    <widget>internet_radio_defaultview</widget>
-    <appuid>0xe28364bb</appuid>
-    <tsappname>internet_radio_10_1</tsappname>     
-</hbsplash>
--- a/qtinternetradio/ui/resources/splashscreen/internet_radio_normal.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/splashscreen/internet_radio_normal.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument version="0.9">
+    <object name="share_station_act" type="HbAction">
+        <string locid="txt_irad_opt_share" name="text"/>
+    </object>
     <object name="genres" type="HbAction">
         <bool name="checkable" value="TRUE"/>
         <icon iconName="qtg_mono_genres" name="icon"/>
@@ -29,6 +32,9 @@
                 <linearitem itemname="toolBar"/>
             </layout>
         </widget>
+	      <widget name="viewMenu" role="HbView:menu" type="HbMenu">
+            <ref object="share_station_act" role="HbWidget:addAction"/> 
+        </widget>
         <string locid="txt_irad_title_internet_radio" name="title"/>
     </widget>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
--- a/qtinternetradio/ui/resources/splashscreen/internet_radio_nowplaying.docml	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/resources/splashscreen/internet_radio_nowplaying.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
+<hbdocument version="0.9"> 
+    <object name="share_station_act" type="HbAction">
+        <string locid="txt_irad_opt_share" name="text"/>
+    </object>
     <object name="musicstore_act" type="HbAction">
         <bool name="autoRepeat" value="FALSE"/>
         <icon iconName="qtg_mono_store" name="icon"/>
@@ -28,6 +31,9 @@
                 <stretchitem stretchfactor="1"/>                 
                 <linearitem itemname="toolBar"/>
             </layout>
+	          <widget name="viewMenu" role="HbView:menu" type="HbMenu">
+                <ref object="share_station_act" role="HbWidget:addAction"/> 
+            </widget>
         </widget>
         <string locid="txt_irad_title_internet_radio" name="title"/>
     </widget>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/resources/splashscreen/internet_radio_termscons.docml	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+    <widget name="internet_radio_termsconsview" type="HbView">
+        <widget name="container" role="HbView:widget" type="HbWidget">
+            <widget name="heading_text" type="HbGroupBox">
+                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                <sizehint height="expr((var(hb-param-text-height-secondary)+2*var(hb-param-margin-gene-middle-vertical)))" type="PREFERRED"/>
+                <bool name="collapsable" value="FALSE"/>
+                <string locid="txt_irad_terms_and_conditions" name="heading"/>
+                <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+            </widget>
+            <widget name="text_edit" type="HbTextEdit">
+                <enums name="cursorVisibility" value="TextCursorHidden"/>
+                <string locid="txt_irad_terms_content" name="plainText"/>
+                <bool name="readOnly" value="TRUE"/>
+                <enums name="contextMenuFlags" value="ShowTextContextMenuOnSelectionClicked"/>
+                <fontspec name="fontSpec" role="Secondary" textheight="expr(var(hb-param-text-height-secondary) )"/>
+            </widget>
+            <widget name="accept_btn" type="HbPushButton">
+                <string locid="txt_irad_accept" name="text"/>
+            </widget>
+            <widget name="decline_btn" type="HbPushButton">
+                <string locid="txt_irad_decline" name="text"/>
+            </widget>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="heading_text"/>
+                <linearitem itemname="text_edit"/>
+                <linearitem itemname="accept_btn"/>
+                <linearitem itemname="decline_btn"/>
+            </layout>
+        </widget>
+        <string locid="txt_irad_title_internet_radio" name="title"/>
+    </widget>
+    <section name="prt_section">
+        <widget name="container" role="HbView:widget" type="HbWidget">
+            <widget name="prt_content_container" type="HbWidget">
+                <widget name="text_edit" type="HbTextEdit"/>
+                <widget name="accept_btn" type="HbPushButton"/>
+                <widget name="decline_btn" type="HbPushButton"/>
+                <contentsmargins bottom="expr(var(hb-param-margin-gene-screen) )" left="expr(var(hb-param-margin-gene-screen) )" right="expr(var(hb-param-margin-gene-screen) )" top="expr(var(hb-param-margin-gene-screen) )"/>
+                <layout type="anchor">
+                    <anchoritem dst="accept_btn" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="accept_btn" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="text_edit" srcEdge="BOTTOM"/>
+                    <anchoritem dst="accept_btn" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="text_edit" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="text_edit" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="" srcEdge="TOP"/>
+                    <anchoritem dst="text_edit" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="decline_btn" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="decline_btn" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="accept_btn" srcEdge="BOTTOM"/>
+                    <anchoritem dst="decline_btn" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="decline_btn" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                </layout>
+            </widget>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="heading_text"/>
+                <linearitem itemname="prt_content_container"/>
+            </layout>
+        </widget>
+    </section>
+    <section name="lsc_section">
+        <widget name="container" role="HbView:widget" type="HbWidget">
+            <widget name="lsc_content_container" type="HbWidget">
+                <widget name="text_edit" type="HbTextEdit"/>
+                <widget name="lsc_btn_container" type="HbWidget">
+                    <widget name="accept_btn" type="HbPushButton"/>
+                    <widget name="decline_btn" type="HbPushButton"/>
+                    <layout orientation="Horizontal" spacing="expr(var(hb-param-margin-gene-screen) )" type="linear">
+                        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                        <linearitem itemname="accept_btn"/>
+                        <linearitem itemname="decline_btn"/>
+                    </layout>
+                </widget>
+                <contentsmargins bottom="expr(var(hb-param-margin-gene-screen) )" left="expr(var(hb-param-margin-gene-screen) )" right="expr(var(hb-param-margin-gene-screen) )" top="expr(var(hb-param-margin-gene-screen) )"/>
+                <layout type="anchor">
+                    <anchoritem dst="text_edit" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="text_edit" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="" srcEdge="TOP"/>
+                    <anchoritem dst="text_edit" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="lsc_btn_container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="lsc_btn_container" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="text_edit" srcEdge="BOTTOM"/>
+                    <anchoritem dst="lsc_btn_container" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="lsc_btn_container" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                </layout>
+            </widget>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="heading_text"/>
+                <linearitem itemname="lsc_content_container"/>
+            </layout>
+        </widget>
+    </section>
+    <metadata activeUIState="lsc_state" display="NHD-3.2-inch_portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+        <uistate name="prt_state" sections="#common prt_section"/>
+        <uistate name="lsc_state" sections="#common lsc_section"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/resources/splashscreen/internet_radio_termscons.splashml	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,9 @@
+<hbsplash version="1">
+    <docml>internet_radio_termscons.docml</docml>
+    <widget>internet_radio_termsconsview</widget>
+    <appuid>0xe28364bb</appuid>
+    <tsappname>internet_radio_10_1</tsappname>    
+    <screenid>termscons_screen</screenid>
+    <use-section when="portrait">prt_section</use-section>
+    <use-section when="landscape">lsc_section</use-section-name>
+</hbsplash>
\ No newline at end of file
--- a/qtinternetradio/ui/src/irabstractlistviewbase.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irabstractlistviewbase.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -26,6 +26,7 @@
 #include <HbLabel>
 #include <hbframedrawer.h>
 #include <hbframeitem.h>
+#include <HbColorScheme>
 
 #include "irviewmanager.h"
 #include "irabstractlistviewbase.h"
@@ -36,14 +37,14 @@
 #include "irqisdsclient.h"
 #include "irqenums.h"
 #include "iruidefines.h"
+#include "irplayingbanner.h"
  
 const int KAnimationLoopTimes = 2; // Animation loop times
 #define NOW_PLAYING_BANNER_FRAME "qtg_fr_multimedia_trans"
 
 IrAbstractListViewBase::IrAbstractListViewBase(IRApplication *aApplication, TIRViewId aViewId)
     : IRBaseView(aApplication, aViewId),
-	  iListView(NULL),
-      iPlayingBanner(NULL),
+      iListView(NULL),
       iStationName(NULL),
       iArtistSongName(NULL),
       iHeadingLabel(NULL),
@@ -64,6 +65,14 @@
     iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME);
         
     iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_NO_PLAYINGBANNER_SECTION);
+    
+#ifdef SUBTITLE_STR_BY_LOCID
+    setTitle(hbTrId("txt_irad_title_internet_radio"));
+         
+#else
+    setTitle("Internet radio");      
+#endif
+   
 }
 
 IrAbstractListViewBase::~IrAbstractListViewBase()
@@ -112,25 +121,29 @@
     font.setBold(true);
     iHeadingLabel->setFont(font);
     
-    iPlayingBanner = qobject_cast<HbWidget *>(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_PLAYINGBANNER)); 
-    iPlayingBanner->installEventFilter(iApplication);
+    IRPlayingBanner *playingBanner = qobject_cast<IRPlayingBanner *>(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_PLAYINGBANNER)); 
     iStationName = qobject_cast<HbLabel *>(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_STATIONNAME));
     iStationName->setFont(font);
     iArtistSongName = qobject_cast<HbMarqueeItem *>(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_ARTISTSONGNAME));
     iArtistSongName->setLoopCount(KAnimationLoopTimes);
+    QColor color = HbColorScheme::color(KNowPlayingBannerColorNormal);
+    iStationName->setTextColor(color);
+    iArtistSongName->setTextColor(color);
+
+    connect(playingBanner, SIGNAL(playingBannerTapFinished()), this, SLOT(playingBannerTapFinished()));
 
     iListView = qobject_cast<HbListView *>(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_LISTVIEW));
     iListView->listItemPrototype()->setGraphicsSize(HbListViewItem::LargeIcon);
     
     // draw background for now playing banner
     HbFrameDrawer* drawer = new HbFrameDrawer(NOW_PLAYING_BANNER_FRAME, HbFrameDrawer::NinePieces);
-    HbFrameItem* backgroundItem = new HbFrameItem(drawer, iPlayingBanner);
+    HbFrameItem* backgroundItem = new HbFrameItem(drawer, playingBanner);
     if (backgroundItem)
     {
         // set item to fill the whole widget
-        backgroundItem->setGeometry(QRectF(QPointF(0, 0), iPlayingBanner->size()));
+        backgroundItem->setGeometry(QRectF(QPointF(0, 0), playingBanner->size()));
         backgroundItem->setZValue(0);
-        iPlayingBanner->setBackgroundItem(backgroundItem);
+        playingBanner->setBackgroundItem(backgroundItem);
     }
 }
 
@@ -153,13 +166,6 @@
     return iViewParameter;
 }
 
-void IrAbstractListViewBase::setPlayingBannerTextColor(const QString &aColor)
-{
-    QColor color(aColor);
-    iStationName->setTextColor(color);
-    iArtistSongName->setTextColor(color);
-}
-
 void IrAbstractListViewBase::setCheckedAction()
 {       
     //default implementation
@@ -374,6 +380,11 @@
     Q_UNUSED(aCoords);
 }
 
+void IrAbstractListViewBase::playingBannerTapFinished()
+{
+    getViewManager()->activateView(EIRView_PlayingView);
+}
+
 void IrAbstractListViewBase::clickItem(const QModelIndex &aIndex)
 {   
     Q_UNUSED(aIndex);
--- a/qtinternetradio/ui/src/irapplication.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irapplication.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -19,13 +19,12 @@
 #include <hbapplication.h>
 #include <qcoreapplication.h>
 #include <hbdevicemessagebox.h>
-#include <hbprogressdialog.h>
-#include <QLocalServer>
-#include <QLocalSocket>
+#include <hbprogressdialog.h> 
 #include <QFile>
 #include <QTextStream>
 #include <QDir>
 #include <hbmessagebox.h>
+#include <HbEvent>
 
 #include <xqserviceutil.h>
 #include <hbiconitem.h>
@@ -38,10 +37,7 @@
 #include <QDateTime>
 #endif
 
-#ifdef LOCALIZATION 
-#include <QTranslator>
-#include "irqutility.h" 
-#endif
+ 
 
 #include "irviewmanager.h"
 #include "irapplication.h"
@@ -87,12 +83,8 @@
                                      iAdvertisementClient(NULL),                                    
                                      iEnableGlobalAdv(true),
                                      iDisconnected(false),
-                                     iConnectingCanceled(false),
-                                     iLocalServer(NULL),
-                                     iLoadingNote(NULL),
-                                     #ifdef LOCALIZATION
-                                     iTranslator(NULL),
-                                     #endif
+                                     iConnectingCanceled(false),                                     
+                                     iLoadingNote(NULL), 
                                      iSystemEventHandler(aSystemEventHandler), 
                                      iUseNetworkReason(EIR_UseNetwork_NoReason),									 
                                      iAppFullyStarted(false),
@@ -101,7 +93,8 @@
                                      iMonitorService(NULL),
 									 #endif                                     
                                      iFileViewService(NULL),
-                                     iMessageBox(NULL)
+                                     iMessageBox(NULL),
+                                     iIsEmbedded(XQServiceUtil::isEmbedded())
                                      
 {
     LOG_METHOD;
@@ -118,7 +111,7 @@
     iSettings->getGlobalAdvFlag(iEnableGlobalAdv);
     setupConnection();
     
-    if (!XQServiceUtil::isService())
+    if ( !iIsEmbedded )
     {
         setLaunchView();
     }
@@ -141,14 +134,12 @@
 {
     LOG_METHOD;
     setExitingView();
-    iViewManager->saveActivity();
-    
-    destroyComponents();
+    if (iViewManager)
+    {
+        iViewManager->saveActivity();
+    }
     
-    if (iLocalServer)
-    {
-        iLocalServer->close();
-    }
+    destroyComponents(); 
     
     delete iLastPlayedStationInfo;
     iLastPlayedStationInfo = NULL;
@@ -159,25 +150,18 @@
     delete iMessageBox;
     iMessageBox = NULL;
     
-    delete iSystemEventHandler;
-    
-#ifdef LOCALIZATION
-    if( iTranslator )
-    {
-        qApp->removeTranslator(iTranslator);
-        delete iTranslator;
-        iTranslator = NULL;
-    }
-#endif
-    
+    delete iSystemEventHandler;   
     delete iFileViewService;
     iFileViewService = NULL;
 	
 #ifdef HS_WIDGET_ENABLED	
-    XQSettingsManager settingsManager;
-    XQPublishAndSubscribeUtils psUtils(settingsManager);
-    XQPublishAndSubscribeSettingsKey irStartupKey(KInternetRadioPSUid, KInternetRadioStartupKey);
-    psUtils.deleteProperty(irStartupKey);        
+    if( !iIsEmbedded )
+    {
+        XQSettingsManager settingsManager;
+        XQPublishAndSubscribeUtils psUtils(settingsManager);
+        XQPublishAndSubscribeSettingsKey irStartupKey(KInternetRadioPSUid, KInternetRadioStartupKey);
+        psUtils.deleteProperty(irStartupKey);           
+    }     
 #endif	
 }
 
@@ -209,10 +193,16 @@
         if (EIRView_PlayingView == viewId)
         {
             //handle error case
-            if (NULL == getLastPlayedStationInfo()->getLastPlayedStation())
+            IRLastPlayedStationInfo *lastPlayedStationInfo = getLastPlayedStationInfo();            
+            if (lastPlayedStationInfo)
             {
-                viewId = EIRView_CategoryView;
-            }
+                IRQPreset *lastPreset = NULL;
+                lastPreset = lastPlayedStationInfo->getLastPlayedStation();
+                if( NULL == lastPreset )
+                {
+                    viewId = EIRView_CategoryView;
+                }
+            } 
         }
     }
     
@@ -377,6 +367,11 @@
 
 IRLastPlayedStationInfo* IRApplication::getLastPlayedStationInfo()
 {
+    if( iIsEmbedded )
+    {
+        return NULL;
+    } 
+    
     if(NULL == iLastPlayedStationInfo)
     {
         iLastPlayedStationInfo = new IRLastPlayedStationInfo();
@@ -432,16 +427,6 @@
     return iFileViewService->getPlayList();
 }
 
-#ifdef LOCALIZATION
-/*
-* this function will take ownership of the translator
-*/
-void IRApplication::setTranslator(QTranslator* aTranslator)
-{
-    iTranslator = aTranslator;        
-}
-#endif
-
 /*
  * Description : create all the application level components, including network controller,
  *               favorites db, isds client, play controller, etc
@@ -452,8 +437,12 @@
 {
     getSettings();
 #ifdef HS_WIDGET_ENABLED    
-    iControlService = new IrControlService(this);
-    iMonitorService = new IrMonitorService(this);	
+    if( !iIsEmbedded )
+    {
+        iControlService = new IrControlService(this);
+        iMonitorService = new IrMonitorService(this);        
+    } 
+     
 #endif	
 }
 
@@ -609,18 +598,6 @@
     
     IRCategoryView *categoryView = static_cast<IRCategoryView*>(getViewManager()->getView(EIRView_CategoryView, true));
     categoryView->loadCategory(IRQIsdsClient::EGenre);
-}
-
-void IRApplication::newLocalSocketConnection()
-{
-    QLocalSocket *socket = iLocalServer->nextPendingConnection();
-    if (!socket)
-    {
-        return;
-    }
-    delete socket;
-    
-    iViewManager->raise();
 } 
 
 void IRApplication::initApp()
@@ -635,19 +612,23 @@
     }
     getMediaKeyObserver();	
     startSystemEventMonitor();
-    startLocalServer();
+
+
     //when IR is running, remove activity. Otherwise user can see two items in task switcher
     iViewManager->removeActivity();
     
 #ifdef HS_WIDGET_ENABLED		
-    // Write the startup timestamp to P&S key for the homescreen widget
-    XQSettingsManager settingsManager;
-    XQPublishAndSubscribeUtils psUtils(settingsManager);
-    XQPublishAndSubscribeSettingsKey irStartupKey(KInternetRadioPSUid, KInternetRadioStartupKey);
-    if (psUtils.defineProperty(irStartupKey, XQSettingsManager::TypeInt))
+    if( !iIsEmbedded )
     {
-        settingsManager.writeItemValue(irStartupKey, (int)QDateTime::currentDateTime().toTime_t());
-    } 
+        // Write the startup timestamp to P&S key for the homescreen widget
+        XQSettingsManager settingsManager;
+        XQPublishAndSubscribeUtils psUtils(settingsManager);
+        XQPublishAndSubscribeSettingsKey irStartupKey(KInternetRadioPSUid, KInternetRadioStartupKey);
+        if (psUtils.defineProperty(irStartupKey, XQSettingsManager::TypeInt))
+        {
+            settingsManager.writeItemValue(irStartupKey, (int)QDateTime::currentDateTime().toTime_t());
+        } 
+    }
 #endif        
 }
 
@@ -729,6 +710,10 @@
     return iAppFullyStarted;
 }
 
+bool IRApplication::isEmbeddedInstance() const
+{
+    return iIsEmbedded;
+}
 void IRApplication::setExitingView()
 {  
     TIRViewId viewId = iViewManager->getExitingView();
@@ -784,69 +769,8 @@
 #endif
 
 
-void IRApplication::startLocalServer()
-{
-    QString serverName = QCoreApplication::applicationName();
-    iLocalServer = new QLocalServer(this);
-    connect(iLocalServer, SIGNAL(newConnection()),
-            this, SLOT(newLocalSocketConnection()));
-    
-    if (!iLocalServer->listen(serverName)) 
-    {
-        QAbstractSocket::SocketError error = iLocalServer->serverError();
-        QString fullServerName;
-        fullServerName = QDir::cleanPath(QDir::tempPath());
-        fullServerName += QLatin1Char('/') + serverName;
-        bool fileExists = QFile::exists(fullServerName);
-        
-        if (error == QAbstractSocket::AddressInUseError && fileExists) 
-        {
-            QFile::remove(fullServerName);
-            bool ret = iLocalServer->listen(serverName);
-            //following lines aim to fix coverity errors
-            if (!ret)
-            {
-                Q_ASSERT(false);
-            }
-        }
-    }
-}
-
-bool IRApplication::eventFilter(QObject *object, QEvent *event)
-{
-    bool eventWasConsumed = false;
+ 
 
-    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()) )
-        {
-            return false;
-        }    
-	
-        if (event->type() == QEvent::GraphicsSceneMousePress)
-        {
-            eventWasConsumed = true;
-            Q_ASSERT(iPlayController->isPlaying());
-            IrAbstractListViewBase* listview = static_cast<IrAbstractListViewBase*>(iViewManager->currentView());
-            listview->setPlayingBannerTextColor("qtc_multimedia_trans_pressed");
-        }
-        else if(event->type() == QEvent::GraphicsSceneMouseRelease)
-        {
-            eventWasConsumed = true;
-            Q_ASSERT(iPlayController->isPlaying());
-            IrAbstractListViewBase* listview = static_cast<IrAbstractListViewBase*>(iViewManager->currentView());
-            listview->setPlayingBannerTextColor("qtc_multimedia_trans_normal");
-            iViewManager->activateView(EIRView_PlayingView);
-        }
-    }
-    return eventWasConsumed;
-}
 
 void IRApplication::startSystemEventMonitor()
 {     
--- a/qtinternetradio/ui/src/irbaseview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irbaseview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -135,11 +135,11 @@
     switch (aNoteType)
     {
     case HbMessageBox::MessageTypeInformation:
-        HbMessageBox::information(aNote, (QObject*)NULL, NULL);
+        HbMessageBox::information(aNote, (QObject*)NULL, NULL, HbMessageBox::Ok);
         break;
         
     case HbMessageBox::MessageTypeWarning:
-        HbMessageBox::warning(aNote, (QObject*)NULL, NULL);
+        HbMessageBox::warning(aNote, (QObject*)NULL, NULL, HbMessageBox::Ok);
         break;
         
     default:
--- a/qtinternetradio/ui/src/ircategoryview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/ircategoryview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -15,9 +15,9 @@
 *
 */
 
-#include <hbtoolbar.h>
 #include <hbaction.h>
 #include <hblistview.h>
+#include <hbscrollbar.h>
 
 #include "irapplication.h"
 #include "irviewmanager.h"
@@ -79,7 +79,6 @@
                 {
                     iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION);
                     iLoadedSection = ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION;
-                    initToolBar();
                 }
             }
             else
@@ -359,6 +358,13 @@
     iListView->reset();
     iListView->setCurrentIndex(iModel->index(iLastSelectItem));
     iListView->scrollTo(iModel->index(iLastSelectItem));
+    qreal value = 0.0;
+    if (iListView->model()->rowCount() > 0)
+    {
+        value = iLastSelectItem / iListView->model()->rowCount();
+    }
+    iListView->verticalScrollBar()->setValue(value);
+    
     getViewManager()->activateView(this);
 }
 
@@ -453,6 +459,8 @@
         //initialization from handleCommand()
         handleCommand(EIR_ViewCommand_TOBEACTIVATED, EIR_ViewCommandReason_Show);
         handleCommand(EIR_ViewCommand_ACTIVATED, EIR_ViewCommandReason_Show);
+        
+        emit applicationReady();
     }
 }
 
@@ -472,15 +480,3 @@
         setInitCompleted(true);
     }
 }
-
-void IRCategoryView::initToolBar()
-{
-    //add HbActions to the toolbar, the HbActions have been created in IrAbstractListViewBase
-    HbToolBar *viewToolBar = toolBar();
-    viewToolBar->clearActions();
-    viewToolBar->addAction(iGenresAction);
-    viewToolBar->addAction(iCollectionsAction);
-    viewToolBar->addAction(iFavoritesAction);
-    viewToolBar->addAction(iSearchAction);
-    viewToolBar->setVisible(true);
-}
--- a/qtinternetradio/ui/src/irdocumentloader.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irdocumentloader.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -17,6 +17,7 @@
 #include <HbTextItem>
 #include <HbMarqueeItem>
 #include "irdocumentloader.h" 
+#include "irplayingbanner.h"
 
 QObject *IRDocumentLoader::createObject(const QString& aType, const QString &aName)
 {
@@ -32,6 +33,12 @@
         object->setObjectName(aName);
         return object;
     }
+    else if (aType == IRPlayingBanner::staticMetaObject.className())
+    {
+        QObject *object = new IRPlayingBanner;
+        object->setObjectName(aName);
+        return object;
+    }
 
     return HbDocumentLoader::createObject(aType, aName);
 }
--- a/qtinternetradio/ui/src/irfavoritesview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irfavoritesview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -23,6 +23,8 @@
 #include <QPixmap>
 #include <QTimer>
 #include <HbInputDialog>
+#include <hbscrollbar.h>
+#include <HbLineEdit>
 
 #include "irviewmanager.h"
 #include "irfavoritesview.h"
@@ -150,6 +152,7 @@
         //initialization from handleCommand()
         handleCommand(EIR_ViewCommand_TOBEACTIVATED, EIR_ViewCommandReason_Show);
         handleCommand(EIR_ViewCommand_ACTIVATED, EIR_ViewCommandReason_Show);
+        emit applicationReady();
     }
 }
 
@@ -220,25 +223,22 @@
         header->setHeading(hbTrId("Select items to delete"));        
 #endif
         iMultiDeleteDialog->setHeadingWidget(header);
-        
-        
-        QList<QAction *> oriActions = iMultiDeleteDialog->actions();
-        for(int i = 0; i< oriActions.count(); i++)
-        {
-            iMultiDeleteDialog->removeAction(oriActions.at(i));
-            delete oriActions.at(i);
-        }
+    }
 
+    iMultiDeleteDialog->setModel(NULL);
+    iMultiDeleteDialog->setModel(iModel);
+    QList<QAction *> oriActions = iMultiDeleteDialog->actions();
+    if (oriActions.count() >= 2)
+    {
 #ifdef SUBTITLE_STR_BY_LOCID
-        iMultiDeleteDialog->addAction(new HbAction(hbTrId("txt_common_button_delete")));
-        iMultiDeleteDialog->addAction(new HbAction(hbTrId("txt_common_button_cancel")));
+        oriActions.at(0)->setText(hbTrId("txt_common_button_delete"));
+        oriActions.at(1)->setText(hbTrId("txt_common_button_cancel"));
 #else
-        iMultiDeleteDialog->addAction(new HbAction(hbTrId("Delete")));
-        iMultiDeleteDialog->addAction(new HbAction(hbTrId("Cancel")));        
+        oriActions.at(0)->setText("Delete");
+        oriActions.at(1)->setText("Cancel");       
 #endif
     }
-
-    iMultiDeleteDialog->setModel(iModel);
+    
     iMultiDeleteDialog->open(this,SLOT(deleteDialogClosed(HbAction*)));
 }
 
@@ -372,6 +372,7 @@
     
     iListView->reset();
     iListView->setCurrentIndex(iModel->index(0));
+    iListView->verticalScrollBar()->setValue(0.0);
 }
 
 void IRFavoritesView::deleteDialogClosed(HbAction *aAction)
@@ -409,8 +410,7 @@
                 iConvertTimer->start();
             }
         }
-    }
-    iMultiDeleteDialog->setModel(NULL);    
+    }   
 }
 
 void IRFavoritesView::actionClicked(HbAction *aAction)
@@ -424,7 +424,7 @@
         }
         else if ( objectName == KActionDeleteName)
         {
-            deleteContextAction();                            
+            popupDeleteContextConfirmMessageBox();                            
         }
         else if (objectName == KActionRenameName)
         {
@@ -448,8 +448,7 @@
 
 void IRFavoritesView::listViewLongPressed(HbAbstractViewItem *aItem, const QPointF& aCoords)
 {
-    Q_UNUSED(aItem);         
-    Q_UNUSED(aCoords);
+    Q_UNUSED(aItem);            
     
     HbAction *action = NULL;
     
@@ -482,6 +481,7 @@
 #endif
     action->setObjectName(KActionDetailsName);
     
+    contextMenu->setPos(aCoords);
     contextMenu->open();         
 } 
 
@@ -514,11 +514,19 @@
 {
     int current = iListView->currentIndex().row();
     IRQPreset *preset = iModel->getPreset(current);
-#ifdef SUBTITLE_STR_BY_LOCID
-    HbInputDialog::getText(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameConfirmed(HbAction*)), preset->name);
+
+    HbInputDialog *dlg = new HbInputDialog;
+#ifdef SUBTITLE_STR_BY_LOCID    
+    dlg->setPromptText(hbTrId("txt_common_menu_rename_item"));
 #else
-    HbInputDialog::getText(hbTrId("Rename"), this, SLOT(renameConfirmed(HbAction*)), preset->name);    
+    dlg->setPromptText(hbTrId("Rename"));
 #endif
+    HbLineEdit* lineEdit = dlg->lineEdit();
+    lineEdit->setMaxLength(256);
+    dlg->setInputMode(HbInputDialog::TextInput);
+    dlg->setValue(preset->name);   
+    dlg->setAttribute(Qt::WA_DeleteOnClose);
+    dlg->open(this, SLOT(renameConfirmed(HbAction*)));
 }
 
 void IRFavoritesView::detailsContextAction()
@@ -622,3 +630,24 @@
     viewToolBar->addAction(iFavoritesAction);
     viewToolBar->addAction(iSearchAction);
 }
+
+void IRFavoritesView::popupDeleteContextConfirmMessageBox()
+{
+#ifdef SUBTITLE_STR_BY_LOCID
+    HbMessageBox::question(hbTrId("txt_irad_info_delete_station"), this, SLOT(deleteContext(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);
+#else
+    HbMessageBox::question("Delete station?", this, SLOT(deleteContext(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);    
+#endif
+}
+
+void IRFavoritesView::deleteContext(HbAction *aAction)
+{
+    HbMessageBox *dialog = static_cast<HbMessageBox*>(sender());
+    if (dialog)
+    {
+        if (aAction == dialog->actions().at(0))
+        {
+            deleteContextAction();
+        }
+    }        
+}
--- a/qtinternetradio/ui/src/irhistoryview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irhistoryview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -77,9 +77,9 @@
 void IRHistoryView::popupClearHistoryConfirmMessageBox()
 {
 #ifdef SUBTITLE_STR_BY_LOCID
-    HbMessageBox::question(hbTrId("txt_irad_info_clear_station_list"), this, SLOT(clearAllList(HbAction*)), hbTrId("txt_common_button_ok"), hbTrId("txt_common_button_cancel"));
+    HbMessageBox::question(hbTrId("txt_irad_info_clear_station_list"), this, SLOT(clearAllList(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);
 #else
-    HbMessageBox::question(hbTrId("Clear station list?"), this, SLOT(clearAllList(HbAction*)), hbTrId("Ok"), hbTrId("Cancel"));    
+    HbMessageBox::question(hbTrId("Clear station list?"), this, SLOT(clearAllList(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);    
 #endif
 }
 /* 
--- a/qtinternetradio/ui/src/irmainview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irmainview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -14,7 +14,6 @@
 * Description:
 *
 */
-#include <hbtoolbar.h>
 #include <hbaction.h>
 #include <hblistview.h>
 
@@ -204,6 +203,7 @@
         
         //initialization from handleCommand()
         handleCommand(EIR_ViewCommand_ACTIVATED, EIR_ViewCommandReason_Show);
+        emit applicationReady();
     }
 }
 
@@ -212,7 +212,7 @@
     if (!initCompleted())
     {
         IrAbstractListViewBase::lazyInit();
-        initToolBar();
+        
         setCheckedAction();
         
         connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
@@ -225,12 +225,3 @@
         setInitCompleted(true);
     }
 }
-
-void IRMainView::initToolBar()
-{
-    HbToolBar *viewToolBar = toolBar();
-    viewToolBar->addAction(iGenresAction);
-    viewToolBar->addAction(iCollectionsAction);
-    viewToolBar->addAction(iFavoritesAction);
-    viewToolBar->addAction(iSearchAction);
-}
--- a/qtinternetradio/ui/src/irmemorycollector.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irmemorycollector.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -15,13 +15,12 @@
 *
 */
 
-#include <QCoreApplication>
-#include <QSettings>
+#include <QCoreApplication> 
 
 #include "irmemorycollector.h"
 #include "irapplication.h"
 #include "irviewmanager.h"
-#include "irservicedef.h"
+ 
 
 IRMemoryCollector::IRMemoryCollector(IRApplication* aApplication) : iApplication(aApplication)
 {
@@ -32,14 +31,6 @@
 {
     IRViewManager *viewManager = iApplication->getViewManager();
     
-    //we need to save the status for splash view, need to extend in future
-    TIRViewId exitingID = viewManager->getExitingView();
-    QSettings settings(KIrSettingOrganization, KIrSettingApplication);
-    QVariant data(QVariant::Bool);
-    bool isNowplaying = (EIRView_PlayingView == exitingID)? true:false;
-    data.setValue(isNowplaying);
-    settings.setValue(KIrSettingSplashNowplaying,data); 
-    
     delete iApplication;
     iApplication = NULL;
         
--- a/qtinternetradio/ui/src/irnowplayingview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irnowplayingview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -14,19 +14,26 @@
 * Description:
 *
 */
-#include <hbtoolbar.h>
 #include <QPixmap>
 #include <hbaction.h>
 #include <hblabel.h>
+#include <hbmarqueeitem.h>
 #include <hbnotificationdialog.h>
 #include <QSettings>
+#include <QFontMetricsF>
+#include <QCoreApplication>
+#include <HbColorScheme>
+#include <HbEvent>
 
 #ifdef NOWPLAYING_VIEW_OPTION_B
 #include <hbframedrawer.h>
 #include <hbframeitem.h>
 #endif
 
-
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+#include <hbmenu.h>
+#endif
+    
 #include "irviewmanager.h"
 #include "irapplication.h"
 #include "irplaycontroller.h"
@@ -47,6 +54,8 @@
 #include "irplaylist.h"
 #include "irstationdetailsview.h"
 #include "irservicedef.h"
+#include "irqsettings.h"
+#include "irqlogger.h"
 
 #ifdef ADV_ENABLED
 #include <QTimer>
@@ -55,10 +64,15 @@
 #endif
 
 const int KNowPlayingLogoSize = 300; // Now playing logo size
+
 static const QString KDefaultStationLogo("qtg_large_internet_radio");
 static const QString KPlayButtonIcon("qtg_mono_play");
 static const QString KStopButtonIcon("qtg_mono_stop");
 
+static const QString KArtistColor("qtc_lcd_content_normal");
+static const QString KSongColor("qtc_lcd_content_normal");
+static const QString KStationColor("qtc_lcd_content_normal");
+
 #ifdef NOWPLAYING_VIEW_OPTION_B
 static const QString KLcdGraphics("qtg_fr_lcd");
 #endif
@@ -76,7 +90,8 @@
     iPlayStopAction(NULL),
     iLaunchActionNeeded(false),
     iLogoDownloadState(EIdle),    
-    iSongName(NULL),
+    iSongNameLabel(NULL),
+    iSongNameMarquee(NULL),
     iArtistName(NULL),
     iStationName(NULL),
     iStationLogo(NULL),
@@ -89,6 +104,7 @@
     ,iAdvUrl(KDefaultAdvLink)    
 #endif
 {
+    LOG_METHOD;
     initialize();
     
     //if this view is not starting view, finish all initialization in constructor
@@ -105,6 +121,7 @@
  */
 IRNowPlayingView::~IRNowPlayingView()
 {
+    LOG_METHOD;
     if (iStatisticsReporter)
     {
         iStatisticsReporter->closeInstance();
@@ -119,6 +136,7 @@
  */
 void IRNowPlayingView::initialize()
 {
+    LOG_METHOD;
     setObjectName(NOW_PLAYING_VIEW_OBJECT_NAME);
     QObjectList roots;
     roots.append(this);
@@ -130,6 +148,12 @@
     initMenu();
     initToolBar();
     initWidget();    
+#ifdef SUBTITLE_STR_BY_LOCID
+    setTitle(hbTrId("txt_irad_title_internet_radio"));
+         
+#else
+    setTitle("Internet radio");      
+#endif
 }
 
 /*
@@ -137,21 +161,27 @@
  */
 void IRNowPlayingView::initMenu()
 {
-#ifdef SONGRECOGNITION_ENABLED  
-    if(IRQUtility::identifySongAvailable())
+    LOG_METHOD;
+    if (iApplication->getSettings()->getIdentifySongEnabled())
     {
-        LOG("Song Recognition is Available");
-        iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, NOW_PLAYING_VIEW_SONG_RECOG_YES_SEC);
+        int songRecognitionAppUid = iApplication->getSettings()->getSongRecognitionAppUid();
+        if(IRQUtility::findAppByUid(songRecognitionAppUid))
+        {
+            LOG("Song Recognition is Available");
+            iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, NOW_PLAYING_VIEW_SONG_RECOG_YES_SEC);
+        }
+        else
+        {
+            LOG("Song Recognition is NOT Available");
+            iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, NOW_PLAYING_VIEW_SONG_RECOG_NO_SEC);
+        }
     }
     else
     {
-        LOG("Song Recognition is NOT Available");
+        LOG("Song Recognition is Disabled");
         iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, NOW_PLAYING_VIEW_SONG_RECOG_NO_SEC);
     }
-#else
-    LOG("Song Recognition is Disabled");
-    iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, NOW_PLAYING_VIEW_SONG_RECOG_NO_SEC);
-#endif    
+    
     HbAction *openWebAddressAction = qobject_cast<HbAction *> (iLoader.findObject(GO_TO_STATION_ACTION));
     HbAction *shareStationAction = qobject_cast<HbAction *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_SHARE_STATION_ACTION));
     HbAction *settings = qobject_cast<HbAction *> (iLoader.findObject(SETTINGS_ACTION));
@@ -163,6 +193,16 @@
     connect(settings, SIGNAL(triggered()), this, SLOT(handleSettingAction()));
     connect(exitAction, SIGNAL(triggered()), iApplication, SIGNAL(quit()));  
     connect(songRecAction, SIGNAL(triggered()), this, SLOT(handleIdentifySongAction()));    
+    
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+    HbAction *dummySongIdentifyAction = menu()->addAction("Dummy Identify Song");
+    HbAction *dummyGoToNmsAction = menu()->addAction("Dummy Go to Music Store");
+    HbAction *dummyFindInNmsAction = menu()->addAction("Dummy Find in Music Store");
+    
+    connect(dummySongIdentifyAction, SIGNAL(triggered()), this, SLOT(handleDummySongIdentify()));   
+    connect(dummyGoToNmsAction, SIGNAL(triggered()), this, SLOT(handleDummyGoToNms()));
+    connect(dummyFindInNmsAction, SIGNAL(triggered()), this, SLOT(handleDummyFindInNms()));    
+#endif
 }
 
 /*
@@ -170,6 +210,7 @@
  */
 void IRNowPlayingView::initToolBar()
 {
+    LOG_METHOD;
     HbAction *musicStoreAction = qobject_cast<HbAction *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_MUSICSTORE));
     iPlayStopAction = qobject_cast<HbAction *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_PLAYSTOP));
     HbAction *add2FavAction = qobject_cast<HbAction *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_ADDTOFAV));
@@ -179,26 +220,27 @@
     connect(iPlayStopAction, SIGNAL(triggered()), this, SLOT(handlePlayStopAction()));
     connect(add2FavAction, SIGNAL(triggered()), this, SLOT(handleAddToFavAction()));
     connect(flipAction, SIGNAL(triggered()), this, SLOT(handleDetailInfoAction()));
-    
-    //could be removed after toolbar issue is ok
-    HbToolBar *viewToolBar = toolBar();
-    viewToolBar->addAction(musicStoreAction);
-    viewToolBar->addAction(iPlayStopAction);
-    viewToolBar->addAction(add2FavAction);
-    viewToolBar->addAction(flipAction);
 }
 
 void IRNowPlayingView::initWidget()
 {
+    LOG_METHOD;
     iStationLogo = qobject_cast<HbLabel *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_STATION_LOGO));
-    iSongName = qobject_cast<HbLabel *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_SONG_NAME));
+    iSongNameLabel = qobject_cast<HbLabel *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_SONG_NAME_LABEL));
+    iSongNameMarquee = qobject_cast<HbMarqueeItem *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_SONG_NAME_MARQUEE));
+    iSongNameMarquee->setLoopCount(-1);
     iArtistName = qobject_cast<HbLabel *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_ARTIST_NAME));
     iStationName = qobject_cast<HbLabel *> (iLoader.findObject(NOW_PLAYING_VIEW_OBJECT_STATION_NAME));   
     iStationLogo->setIcon(HbIcon(KDefaultStationLogo));   
     iStationName->setPlainText("");
-    iSongName->setPlainText("");
+    updateSongName(QString(""));
     iArtistName->setPlainText("");    
     
+    iArtistName->setTextColor(HbColorScheme::color(KArtistColor));
+    iSongNameLabel->setTextColor(HbColorScheme::color(KSongColor));
+    iSongNameMarquee->setTextColor(HbColorScheme::color(KSongColor));
+    iStationName->setTextColor(HbColorScheme::color(KStationColor));
+    
 #ifdef NOWPLAYING_VIEW_OPTION_B
 	HbWidget * viewContainer = qobject_cast<HbWidget *> (iLoader.findObject(VIEW_CONTAINER));
     HbFrameDrawer* drawer = new HbFrameDrawer(KLcdGraphics, HbFrameDrawer::NinePieces);
@@ -220,6 +262,7 @@
  */
 void IRNowPlayingView::updateWidgets()
 {
+    LOG_METHOD;
     if (iLaunchActionNeeded) // if lunch as starting view, leave the update action to launchAction()
     {
         return;
@@ -232,8 +275,36 @@
     loadStationLogo();
 }
 
+void IRNowPlayingView::updateSongName(const QString &aSongName)
+{
+    LOG_METHOD;
+    iSongNameMarquee->stopAnimation();	
+    iSongNameLabel->hide();
+    iSongNameMarquee->hide();
+    
+    iSongNameLabel->setPlainText(aSongName);
+    iSongNameMarquee->setText(aSongName);
+        
+    QFontMetricsF metrics(iSongNameLabel->font());
+    LOG_FORMAT("song name = %s, song name length = %f, label width = %f",
+                STRING2CHAR(aSongName), 
+                metrics.boundingRect(aSongName).width(),
+                iSongNameLabel->contentsRect().width()
+                );
+    if (metrics.boundingRect(aSongName).width() > iSongNameLabel->contentsRect().width())
+    {
+        iSongNameMarquee->show();
+        iSongNameMarquee->startAnimation();
+    }
+    else
+    {
+        iSongNameLabel->show();
+    }
+}
+
 void IRNowPlayingView::updateMusicStoreStatus()
 {
+    LOG_METHOD;
     IRQPreset *preset = iPlayController->getNowPlayingPreset();
     if(preset && (0 == preset->musicStoreStatus.compare("yes",Qt::CaseInsensitive)))
     {
@@ -251,6 +322,7 @@
  */
 void IRNowPlayingView::updateStationLogo()
 {    
+    LOG_METHOD;
     if( !iLogoNeedUpdate
         || iLogoDownloadState != EIdle )
     {
@@ -287,6 +359,7 @@
  */
 void IRNowPlayingView::updateAdvImage()
 {
+    LOG_METHOD;
     if( !iAdvImageNeedUpdate
         || iLogoDownloadState != EIdle )
     {
@@ -321,6 +394,8 @@
  */
 TIRHandleResult IRNowPlayingView::handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason)
 {
+    LOG_METHOD;
+	LOG_FORMAT("aCommand = %d", (int)aCommand);
     if (!initCompleted())
     {
         return EIR_NoDefault;
@@ -366,18 +441,28 @@
  */
 void IRNowPlayingView::launchAction()
 {      
+    LOG_METHOD;
     setUseNetworkReason(EIR_UseNetwork_StartingView);
     updateForLauchAction();
 #ifdef HS_WIDGET_ENABLED	
     iPlayController->setConnectingStationName(iStationName->plainText());
 #endif	
     iApplication->verifyNetworkConnectivity();
-    getViewManager()->pushViewById(EIRView_MainView);
+    if( iApplication->isEmbeddedInstance())
+    {
+        getViewManager()->pushViewById(EIRView_PlsView);        
+    }
+    else
+    {
+        getViewManager()->pushViewById(EIRView_MainView);         
+    }
+    
     iLaunchActionNeeded = false;
 }
 
 void IRNowPlayingView::lazyInit()
 {
+    LOG_METHOD;
     iLaunchActionNeeded = true;
     
     if (!initCompleted())
@@ -387,11 +472,14 @@
         //initization from handleCommand()
         handleCommand(EIR_ViewCommand_TOBEACTIVATED, EIR_ViewCommandReason_Show);
         handleCommand(EIR_ViewCommand_ACTIVATED, EIR_ViewCommandReason_Show);
+        
+        emit applicationReady();
     }
 }
 
 void IRNowPlayingView::normalInit()
 {
+    LOG_METHOD;
     if (!initCompleted())
     {
         IRBaseView::lazyInit();
@@ -417,6 +505,7 @@
 
 void IRNowPlayingView::updateForLauchAction()
 {
+    LOG_METHOD;
     //nowplaying view as starting view can have two cases : one is for last played station, the other is for 
     //the only one item in play list file    
     IRPlayList *playList = iApplication->getPlayList();
@@ -440,16 +529,19 @@
     else
     {
         IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();
-        IRQPreset *lastPreset = lastPlayedStationInfo->getLastPlayedStation();
-        if (lastPreset)
+        if( lastPlayedStationInfo )
         {
-            iStationName->setPlainText(lastPreset->name); 
-            iFindinNmsAllowed = (0 == lastPreset->musicStoreStatus.compare("yes",Qt::CaseInsensitive));
-        }
-        else
-        {
-            iStationName->setPlainText(QString("")); 
-            iFindinNmsAllowed = false;
+            IRQPreset *lastPreset = lastPlayedStationInfo->getLastPlayedStation();
+            if (lastPreset)
+            {
+                iStationName->setPlainText(lastPreset->name); 
+                iFindinNmsAllowed = (0 == lastPreset->musicStoreStatus.compare("yes",Qt::CaseInsensitive));
+            }
+            else
+            {
+                iStationName->setPlainText(QString("")); 
+                iFindinNmsAllowed = false;
+            }             
         }
         loadStationLogo();
     }
@@ -461,6 +553,7 @@
  */
 void IRNowPlayingView::handleLogoDownloaded(IRQPreset* aPreset)
 {
+    LOG_METHOD;
     if( EIdle == iLogoDownloadState )
     {        
         return;
@@ -548,6 +641,8 @@
  */
 void IRNowPlayingView::handleNetworkEvent(IRQNetworkEvent aEvent)
 {
+    LOG_METHOD;
+	LOG_FORMAT("aEvent = %d", (int)aEvent );
     if( this != getViewManager()->currentView() )
     {
         return;
@@ -568,12 +663,16 @@
                 }
                 else
                 {
-                    IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();
-                    IRQPreset *lastPreset = lastPlayedStationInfo->getLastPlayedStation();
-                    if (lastPreset)
+                    IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();                    
+                    if( lastPlayedStationInfo )
                     {
-                        iPlayController->connectToChannel( lastPreset, lastPlayedStationInfo->connectedFrom() );
-                    }
+                        IRQPreset *lastPreset = NULL;
+                        lastPreset = lastPlayedStationInfo->getLastPlayedStation();
+						if (lastPreset)
+                        {
+                            iPlayController->connectToChannel( lastPreset, lastPlayedStationInfo->connectedFrom() );
+                        }
+                    }                    
                 }
             }
             else if( EIR_UseNetwork_PlayStation == getUseNetworkReason() )
@@ -596,14 +695,23 @@
 
 void IRNowPlayingView::handleOrientationChanged(Qt::Orientation aOrientation)
 {
+    LOG_METHOD;
+    
     if (aOrientation == Qt::Vertical)
-    {
+    {   
+        LOG("load portrait layout");
         iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, PORTRAIT_SEC);
     }
     else
     {
+        LOG("load landscape layout");
         iLoader.load(NOW_PLAYING_VIEW_LAYOUT_FILENAME, LANDSCAPE_SEC);      
     }
+    // re-load only update the size of the widget, the rect of the widget will get updated only after re-layout.
+    updateGeometry();
+    QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
+    // re-select between label and marquee.
+    updateSongName(iSongNameLabel->plainText());
 }
 
 /********************************************************************************************************
@@ -612,23 +720,26 @@
  */
 void IRNowPlayingView::handlePlayStarted()
 {
+    LOG_METHOD;
     iPlayStopAction->setIcon(HbIcon(KStopButtonIcon));
 }
 
 void IRNowPlayingView::handlePlayStopped()
 {
+    LOG_METHOD;
     iPlayStopAction->setIcon(HbIcon(KPlayButtonIcon));
-    iSongName->setPlainText("");
+    updateSongName(QString(""));
     iArtistName->setPlainText("");
     iSongNameAvailable = false;
 }
 
 void IRNowPlayingView::updateMetaData(IRQMetaData* aMetaData)
 {
+    LOG_METHOD;
     iSongNameAvailable = false;
     if(aMetaData)
     {
-        iSongName->setPlainText(aMetaData->getSongName());
+        updateSongName(aMetaData->getSongName());
         iArtistName->setPlainText(aMetaData->getArtistName());
         if(!aMetaData->getSongName().isEmpty() ||
            !aMetaData->getArtistName().isEmpty())
@@ -638,7 +749,7 @@
     }
     else
     {
-        iSongName->setPlainText("");
+        updateSongName(QString(""));
         iArtistName->setPlainText("");  
     }
 }
@@ -649,11 +760,13 @@
  */
 void IRNowPlayingView::handlePlayPauseMediaKey()
 {
+    LOG_METHOD;
     iPlayController->resume();
 }
 
 void IRNowPlayingView::handleStopMediaKey()
 {
+    LOG_METHOD;
     iPlayController->stop(EIRQUserTerminated);
 }
 
@@ -663,33 +776,39 @@
  */
 void IRNowPlayingView::handleMusicStoreAction()
 {
+    LOG_METHOD;
     if(!iFindinNmsAllowed)
     {
 #ifdef SUBTITLE_STR_BY_LOCID
         popupNote(hbTrId("txt_irad_info_not_allowed_by_this_station"), HbMessageBox::MessageTypeInformation);
 #else
-        popupNote(hbTrId("Not allowed by this station"), HbMessageBox::MessageTypeInformation);        
+        popupNote(hbTrId("Not allowed by station"), HbMessageBox::MessageTypeInformation);        
 #endif
         return;        
     }
     
     if(!iSongNameAvailable)
     {
+#ifdef SUBTITLE_STR_BY_LOCID
         popupNote(hbTrId("txt_irad_info_no_song_info"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("No song info"), HbMessageBox::MessageTypeInformation);        
+#endif        
         return;        
     }
     
-    // Need to log the find song in NMS event, iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRFind,channelId); 
+    // Need to log the find song in NMS event, iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,channelId); 
 #ifdef SUBTITLE_STR_BY_LOCID
     popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
 #else
-    popupNote(hbTrId("Music store not available"), HbMessageBox::MessageTypeInformation);    
+    popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
 #endif
 }
 
 void IRNowPlayingView::handleIdentifySongAction()
 {
-    if(IRQUtility::openSongRecognition())
+    LOG_METHOD;
+    if(IRQUtility::launchAppByUid(iSettings->getSongRecognitionAppUid()))
     {
         iStatisticsReporter->logSongRecogEvent();
     }
@@ -698,6 +817,7 @@
 
 void IRNowPlayingView::handlePlayStopAction()
 {
+    LOG_METHOD;
     switch (iPlayController->state())
     {
         case IRPlayController::EPlaying:
@@ -726,6 +846,7 @@
 
 void IRNowPlayingView::handleAddToFavAction()
 {
+    LOG_METHOD;
     IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset();
     int retValue = iFavorites->addPreset(*nowPlayingPreset);
     HbNotificationDialog *add2FavNote = new HbNotificationDialog();
@@ -771,6 +892,7 @@
 
 void IRNowPlayingView::handleDetailInfoAction()
 {
+    LOG_METHOD;
     getViewManager()->activateView(EIRView_StationDetailsView);
     IRStationDetailsView *channelHistoryView = static_cast<IRStationDetailsView*>(getViewManager()->getView(EIRView_StationDetailsView));
     channelHistoryView->setDetails();
@@ -783,11 +905,13 @@
  */
 void IRNowPlayingView::handleGoToStationAction()
 {
+    LOG_METHOD;
     getViewManager()->activateView(EIRView_OpenWebAddressView);
 }
 
 void IRNowPlayingView::handleShareStationAction()
 {
+    LOG_METHOD;
     if (NULL == iStationShare)
     {
         iStationShare = new IRStationShare();
@@ -797,12 +921,14 @@
 
 void IRNowPlayingView::handleSettingAction()
 {
+    LOG_METHOD_ENTER;
     getViewManager()->activateView(EIRView_SettingsView);
 }
 
 #ifdef ADV_ENABLED
 void IRNowPlayingView::mousePressEvent(QGraphicsSceneMouseEvent *aEvent)
 {
+    LOG_METHOD_ENTER;
     QRectF advRect = iAdvImage->geometry();
     QPointF pos = aEvent->pos();
     
@@ -814,12 +940,35 @@
 
 void IRNowPlayingView::openAdvLink()
 {
+    LOG_METHOD_ENTER;
     IRQUtility::openAdvLink(iAdvUrl);
 }
 #endif
 
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+void IRNowPlayingView::handleDummySongIdentify()
+{
+    iStatisticsReporter->logSongRecogEvent();   
+    popupNote("Identify Song ...", HbMessageBox::MessageTypeInformation);
+}
+
+void IRNowPlayingView::handleDummyGoToNms()
+{
+    iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,iPlayController->getNowPlayingPreset()->presetId);     
+    popupNote("Go to Music Store ...", HbMessageBox::MessageTypeInformation);
+}
+
+void IRNowPlayingView::handleDummyFindInNms()
+{
+    iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,iPlayController->getNowPlayingPreset()->presetId);  
+    popupNote("Find in Music Store ...", HbMessageBox::MessageTypeInformation);
+}
+
+#endif
+    
 void IRNowPlayingView::loadStationLogo()
 {
+    LOG_METHOD;
     if (iPlayController->isStationLogoAvailable())    
     { 
         QSettings settings(KIrSettingOrganization, KIrSettingApplication);
@@ -852,8 +1001,27 @@
 
 void saveStationLogo(const QPixmap &aStationLogo)
 {
+    LOG_METHOD_ENTER;
     QSettings settings(KIrSettingOrganization, KIrSettingApplication);
     QVariant logoData(QVariant::Pixmap);
     logoData.setValue(aStationLogo);
     settings.setValue(KIrSettingStationLogo,logoData);    
 }
+//Implemented to receive theme change event
+//@param QEvent, The change events to be received  
+//
+void IRNowPlayingView::changeEvent(QEvent *event)
+{
+    if (HbEvent::ThemeChanged == event->type())
+    {
+        // get the text color from theme and 
+        // set it to corresponding labels
+        iArtistName->setTextColor(HbColorScheme::color(KArtistColor));
+        iSongNameLabel->setTextColor(HbColorScheme::color(KSongColor));
+        iSongNameMarquee->setTextColor(HbColorScheme::color(KSongColor));
+        iStationName->setTextColor(HbColorScheme::color(KStationColor));
+          
+    }
+    
+    HbWidget::changeEvent(event);
+}
--- a/qtinternetradio/ui/src/iropenwebaddressview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/iropenwebaddressview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -23,6 +23,8 @@
 #include <hblineedit.h>
 #include <hbstyleloader.h>
 #include <hbaction.h>
+#include <qinputcontext.h>
+#include <qapplication.h>
 
 #include "irviewmanager.h"
 #include "irapplication.h"
@@ -35,6 +37,8 @@
 #include "iruidefines.h"
 #include "irqsettings.h"
 static const int MAX_URL_CHARACTOR_NUMBER = 255;
+static const int MAX_DATA_FORM_NUMBER_ROWS = 4;
+static const int MIN_DATA_FORM_NUMBER_ROWS = 1;
 
 IROpenWebAddressView::IROpenWebAddressView(IRApplication* aApplication, TIRViewId aViewId) :
     IRBaseView(aApplication, aViewId),
@@ -49,9 +53,9 @@
     IRBaseView::lazyInit();
     setInitCompleted(true);
     
-    // TODO: te be deleted if there's no difference between the landscape and portrait.
-//    connect( getViewManager(), SIGNAL( orientationChanged(Qt::Orientation) ),
-//             this, SLOT( handleOrientationChanged(Qt::Orientation) ) );
+    // Listen to the orientation change event
+    connect( getViewManager(), SIGNAL( orientationChanged(Qt::Orientation) ),
+             this, SLOT( handleOrientationChanged(Qt::Orientation) ) );
     
     // Create widget hierarchy
     setObjectName(OPEN_WEB_ADDRESS_VIEW_OBJECT_VIEW);
@@ -78,7 +82,7 @@
     // destruct this class.
     iSettings = IRQSettings::openInstance();
 
-    // Install event filter
+    // Install event filter for Name
     QModelIndex index = iModel->indexFromItem(iName);
     HbAbstractViewItem* viewItem = iForm->itemByIndex(index);
     HbDataFormViewItem* dataformviewitem = static_cast<HbDataFormViewItem *>(viewItem);
@@ -86,6 +90,14 @@
     iNameEditorPtr = static_cast<HbLineEdit *>(widget);
     iNameEditorPtr->installEventFilter(this);
 
+    //Install event filter for URL 
+    QModelIndex indexUrl = iModel->indexFromItem(iUrl);
+    HbAbstractViewItem* viewItemUrl = iForm->itemByIndex(indexUrl);
+    HbDataFormViewItem* dataformviewitemUrl = static_cast<HbDataFormViewItem *>(viewItemUrl);
+    HbWidget *widgetUrl = dataformviewitemUrl->dataItemContentWidget();
+    iUrlEditorPtr = static_cast<HbLineEdit *>(widgetUrl);
+    iUrlEditorPtr->installEventFilter(this);
+    
     // Find the play button objects
     iPlayButton = qobject_cast<HbPushButton *>(iLoader.findObject(OPEN_WEB_ADDRESS_VIEW_OBJECT_PLAY_BUTTON));
     connect(iPlayButton, SIGNAL(released()), this, SLOT(play()));
@@ -212,6 +224,10 @@
     iUrl = new HbDataFormModelItem(HbDataFormModelItem::TextItem, hbTrId("Station address"));
 #endif     
     iUrl->setContentWidgetData("maxLength",MAX_URL_CHARACTOR_NUMBER);
+    if (Qt::Horizontal == getViewManager()->orientation())
+    {
+        iUrl->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);
+    }    
     iModel->appendDataFormItem(iUrl);
 
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -222,6 +238,10 @@
             HbDataFormModelItem::TextItem, hbTrId("Station name"));    
 #endif
     iName->setContentWidgetData("maxLength", MAX_URL_CHARACTOR_NUMBER);
+    if (Qt::Horizontal == getViewManager()->orientation())
+    {
+        iName->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);
+    }       
     iModel->appendDataFormItem(iName);
 
     iForm->addConnection(iUrl, SIGNAL(textChanged(const QString&)),
@@ -233,6 +253,8 @@
  */
 void IROpenWebAddressView::play()
 {
+    hideVkb();
+    
     // Create a IRQPreset using the inputted information
     IRQPreset preset;
 
@@ -351,10 +373,14 @@
     if (aOrientation == Qt::Vertical)
     {
         iLoader.load(OPEN_WEB_ADDRESS_VIEW_LAYOUT_FILENAME, "portrait");
+        iUrl->setContentWidgetData("maxRows", MAX_DATA_FORM_NUMBER_ROWS);
+        iName->setContentWidgetData("maxRows", MAX_DATA_FORM_NUMBER_ROWS);        
     }
     else
     {
         iLoader.load(OPEN_WEB_ADDRESS_VIEW_LAYOUT_FILENAME, "landscape");
+        iUrl->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);        
+        iName->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);            
     }
 }
 
@@ -377,5 +403,21 @@
             iName->setContentWidgetData(QString("text"), QString(""));
         }
     }
+    else if( (object == iUrlEditorPtr || object == iNameEditorPtr)
+        && event->type() == QEvent::FocusOut )
+    {
+        hideVkb();
+    }
+    
     return false;
 }
+void IROpenWebAddressView::hideVkb()
+{
+    QInputContext *ic = qApp->inputContext(); 
+    if (ic)
+    {
+        QEvent *event = new QEvent(QEvent::CloseSoftwareInputPanel);
+        ic->filterEvent(event);
+        delete event;
+    }
+}
--- a/qtinternetradio/ui/src/irplaycontroller.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irplaycontroller.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -104,7 +104,7 @@
     iStationLogoAvailable(false),
     iStationLogoAvailableBackup(false),
     iMetaData(NULL),
-    iSongHistoryEngine(IRQSongHistoryEngine::openInstance()),
+    iSongHistoryEngine(NULL),
     iPlayState(EIdle),
     iResuming(false),
     iTryingBitrate(0),
@@ -116,7 +116,12 @@
 {
     // use the last played station to initiliaze the backup value.
     // can regard the player is bootup, and initilize its LCD screen with last played station info if available.
-    IRQPreset *lastPlayedPreset = iApplication->getLastPlayedStationInfo()->getLastPlayedStation();
+    IRQPreset *lastPlayedPreset = NULL;
+    if( !iApplication->isEmbeddedInstance() )
+    {
+        lastPlayedPreset = iApplication->getLastPlayedStationInfo()->getLastPlayedStation();        
+    }
+    
     if (lastPlayedPreset)
     {
         *iNowPlayingPreset      =   *lastPlayedPreset;
@@ -136,6 +141,11 @@
     
     connectSignalSlot(); 
     iStatisticsReporter = IRQStatisticsReporter::openInstance();
+	
+	if( !iApplication->isEmbeddedInstance() )
+    {
+        iSongHistoryEngine = IRQSongHistoryEngine::openInstance();
+    }
 }
 
 /*
@@ -240,7 +250,7 @@
     {
         firstTryUrl = iUrlArray->at(0);
 #ifdef Q_CC_NOKIAX86
-        firstTryUrl = "http://172.28.182.59:8000";
+        firstTryUrl = "http://172.28.205.171:8000";
         getRadioServerAddress(firstTryUrl);
 #endif
     }
@@ -294,6 +304,12 @@
 
 #ifdef HS_WIDGET_ENABLED			
         case EConnecting:     
+            iStopReason = aStopReason;
+            if (iMediaPlayer)
+            {
+                iMediaPlayer->disableStereoEffect();
+                iMediaPlayer->stop(); 
+            }            
             // No need to restore because when connecting occurs, because the connectToChannel() has NOT been invoked yet. 
             // Only need to reset the player state                  
             if (iNowPlayingPreset->getChannelURLCount())
@@ -305,8 +321,6 @@
                 iPlayState = EIdle;
             }
             
-            iStopReason = aStopReason;  
-            
             // Only need to restore the station logo flag since we may force it to be false when connecting started.   
             // force logo to be default when current view is NOT nowplaying view && is not resuming (start playing a different station.) 
             if (EIRView_PlayingView != iApplication->getViewManager()->currentViewId()
@@ -620,7 +634,11 @@
 
         if (iResuming)
         {
-            HbMessageBox::information(tr("Connecting failed, try next URL"), (QObject*)NULL, NULL);
+#ifdef SUBTITLE_STR_BY_LOCID
+            HbMessageBox::information(hbTrId("txt_irad_connecting_failed_try_next_address"), (QObject*)NULL, NULL, HbMessageBox::Ok);
+#else
+            HbMessageBox::information("Connecting failed, try next URL", (QObject*)NULL, NULL, HbMessageBox::Ok);
+#endif
             connectToChannel(iNowPlayingPreset,iConnectedFrom);
             iResuming = false;
             return;
@@ -681,11 +699,13 @@
         iApplication->stopLoadingAnimation();
 
         iApplication->getViewManager()->activateView(EIRView_PlayingView);
-
-        //update last played station
-        IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();
-        lastPlayedStationInfo->updateLastPlayedStation(iNowPlayingPreset,iConnectedFrom);
-        lastPlayedStationInfo->commitLastPlayedStation();
+        if( !iApplication->isEmbeddedInstance() )
+        {
+            //update last played station
+            IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();
+            lastPlayedStationInfo->updateLastPlayedStation(iNowPlayingPreset,iConnectedFrom);
+            lastPlayedStationInfo->commitLastPlayedStation();
+        }        
 
         //increase the played times of current preset
         iApplication->getFavoritesDB()->increasePlayedTimes(*iNowPlayingPreset);
@@ -694,12 +714,16 @@
 
         // if the metadata is available, show it.
         emit metaDataAvailable(iMetaData);
+        
+        if( !iApplication->isEmbeddedInstance() )
+        {
+            // Save the station information to database
+            IRQMetaData tmpMetaData;
+            tmpMetaData.setBitrate(iRealBitrate);
+            tmpMetaData.setStreamUrl(iLastPlayedUrl);
+            iSongHistoryEngine->handleMetaDataReceived(tmpMetaData, *iNowPlayingPreset);            
+        }
 
-        // Save the station information to database
-        IRQMetaData tmpMetaData;
-        tmpMetaData.setBitrate(iRealBitrate);
-        tmpMetaData.setStreamUrl(iLastPlayedUrl);
-        iSongHistoryEngine->handleMetaDataReceived(tmpMetaData, *iNowPlayingPreset);
         // open stereo defaultly
         iMediaPlayer->enableStereoEffect();
     }
@@ -781,8 +805,12 @@
     connect(iMediaPlayer, SIGNAL(errorOccured(IRQError)), this, SLOT(errorOccured(IRQError)));
     connect(iMediaPlayer, SIGNAL(percentageBuffered(int)), this, SLOT(updateProgress(int)));
     connect(iMediaPlayer, SIGNAL(volumeExpected(int&)), this, SLOT(fetchVolume(int&)));
-    connect(iMediaPlayer, SIGNAL(metaDataReceived(IRQMetaData&)),
-            this, SLOT(handleMetaDataReceived(IRQMetaData&)));
+    
+    if( !iApplication->isEmbeddedInstance() )
+    {
+        connect(iMediaPlayer, SIGNAL(metaDataReceived(IRQMetaData&)),
+                this, SLOT(handleMetaDataReceived(IRQMetaData&)));        
+    } 
 }
 
 /*
@@ -829,10 +857,17 @@
             
             if(tryingContinue)
             {
-                HbMessageBox::information(tr("Connecting failed, try next URL"), (QObject*)NULL, NULL); 
+#ifdef SUBTITLE_STR_BY_LOCID
+                HbMessageBox::information(hbTrId("txt_irad_connecting_failed_try_next_address"), (QObject*)NULL, NULL, HbMessageBox::Ok);
+#else
+                HbMessageBox::information("Connecting failed, try next URL", (QObject*)NULL, NULL, HbMessageBox::Ok);
+#endif                 
                 delete iUrlArray;
                 iUrlArray = iNowPlayingPreset->getURLsForBitrate(iTryingBitrate);
                 iLastPlayedUrl = iUrlArray->at(0);
+                // Set the status to EStopped because it didn't start to play at all and need not to 
+                // do stop action.
+                iPlayState = EStopped;
                 doPlay(iLastPlayedUrl);
                 return true;
             }
@@ -841,10 +876,17 @@
     }
     else // try next url in iUrlArray
     {
+#ifdef SUBTITLE_STR_BY_LOCID
+        HbMessageBox::information(hbTrId("txt_irad_connecting_failed_try_next_address"), (QObject*)NULL, NULL, HbMessageBox::Ok);
+#else
+        HbMessageBox::information("Connecting failed, try next URL", (QObject*)NULL, NULL, HbMessageBox::Ok);
+#endif   
         iLastPlayedUrl = iUrlArray->at(0);
+        // Set the status to EStopped because it didn't start to play at all and need not to 
+        // do stop action. 
+        iPlayState = EStopped;
         doPlay(iLastPlayedUrl);
 
-        HbMessageBox::information(tr("Connecting failed, try next URL"), (QObject*)NULL, NULL);
         return true;
     }
     
@@ -854,7 +896,7 @@
 /*
  * Description : complete the play action
  */
-void IRPlayController::doPlay(const QString& aUrl)
+void IRPlayController::doPlay(const QString aUrl)
 {
     // stop player, disable stereo effect, emit playstopped signal 
     stop(EIRQUserTerminated);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/src/irplayingbanner.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* 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 <HbTapGesture>
+#include <HbEvent>
+#include <HbLabel>
+#include <HbMarqueeItem>
+#include <HbColorScheme>
+#include <QGraphicsLayout>
+
+#include "irplayingbanner.h"
+#include "iruidefines.h"
+
+IRPlayingBanner::IRPlayingBanner() : iStationName(NULL), iArtistSongName(NULL)
+{
+    grabGesture(Qt::TapGesture);
+}
+
+void IRPlayingBanner::gestureEvent(QGestureEvent *aEvent)
+{
+    HbTapGesture *tapGesture = qobject_cast<HbTapGesture *>(aEvent->gesture(Qt::TapGesture));
+    if (!tapGesture)
+    {
+        return;
+    }
+    
+    if (Qt::GestureStarted == tapGesture->state())
+    {
+        setPlayingBannerTextColor(KNowPlayingBannerColorPressed);
+    }
+    else if (Qt::GestureFinished == tapGesture->state())
+    {
+        setPlayingBannerTextColor(KNowPlayingBannerColorNormal);
+        emit playingBannerTapFinished();
+    }
+    else if (Qt::GestureCanceled == tapGesture->state())
+    {
+        setPlayingBannerTextColor(KNowPlayingBannerColorNormal);
+    }
+}
+
+void IRPlayingBanner::changeEvent(QEvent *event)
+{
+    if (HbEvent::ThemeChanged == event->type())
+    {
+        setPlayingBannerTextColor(KNowPlayingBannerColorNormal);
+    }
+    
+    HbWidget::changeEvent(event);
+}
+
+void IRPlayingBanner::setPlayingBannerTextColor(const QString &aColor)
+{
+    init();
+    QColor color = HbColorScheme::color(aColor);
+    iStationName->setTextColor(color);
+    iArtistSongName->setTextColor(color);
+}
+
+void IRPlayingBanner::init()
+{
+    if (iStationName && iArtistSongName)
+    {
+        return;
+    }
+
+    int max = layout()->count();
+    for (int i = 0; i < max; i++)
+    {
+        QObject *obj = dynamic_cast<QObject *>(layout()->itemAt(i));
+        if (obj->objectName() == ABSTRACT_LIST_VIEW_BASE_OBJECT_STATIONNAME)
+        {
+            iStationName =  static_cast<HbLabel *>(obj);
+        }
+        else if (obj->objectName() == ABSTRACT_LIST_VIEW_BASE_OBJECT_ARTISTSONGNAME)
+        {
+            iArtistSongName = static_cast<HbMarqueeItem *>(obj);;
+        }
+    }
+}
--- a/qtinternetradio/ui/src/irplsview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irplsview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -36,6 +36,7 @@
     //this view won't be starting view, don't need lazy init
     IrAbstractListViewBase::lazyInit();
     setInitCompleted(true);
+    setFlag(EViewFlag_ClearStackWhenActivate);
     
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
             this, SLOT(networkRequestNotified(IRQNetworkEvent)));
@@ -121,10 +122,6 @@
     connect(contextMenu, SIGNAL(triggered(HbAction*)), this, SLOT(actionClicked(HbAction*)));
 }
 
-void IRPlsView::launchAction()
-{
-    getViewManager()->pushViewById(EIRView_MainView);
-}
 
 void IRPlsView::actionClicked(HbAction *aAction)
 {
--- a/qtinternetradio/ui/src/irsearchchannelsview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irsearchchannelsview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -26,6 +26,8 @@
 #include <hblabel.h> 
 #include <hbiconanimationmanager.h>
 #include <HbGroupBox>
+#include <qinputcontext.h>
+#include <qapplication.h>
 
 #include "irsearchchannelsview.h"
 #include "iruidefines.h"
@@ -36,6 +38,8 @@
 #include "irchannelmodel.h"
 #include "irqisdsdatastructure.h"
 #include "irplaycontroller.h"
+#include "irqlogger.h"
+#include "irqsettings.h"
  
 const uint KBitmapSize = 59;
 
@@ -45,6 +49,8 @@
         iChannelModel(NULL),iPreset(NULL),iLogoPreset(NULL),
         iConvertTimer(NULL) 
 {
+    LOG_METHOD;
+    iSettings = IRQSettings::openInstance();    
     //if this view is not starting view, finish all initialization in constructor
     if (getViewManager()->views().count() > 0)
     {
@@ -57,6 +63,7 @@
 
 void IRSearchChannelsView::lazyInit()
 {
+    LOG_METHOD;
     if (!initCompleted())
     {
         normalInit();                     
@@ -65,6 +72,7 @@
 
 void IRSearchChannelsView::normalInit()
 {
+    LOG_METHOD;
     if (!initCompleted())
     { 
         IRBaseView::lazyInit();
@@ -79,6 +87,7 @@
 
 void IRSearchChannelsView::initMenu()
 {
+    LOG_METHOD;
     HbMenu *viewMenu = menu();
     QObject *exitAction = iLoader.findObject(EXIT_ACTION);
     connect(exitAction, SIGNAL(triggered()), iApplication, SIGNAL(quit()));
@@ -86,6 +95,7 @@
 
 void IRSearchChannelsView::initTimer()
 {     
+    LOG_METHOD;
     iConvertTimer = new QTimer(this);
     iConvertTimer->setInterval(10); 
     
@@ -96,6 +106,14 @@
 
 IRSearchChannelsView::~IRSearchChannelsView()
 {   
+    LOG_METHOD;
+    
+    if (iSettings)
+    {
+        iSettings->setSearchText(iKeyText);
+        iSettings->closeInstance();
+    }    
+    
     if( iPreset != NULL )
     {
         delete iPreset;
@@ -117,6 +135,7 @@
 
 void IRSearchChannelsView::loadLayout()
 {
+    LOG_METHOD;
     // Create widget hierarchy
     setObjectName( SEARCH_CHANNELS_VIEW_OBJECT_VIEW );
     // List existing root elements - this allows us to refer to objects in the XML 
@@ -127,7 +146,11 @@
     iLoader.load(SEARCH_CHANNELS_VIEW_LAYOUT_FILENAME);   
     
     iSearchPanelWidget = qobject_cast<HbSearchPanel *>(iLoader.findWidget(SEARCH_CHANNELS_VIEW_SEARCHPANEL_WIDGET));    
-    
+    QString searchText;
+    iSettings->getSearchText(searchText);
+    iKeyText = searchText;
+    iSearchPanelWidget->setCriteria(searchText);
+   
     iListView = qobject_cast<HbListView *>(iLoader.findWidget(SEARCH_CHANNELS_VIEW_SEARCHLISTVIEW_WIDGET));   
     iListView->setFlag(ItemIsFocusable);
     HbScrollBar *scrollbar = iListView->verticalScrollBar();
@@ -137,11 +160,23 @@
     
     iChannelModel = new IrChannelModel(this);
     iChannelModel->initWithCache();
-    iListView->setModel(iChannelModel);     
+    iListView->setModel(iChannelModel);
+    scrollbar->setValue(0.0);    
+    
+    iListView->installEventFilter(this);
+          
+#ifdef SUBTITLE_STR_BY_LOCID
+    setTitle(hbTrId("txt_irad_title_internet_radio"));
+         
+#else
+    setTitle("Internet radio");      
+#endif
+
 }
 
 void IRSearchChannelsView::connectWidget()
 {     
+    LOG_METHOD;
     connect(iListView, SIGNAL(activated(const QModelIndex&)), this, SLOT(clickItem(const QModelIndex&)));
     connect(iChannelModel, SIGNAL(dataAvailable()), this, SLOT(dataChanged()));
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)), this, SLOT(networkRequestNotified(IRQNetworkEvent)));     
@@ -151,6 +186,7 @@
 
 void IRSearchChannelsView::connectIsdsClient()
 {
+    LOG_METHOD;
     connect(iIsdsClient, SIGNAL(channelItemsChanged(QList<IRQChannelItem *> *)),
             iChannelModel, SLOT(updateData(QList<IRQChannelItem *> *)));    
     connect(iIsdsClient, SIGNAL(operationException(IRQError)),
@@ -167,6 +203,7 @@
 
 void IRSearchChannelsView::disconnectIsdsClient()
 { 
+    LOG_METHOD;
     disconnect(iIsdsClient, SIGNAL(channelItemsChanged(QList<IRQChannelItem *> *)),
             iChannelModel, SLOT(updateData(QList<IRQChannelItem *> *)));
     disconnect(iIsdsClient, SIGNAL(operationException(IRQError)), this,
@@ -181,12 +218,14 @@
 
 void IRSearchChannelsView::switch2InitState()
 {    
+    LOG_METHOD;
     iSearchState = ESearch_init;     
     iApplication->stopLoadingAnimation();
 } 
 
 void IRSearchChannelsView::switch2LoadingState()
 {   
+    LOG_METHOD;
     iSearchPanelWidget->clearFocus();
     iListView->setFocus();
     iSearchState = ESearch_Loading; 
@@ -195,6 +234,7 @@
 
 void IRSearchChannelsView::handleItemSelected()
 {
+    LOG_METHOD;
     if (iListView)
     {
         int index = iListView->currentIndex().row();
@@ -208,13 +248,16 @@
 }
 
 void IRSearchChannelsView::cancelRequest()
-{     
+{   
+    LOG_METHOD;  
     iIsdsClient->isdsCancelRequest();    
     switch2InitState(); 
 } 
 
 void IRSearchChannelsView::networkRequestNotified(IRQNetworkEvent aEvent)
-{        
+{       
+    LOG_METHOD;
+    LOG_FORMAT("aEvent = %d", (int)aEvent ); 
     if (getViewManager()->currentView() != this)
     {       
         return;
@@ -245,6 +288,7 @@
 
 void IRSearchChannelsView::searchTextAlready(const QString& aSearchCriteria)
 {
+    LOG_METHOD;
     iKeyText = aSearchCriteria.trimmed();
     
     if( iKeyText.isEmpty() )
@@ -276,6 +320,7 @@
 
 void IRSearchChannelsView::operationException(IRQError aError)
 {        
+    LOG_METHOD;
     switch2InitState();
     
     QString errStr;    
@@ -303,6 +348,7 @@
 
 void IRSearchChannelsView::clickItem(const QModelIndex&)
 {
+    LOG_METHOD;
     setUseNetworkReason(EIR_UseNetwork_SelectItem);
 #ifdef HS_WIDGET_ENABLED	
     int index = iListView->currentIndex().row();
@@ -323,6 +369,7 @@
 
 void IRSearchChannelsView::presetResponse(IRQPreset *aPreset)
 {    
+    LOG_METHOD;
     delete iPreset;
     iPreset = aPreset;
     
@@ -334,6 +381,7 @@
 
 void IRSearchChannelsView::convertAnother()
 {
+    LOG_METHOD;
     iConvertTimer->stop();
     int leftCount = iIconIndexArray.count();
     
@@ -345,12 +393,13 @@
  
 void IRSearchChannelsView::dataChanged()
 {
+    LOG_METHOD;
     switch2InitState();      
     iListView->reset();
     if( iChannelModel->rowCount() )
     {
         iListView->setCurrentIndex(iChannelModel->index(0));
-        iListView->scrollTo(iChannelModel->index(0));         
+        iListView->verticalScrollBar()->setValue(0.0);
     }
     
     //we move the focus to the listview and the search panel will
@@ -375,6 +424,7 @@
 
 void IRSearchChannelsView::startConvert(int aIndex)
 {
+    LOG_METHOD;
     QString url = iChannelModel->imageUrl(aIndex);
  
     IRQPreset tempPreset;
@@ -400,6 +450,7 @@
 //if the logo is downloaded ok
 void IRSearchChannelsView::presetLogoDownload(IRQPreset* aPreset)
 {
+    LOG_METHOD;
     if( NULL == aPreset )
     {
         presetLogoDownloadError();
@@ -438,6 +489,7 @@
 //if the logo download fails
 void IRSearchChannelsView::presetLogoDownloadError()
 {
+    LOG_METHOD;
     // if the logo download fails, try to download the next
     iIconIndexArray.removeAt(0);
     int leftCount = iIconIndexArray.count();
@@ -449,6 +501,7 @@
 
 void IRSearchChannelsView::minimizeSearchPanel()
 {
+    LOG_METHOD;
     if( ESearch_Loading == iSearchState )
     {
         iPlayController->cancelBuffering(); 
@@ -470,12 +523,16 @@
         iSearchPanelWidget->clearFocus();
         iListView->setFocus();        
     }
+
+    hideVkb();
 }
  
 
 TIRHandleResult IRSearchChannelsView::handleCommand(TIRViewCommand aCommand,
         TIRViewCommandReason aReason)
 {
+    LOG_METHOD;
+    LOG_FORMAT("aCommand = %d", (int)aCommand);
     TIRHandleResult ret = IRBaseView::handleCommand(aCommand, aReason);
     
     switch (aCommand)
@@ -502,7 +559,25 @@
     return ret;
 }
 
-
- 
+bool IRSearchChannelsView::eventFilter(QObject *object, QEvent *event)
+{
+    if( object == iListView
+        && event->type() == QEvent::FocusOut )
+    {
+        hideVkb();
+    }
+  
+    return false;
+}
+void IRSearchChannelsView::hideVkb()
+{
+    QInputContext *ic = qApp->inputContext(); 
+    if (ic)
+    {
+        QEvent *event = new QEvent(QEvent::CloseSoftwareInputPanel);
+        ic->filterEvent(event);
+        delete event;
+    }
+}
 
 
--- a/qtinternetradio/ui/src/irsonghistoryview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irsonghistoryview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -131,8 +131,23 @@
  */
 void IRSongHistoryView::handleItemSelected()
 {     
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+    // TODO : have to save preset id related to the song
+    iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,0);  
+    popupNote("Find in Music Store ...", HbMessageBox::MessageTypeInformation);
+#else
     int index = iListView->currentIndex().row();
     IRQSongInfo *hisInfo = iModel->getSongHistoryInfo(index); 
+
+    if( hisInfo && ( 0 != hisInfo->getMusicshopStatus().compare("yes",Qt::CaseInsensitive) ) )
+    {
+#ifdef SUBTITLE_STR_BY_LOCID
+        popupNote(hbTrId("txt_irad_info_not_allowed_by_this_station"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("Not allowed by station"), HbMessageBox::MessageTypeInformation);        
+#endif
+        return;
+    }
     
     if( (NULL == hisInfo) ||    
         ( hisInfo->getSongName().isEmpty() &&  
@@ -140,7 +155,11 @@
         )
       )
     {
+#ifdef SUBTITLE_STR_BY_LOCID
         popupNote(hbTrId("txt_irad_info_no_song_info"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("No song info"), HbMessageBox::MessageTypeInformation);        
+#endif  
         return;
     }
 
@@ -149,8 +168,9 @@
 #ifdef SUBTITLE_STR_BY_LOCID
     popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
 #else
-    popupNote(hbTrId("Music store not available"), HbMessageBox::MessageTypeInformation);    
-#endif
+    popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
+#endif // SUBTITLE_STR_BY_LOCID
+#endif // STATISTIC_REPORT_TEST_ENABLED
 }
    
 
@@ -204,9 +224,9 @@
 void IRSongHistoryView::popupClearHistoryConfirmMessageBox()
 {
 #ifdef SUBTITLE_STR_BY_LOCID
-    HbMessageBox::question(hbTrId("txt_irad_info_clear_song_list"), this, SLOT(clearList(HbAction*)), hbTrId("txt_common_button_ok"), hbTrId("txt_common_button_cancel"));
+    HbMessageBox::question(hbTrId("txt_irad_info_clear_song_list"), this, SLOT(clearList(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);
 #else
-    HbMessageBox::question(hbTrId("Clear song list?"), this, SLOT(clearList(HbAction*)), hbTrId("Ok"), hbTrId("Cancel"));    
+    HbMessageBox::question(hbTrId("Clear song list?"), this, SLOT(clearList(HbAction*)), HbMessageBox::Ok | HbMessageBox::Cancel);    
 #endif
 }
 void IRSongHistoryView::clearList(HbAction *aAction)
@@ -265,12 +285,7 @@
 
 void IRSongHistoryView::searchInMusicStoreContextAction()
 {
-    // Need to log the find song in NMS event, iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRFind,channelId);  
-#ifdef SUBTITLE_STR_BY_LOCID
-    popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
-#else
-    popupNote(hbTrId("Music store not available"), HbMessageBox::MessageTypeInformation);    
-#endif
+    handleItemSelected();
 }
 void IRSongHistoryView::deleteContextAction()
 {
--- a/qtinternetradio/ui/src/irstationdetailsview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irstationdetailsview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <HbLabel>
 #include <hbaction.h>
+#include <hbscrollbar.h>
 #include "irapplication.h"
 #include "irstationdetailsview.h"
 #include "iruidefines.h"
@@ -107,6 +108,10 @@
     
     // Find the station information objects
     iScrollArea = qobject_cast<HbScrollArea *>(iLoader.findObject(STATION_DETAILS_VIEW_OBJECT_SCROLL_AREA));
+    HbScrollBar *scrollbar = iScrollArea->verticalScrollBar();
+    scrollbar->setVisible(true);
+    scrollbar->setInteractive(true);
+    iScrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
     iContainer = qobject_cast<HbWidget *> (iLoader.findObject(STATION_DETAILS_VIEW_OBJECT_SCROLLAREA_CONTENTS));
     iStationName = qobject_cast<HbLabel *> (iLoader.findObject(STATION_DETAILS_VIEW_OBJECT_STATION_NAME));
     iGenres = qobject_cast<HbLabel *> (iLoader.findObject(STATION_DETAILS_VIEW_OBJECT_GENRE));
--- a/qtinternetradio/ui/src/irstationsview.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irstationsview.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -18,6 +18,7 @@
 #include <hblistview.h>
 #include <hbaction.h>
 #include <QTimer>
+#include <hbscrollbar.h>
 
 #include "irviewmanager.h"
 #include "irstationsview.h"
@@ -217,7 +218,13 @@
     iListView->reset();
     iListView->setCurrentIndex(iChannelModel->index(iLastSelectitem));
     iListView->scrollTo(iChannelModel->index(iLastSelectitem));
-
+    qreal value = 0.0;
+    if (iListView->model()->rowCount() > 0)
+    {
+        value = iLastSelectitem / iListView->model()->rowCount();
+    }
+    iListView->verticalScrollBar()->setValue(value);
+    
     //initialize the iconindices
     for (int i = 0; i < iChannelModel->rowCount(); ++i)
     {
--- a/qtinternetradio/ui/src/irviewmanager.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/irviewmanager.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -71,13 +71,18 @@
                                  iCrossLineShowing(false),
                                  iCrossLineTimer(NULL),
                                  iExitTimer(NULL),
-                                 iExiting(false)
+                                 iExiting(false),
+                                 iIsEmbedded(XQServiceUtil::isEmbedded())
 {
     iBackAction = new HbAction(Hb::BackNaviAction, this);
     connect(iBackAction, SIGNAL(triggered()), this, SLOT(backToPreviousView()));
     
-    iExitAction = new HbAction(Hb::QuitNaviAction, this);
-    connect(iExitAction, SIGNAL(triggered()), this, SLOT(lower()));
+    iExitAction = new HbAction(Hb::QuitNaviAction, this);    
+ 
+    if( !iIsEmbedded )
+    {
+        connect(iExitAction, SIGNAL(triggered()), this, SLOT(lower()));
+    }
     
     connect(this, SIGNAL(viewReady()), this, SLOT(handleViewReady()));
     connect(this, SIGNAL(currentViewChanged(HbView*)), this, SLOT(handleCurrentViewChanged(HbView*)));
@@ -100,6 +105,11 @@
 void IRViewManager::setApplication(IRApplication *aApplication)
 {
     iApplication = aApplication;
+    
+    if( iIsEmbedded )
+    {
+        connect(iExitAction,  SIGNAL(triggered()), iApplication, SIGNAL(quit()));   
+    }    
 }
 
 /*
@@ -369,7 +379,7 @@
     HbActivityManager *activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
     
     //for embedded applications, don't publish activity. If backup activity is available, need to restore
-    if (XQServiceUtil::isEmbedded())
+    if ( iIsEmbedded )
     {
         if (!iActivityBackup.activityId.isEmpty())
         {
@@ -415,8 +425,8 @@
 }
 
 void IRViewManager::removeActivity()
-{
-    if (XQServiceUtil::isEmbedded())
+{    
+    if ( iIsEmbedded )
     {
         backupActivity();
     }
@@ -424,7 +434,7 @@
     HbActivityManager *activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
     activityManager->removeActivity(KActivityMainView);
     activityManager->removeActivity(KActivityPlayingView);
-}
+} 
 
 void IRViewManager::backupActivity()
 {
@@ -589,7 +599,7 @@
 
 void IRViewManager::handleSaveScreenShot()
 {
-    if (!XQServiceUtil::isEmbedded())
+    if ( !iIsEmbedded )
     {
         TIRViewId id = currentViewId();
         iScreenShots[id] = QPixmap::grabWidget(this, rect());
@@ -697,9 +707,9 @@
     crossLineReset();
     viewport()->repaint();
 #ifdef SUBTITLE_STR_BY_LOCID
-    HbMessageBox::information(hbTrId("txt_common_info_exiting"), (QObject*)NULL, NULL);
+    HbMessageBox::information(hbTrId("txt_common_info_exiting"), (QObject*)NULL, NULL, HbMessageBox::Ok);
 #else
-    HbMessageBox::information(hbTrId("Exiting..."), (QObject*)NULL, NULL);    
+    HbMessageBox::information(hbTrId("Exiting..."), (QObject*)NULL, NULL, HbMessageBox::Ok);    
 #endif
     qApp->quit();
     iExiting = true;
--- a/qtinternetradio/ui/src/main.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/src/main.cpp	Wed Aug 18 09:40:26 2010 +0300
@@ -18,8 +18,10 @@
 #include <hbapplication.h>
 #include <hbdevicemessagebox.h>
 #include <QLocalSocket>
-#include <hbsplashscreen.h>
-#include <QSettings>
+#include <hbsplashscreen.h> 
+#include <hbtranslator.h> 
+
+#include <xqserviceutil.h>
 
 #include "irviewmanager.h"
 #include "irapplication.h"
@@ -28,52 +30,35 @@
 #include "irqsystemeventhandler.h"
 #include "irqsettings.h"
 #include "irservicedef.h"
+#include "irviewdefinitions.h"
+#include "irqsettings.h" 
 
-#ifdef LOCALIZATION 
-#include <QTranslator> 
-void initLanguage(QTranslator*& aTranslator);
-#endif
-
-bool isDiskSpaceLow(IRQSystemEventHandler* aEventHandler);
-bool isSecondInstance();
-void setSplashScreen();
-bool isSplashNowplaying();
+bool isDiskSpaceLow(IRQSystemEventHandler* aEventHandler); 
+void startSplashScreen();
+TIRViewId getSplashViewID(); 
 
 int main(int argc, char* argv[])
-{
-    installLogDir();
-    
-    INSTALL_MESSAGE_HANDLER;
-    //the following is for splash screen, this must be placed 
-    //before the creating of HbApplication
-    setSplashScreen(); 
-    
-    HbApplication app(argc, argv);
+{   
+    int  result = 0;
+	  
     
-#ifdef LOCALIZATION    
-    QTranslator* translator = NULL;
-    initLanguage(translator);
+    installLogDir();    
+    INSTALL_MESSAGE_HANDLER;   
+  
+    HbApplication app(argc, argv, Hb::NoSplash);
+    HbTranslator* translator = new HbTranslator();
     Q_ASSERT( NULL != translator );
-#endif
-    
-#ifdef SUBTITLE_STR_BY_LOCID
-    QCoreApplication::setApplicationName(hbTrId("txt_irad_title_internet_radio"));
-#else
-    QCoreApplication::setApplicationName(hbTrId("Internet radio"));    
-#endif
-    if (isSecondInstance())
-    {
-        return 0;
-    }
+    translator->loadCommon(); 
+     
+	  //we start the splash screen here for the translator will be 
+	  //installed ok only after the HbApplication is constructed ready
+    startSplashScreen();  
     
     //for the note should be translated too     
     IRQSystemEventHandler *systemEventHandler = new IRQSystemEventHandler();
     if( isDiskSpaceLow(systemEventHandler) )
-    {       
-#ifdef LOCALIZATION   
-        qApp->removeTranslator(translator);
+    {         
         delete translator;
-#endif
         delete systemEventHandler;
         return 0;
     }
@@ -82,20 +67,16 @@
     mainWindow->show();
     
     //here, we transfer the ownership of the event handler to the irapp
-    IRApplication *irapp = new IRApplication(mainWindow, systemEventHandler);
-    
-#ifdef LOCALIZATION
-    //this function will transfer the ownership of translator to irapp
-    irapp->setTranslator(translator);
-#endif
-    
+    IRApplication *irapp = new IRApplication(mainWindow, systemEventHandler);    
     IRMemoryCollector mc(irapp);
     
     if(!mainWindow->isExiting())
     {
-        return app.exec();
-    }
-	return 0;
+        result =  app.exec();                  
+    }    
+            
+    delete translator; 
+	  return result;
 }
 
 bool isDiskSpaceLow(IRQSystemEventHandler* aEventHandler)
@@ -114,50 +95,35 @@
         messageBox.exec();
     }
     return ret;
+} 
+
+void startSplashScreen()
+{   
+    TIRViewId viewId = getSplashViewID();    
+    switch( viewId )
+    {
+    case EIRView_PlayingView:
+         HbSplashScreen::setScreenId("nowplaying_screen");
+         break;
+    case EIRView_CategoryView:      
+    case EIRView_FavoritesView:       
+    case EIRView_MainView: 
+    default: 
+        HbSplashScreen::setScreenId("normal_screen");
+        break;    
+    } 
+    
+    HbSplashScreen::start();
 }
 
-#ifdef LOCALIZATION 
-void initLanguage(QTranslator*& aTranslator)
-{
-    aTranslator = new QTranslator();    
-    QString lang = QLocale::system().name();
-    LOG_FORMAT( "Current language is %s", STRING2CHAR(lang) );
-    QString path = "z:/resource/qt/translations/";  //this will be changed to a micro in future
-    bool ret = aTranslator->load(path + "internet_radio_10_1_" + lang);        
-    qApp->installTranslator(aTranslator); 
-}
-#endif
-
-bool isSecondInstance()
-{
-    QLocalSocket socket;
-    QString serverName = QCoreApplication::applicationName();
-    socket.connectToServer(serverName);
-    if (socket.waitForConnected(500))
-    {
-        return true;
-    }
-    else
-    {
-        return false;
-    }
+TIRViewId getSplashViewID()
+{ 
+    TIRViewId startingViewID;
+    IRQSettings *settings = IRQSettings::openInstance();
+    settings->getStartingViewId(startingViewID);
+    settings->closeInstance();
+    return startingViewID;    
 }
 
-void setSplashScreen()
-{     
-    if( isSplashNowplaying() )
-    {
-        HbSplashScreen::setScreenId("nowplaying_screen");
-    }
-    else
-    {
-        HbSplashScreen::setScreenId("normal_screen");
-    }    
-}
-
-bool isSplashNowplaying()
-{
-    QSettings settings(KIrSettingOrganization, KIrSettingApplication);
-    return settings.value(KIrSettingSplashNowplaying,false).toBool();
-}
  
+ 
--- a/qtinternetradio/ui/ui.pro	Tue Jul 06 14:07:20 2010 +0300
+++ b/qtinternetradio/ui/ui.pro	Wed Aug 18 09:40:26 2010 +0300
@@ -17,6 +17,7 @@
 
 TEMPLATE = app
 TARGET = internet_radio_10_1
+TRANSLATIONS += internet_radio_10_1.ts
 TARGET.CAPABILITY += NetworkServices  AllFiles  ReadDeviceData WriteDeviceData ReadUserData WriteUserData
 
 MOC_DIR = moc
@@ -27,56 +28,48 @@
 INCLUDEPATH += $${MW_LAYER_PUBLIC_EXPORT_PATH(http)}
 
 #the following is for splash screen in phone
-BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_default.splashml       /epoc32/data/z/resource/hb/splashml/internet_radio_default.splashml" \
-                             "resources/splashscreen/internet_radio_default.docml          /epoc32/data/z/resource/hb/splashml/internet_radio_default.docml" \
-                             "resources/splashscreen/internet_radio_normal.splashml        /epoc32/data/z/resource/hb/splashml/internet_radio_normal.splashml" \
+BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_normal.splashml        /epoc32/data/z/resource/hb/splashml/internet_radio_normal.splashml" \
                              "resources/splashscreen/internet_radio_normal.docml           /epoc32/data/z/resource/hb/splashml/internet_radio_normal.docml" \
                              "resources/splashscreen/internet_radio_nowplaying.splashml    /epoc32/data/z/resource/hb/splashml/internet_radio_nowplaying.splashml" \
-                             "resources/splashscreen/internet_radio_nowplaying.docml       /epoc32/data/z/resource/hb/splashml/internet_radio_nowplaying.docml"
+                             "resources/splashscreen/internet_radio_nowplaying.docml       /epoc32/data/z/resource/hb/splashml/internet_radio_nowplaying.docml" \
+                             "resources/splashscreen/internet_radio_termscons.splashml     /epoc32/data/z/resource/hb/splashml/internet_radio_termscons.splashml" \
+                             "resources/splashscreen/internet_radio_termscons.docml        /epoc32/data/z/resource/hb/splashml/internet_radio_termscons.docml"
 
 #the following is for splash screen in winscw_udeb
-BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_default.splashml      /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_default.splashml" \
-                             "resources/splashscreen/internet_radio_default.docml         /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_default.docml" \
-                             "resources/splashscreen/internet_radio_normal.splashml       /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_normal.splashml" \
+BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_normal.splashml       /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_normal.splashml" \
                              "resources/splashscreen/internet_radio_normal.docml          /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_normal.docml" \
                              "resources/splashscreen/internet_radio_nowplaying.splashml   /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_nowplaying.splashml" \
-                             "resources/splashscreen/internet_radio_nowplaying.docml      /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_nowplaying.docml" 
-                                                      
+                             "resources/splashscreen/internet_radio_nowplaying.docml      /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_nowplaying.docml" \
+                             "resources/splashscreen/internet_radio_termscons.splashml    /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_termscons.splashml" \
+                             "resources/splashscreen/internet_radio_termscons.docml       /epoc32/release/winscw/udeb/z/resource/hb/splashml/internet_radio_termscons.docml" 
 
 #the following is for splash screen in winscw_urel
-BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_default.splashml      /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_default.splashml" \
-                             "resources/splashscreen/internet_radio_default.docml         /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_default.docml" \
-                             "resources/splashscreen/internet_radio_normal.splashml       /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_normal.splashml" \
+BLD_INF_RULES.prj_exports += "resources/splashscreen/internet_radio_normal.splashml       /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_normal.splashml" \
                              "resources/splashscreen/internet_radio_normal.docml          /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_normal.docml" \
                              "resources/splashscreen/internet_radio_nowplaying.splashml   /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_nowplaying.splashml" \
-                             "resources/splashscreen/internet_radio_nowplaying.docml      /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_nowplaying.docml"                            
-                              
+                             "resources/splashscreen/internet_radio_nowplaying.docml      /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_nowplaying.docml" \                         
+                             "resources/splashscreen/internet_radio_termscons.splashml    /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_termscons.splashml" \
+                             "resources/splashscreen/internet_radio_termscons.docml       /epoc32/release/winscw/urel/z/resource/hb/splashml/internet_radio_termscons.docml"
+                             
 
 
 INCLUDEPATH += inc \
-               ..\irqisdsclient\inc \
-               ..\irqmediaplayer\inc \
-               ..\irqcommon\inc \
-               ..\irqstatisticsreporter\inc \
-               ..\irqfavoritesdb\inc \
-               ..\irqnetworkcontroller\inc \
-               ..\irqsonghistory\inc \
-               ..\irqsettings\inc    \                
-               ..\irqlogger\inc \                      
-               ..\irqsystemeventhandler\inc
+               ../irqisdsclient/inc \
+               ../irqmediaplayer/inc \
+               ../irqcommon/inc \
+               ../irqstatisticsreporter/inc \
+               ../irqfavoritesdb/inc \
+               ../irqnetworkcontroller/inc \
+               ../irqsonghistory/inc \
+               ../irqsettings/inc    \                
+               ../irqlogger/inc \                      
+               ../irqsystemeventhandler/inc
 
 CONFIG += hb service
 QT += sql
 
 SERVICE.FILE = service_conf.xml
 
-exists($${OS_LAYER_PLATFORM_EXPORT_PATH(qt/translations/internet_radio_10_1*.ts)}) {           
-       TRANSLATIONS = internet_radio_10_1.ts
-       message( "LOALIZATION IS TURNED ON" )   
-       DEFINES += LOCALIZATION     
-}
-
-
 LIBS += -lirqnetworkcontroller \         
         -lirqisdsclient \
         -lirqmediaplayer \
@@ -101,45 +94,47 @@
   SKINICON = qtg_large_internet_radio
   datatype_list = "datatype_list={DATATYPE{priority=EDataTypePriorityHigh;type=\"audio/x-scpls\";}};"
   RSS_RULES += datatype_list 
+  MMP_RULES += SMPSAFE
 }
 
 #input
 #header files list
-HEADERS += inc\irapplication.h \
-           inc\irviewmanager.h \
-           inc\irbaseview.h \
-           inc\irmainview.h \
-           inc\irmainmodel.h \
-           inc\ircategoryview.h \      
-           inc\irstationsview.h \  
-           inc\irnowplayingview.h \
-           inc\irplaycontroller.h \
-           inc\ircategorymodel.h \
-           inc\irchannelmodel.h \
-           inc\irabstractlistviewbase.h \
-           inc\irfavoritesview.h \
-           inc\irfavoritesmodel.h \
-           inc\irhistoryview.h \
-           inc\irsonghistoryview.h \
-           inc\irsettingsview.h \
-           inc\irlastplayedstationinfo.h \
-           inc\iropenwebaddressview.h \
-           inc\irhistorymodel.h \
-           inc\irsonghistorymodel.h \            
-           inc\irsearchchannelsview.h \
-           inc\irdocumentloader.h \           
-           inc\irmediakeyobserver.h \
-           inc\irplsmodel.h \
-           inc\irplsview.h \
-           inc\irmemorycollector.h \
-           inc\irstationshare.h \
-           inc\irstationdetailsview.h \
-           inc\irtermsconsview.h \
-           inc\ircontrolservice.h \
-           inc\irmonitorservice.h \           
-           inc\irplaylist.h \
-           inc\irsearchresultdb.h \
-           inc\irfileviewservice.h
+HEADERS += inc/irapplication.h \
+           inc/irviewmanager.h \
+           inc/irbaseview.h \
+           inc/irmainview.h \
+           inc/irmainmodel.h \
+           inc/ircategoryview.h \      
+           inc/irstationsview.h \  
+           inc/irnowplayingview.h \
+           inc/irplaycontroller.h \
+           inc/ircategorymodel.h \
+           inc/irchannelmodel.h \
+           inc/irabstractlistviewbase.h \
+           inc/irfavoritesview.h \
+           inc/irfavoritesmodel.h \
+           inc/irhistoryview.h \
+           inc/irsonghistoryview.h \
+           inc/irsettingsview.h \
+           inc/irlastplayedstationinfo.h \
+           inc/iropenwebaddressview.h \
+           inc/irhistorymodel.h \
+           inc/irsonghistorymodel.h \            
+           inc/irsearchchannelsview.h \
+           inc/irdocumentloader.h \           
+           inc/irmediakeyobserver.h \
+           inc/irplsmodel.h \
+           inc/irplsview.h \
+           inc/irmemorycollector.h \
+           inc/irstationshare.h \
+           inc/irstationdetailsview.h \
+           inc/irtermsconsview.h \
+           inc/ircontrolservice.h \
+           inc/irmonitorservice.h \           
+           inc/irplaylist.h \
+           inc/irsearchresultdb.h \
+           inc/irfileviewservice.h \
+           inc/irplayingbanner.h
            
 #source files list
 SOURCES += main.cpp  \
@@ -177,7 +172,8 @@
            irmonitorservice.cpp \
            irplaylist.cpp \
            irsearchresultdb.cpp \
-           irfileviewservice.cpp
+           irfileviewservice.cpp \
+           irplayingbanner.cpp
           	   
 #resource
 RESOURCES += resources/irui.qrc