Revision: 201025
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 14:16:27 +0300
changeset 33 11b6825f0862
parent 32 189d20c34778
child 37 451b2e1545b2
child 41 3a6b55c6390c
Revision: 201025 Kit: 2010127
common/radio_global.h
radioapp/bin/fmradio_en_US.qm
radioapp/buildflags.pri
radioapp/bwins/fmradiouiengineu.def
radioapp/bwins/fmradiowidgetsu.def
radioapp/eabi/fmradiouiengineu.def
radioapp/eabi/fmradiowidgetsu.def
radioapp/radioapplication/radioapplication.pro
radioapp/radioapplication/resources/fmradio.docml
radioapp/radioapplication/resources/fmradio.splashml
radioapp/radioapplication/resources/fmradio.ts
radioapp/radioapplication/resources/qtg_large_radio.svg
radioapp/radioapplication/src/radioapplication.cpp
radioapp/radioapplication/src/testwindow_win32.cpp
radioapp/radioenginewrapper/src/radioenginewrapper.cpp
radioapp/radioenginewrapper/stub/radioenginewrapper_stub.pro
radioapp/radioenginewrapper/tsrc/t_radioenginewrapper.pro
radioapp/radiopresetstorage/src/radiopresetstorage.cpp
radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro
radioapp/radiouiengine/inc/radiohistorydatabase.h
radioapp/radiouiengine/inc/radiostation.h
radioapp/radiouiengine/inc/radiouiengine.h
radioapp/radiouiengine/inc/radiouiengine_p.h
radioapp/radiouiengine/radiouiengine.pro
radioapp/radiouiengine/src/radiocontrolservice.cpp
radioapp/radiouiengine/src/radiohistorydatabase.cpp
radioapp/radiouiengine/src/radiohistorymodel_p.cpp
radioapp/radiouiengine/src/radiostation.cpp
radioapp/radiouiengine/src/radiostationmodel.cpp
radioapp/radiouiengine/src/radiouiengine.cpp
radioapp/radiouiengine/tsrc/t_radiouiengine.pro
radioapp/radiowidgets/inc/radiocarouselitem.h
radioapp/radiowidgets/inc/radiofrequencystrip.h
radioapp/radiowidgets/inc/radiomainview.h
radioapp/radiowidgets/inc/radiostationcarousel.h
radioapp/radiowidgets/inc/radiostationsview.h
radioapp/radiowidgets/inc/radiostripbase.h
radioapp/radiowidgets/inc/radiouiloader.h
radioapp/radiowidgets/inc/radioviewbase.h
radioapp/radiowidgets/res/effects/blink_in_out_in.fxml
radioapp/radiowidgets/res/fmradioui.qrc
radioapp/radiowidgets/res/images/nowplayingicon.png
radioapp/radiowidgets/res/images/pri_small_shazam.svg
radioapp/radiowidgets/res/images/pri_small_tag.svg
radioapp/radiowidgets/res/images/qtg_mono_next.svg
radioapp/radiowidgets/res/images/qtg_mono_play_history.svg
radioapp/radiowidgets/res/images/qtg_mono_previous.svg
radioapp/radiowidgets/res/images/qtg_mono_radio_stations.svg
radioapp/radiowidgets/res/images/qtg_mono_speaker.svg
radioapp/radiowidgets/res/images/qtg_mono_speaker_off.svg
radioapp/radiowidgets/res/images/qtg_mono_station_scan.svg
radioapp/radiowidgets/res/images/qtg_mono_tag.svg
radioapp/radiowidgets/res/images/setfavoriteicon.png
radioapp/radiowidgets/res/images/stripbackground.png
radioapp/radiowidgets/res/layout/historyview.docml
radioapp/radiowidgets/res/layout/mainview.docml
radioapp/radiowidgets/res/layout/radiocarouselitem.css
radioapp/radiowidgets/res/layout/radiocarouselitem.widgetml
radioapp/radiowidgets/res/layout/stationsview.docml
radioapp/radiowidgets/src/radiocarouselitem.cpp
radioapp/radiowidgets/src/radiofrequencyscanner.cpp
radioapp/radiowidgets/src/radiofrequencystrip.cpp
radioapp/radiowidgets/src/radiomainview.cpp
radioapp/radiowidgets/src/radiostationcarousel.cpp
radioapp/radiowidgets/src/radiostationsview.cpp
radioapp/radiowidgets/src/radioviewbase.cpp
radioapp/radiowidgets/src/radiowindow.cpp
radioengine/engine/group/radioengine.mmp
radioengine/engine/stub/bwins/fmradioengine_stubu.def
radioengine/engine/stub/eabi/fmradioengine_stubu.def
radioengine/engine/stub/group/bld.inf
radioengine/engine/stub/group/radioengine_stub.mmp
radioengine/group/bld.inf
radioengine/settings/api/cradioregion.h
radioengine/settings/bwins/fmradioenginesettingsu.def
radioengine/settings/cenrep/2002FF52.txt
radioengine/settings/cenrep/radio.confml
radioengine/settings/data/fmradioenginesettings.rss
radioengine/settings/eabi/fmradioenginesettingsu.def
radioengine/settings/group/radioenginesettings.mmp
radioengine/settings/inc/radiopreset.hrh
radioengine/settings/inc/radiosettings.rh
radioengine/settings/src/cradioenginesettings.cpp
radioengine/settings/src/cradioregion.cpp
radioengine/settings/stub/bwins/fmradioenginesettings_stubu.def
radioengine/settings/stub/eabi/fmradioenginesettings_stubu.def
radioengine/settings/stub/group/bld.inf
radioengine/settings/stub/group/radioenginesettings_stub.mmp
radioengine/settings/tsrc/bwins/SettingsTestModuleu.def
radioengine/settings/tsrc/cenrep/2002FF52.txt
radioengine/settings/tsrc/cenrep/2002FF52_orig.txt
radioengine/settings/tsrc/cenrep/radio.confml
radioengine/settings/tsrc/cenrep/radio_2002FF52.crml
radioengine/settings/tsrc/conf/2002FF52.txt
radioengine/settings/tsrc/conf/SettingsTestModule.cfg
radioengine/settings/tsrc/conf/atsconf.txt
radioengine/settings/tsrc/conf/radio.confml
radioengine/settings/tsrc/conf/radio_2002FF52.crml
radioengine/settings/tsrc/custom/postrun_custom.xml
radioengine/settings/tsrc/custom/prerun_custom.xml
radioengine/settings/tsrc/eabi/SettingsTestModuleu.def
radioengine/settings/tsrc/group/Bld.inf
radioengine/settings/tsrc/group/RestoreOrigCenrep.cmd
radioengine/settings/tsrc/group/SettingsTestModule.mmp
radioengine/settings/tsrc/group/SettingsTestModule.pkg
radioengine/settings/tsrc/group/SettingsTestModule_DoxyFile.txt
radioengine/settings/tsrc/group/SettingsTestModule_nrm.mmp
radioengine/settings/tsrc/group/TestEnvInit.cmd
radioengine/settings/tsrc/inc/SettingsTestModule.h
radioengine/settings/tsrc/inc/trace.h
radioengine/settings/tsrc/inc/traceconfiguration.hrh
radioengine/settings/tsrc/init/TestFramework.ini
radioengine/settings/tsrc/rom/settingstestmodule.iby
radioengine/settings/tsrc/src/SettingsTestModule.cpp
radioengine/settings/tsrc/src/SettingsTestModuleBlocks.cpp
radioengine/utils/group/radioengineutils.mmp
radioengine/utils/src/cradioaccessoryobserver.cpp
radioengine/utils/stub/bwins/fmradioengineutils_stubu.def
radioengine/utils/stub/eabi/fmradioengineutils_stubu.def
radioengine/utils/stub/group/bld.inf
radioengine/utils/stub/group/radioengineutils_stub.mmp
radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h
radioengine/utils/stub/inc/cradioremcontargetimp_stub.h
radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp
radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp
radiohswidget/inc/radiohswidget.h
radiohswidget/inc/radiohswidgetprofilereader.h
radiohswidget/inc/radiohswidgetradioserviceclient.h
radiohswidget/locales/compile_ts.bat
radiohswidget/locales/fmradiohswidget.qm
radiohswidget/locales/fmradiohswidget.ts
radiohswidget/locales/radiohswidget.qm
radiohswidget/locales/radiohswidget.ts
radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin
radiohswidget/radiohswidget.pro
radiohswidget/resource/fmradiohswidget.docml
radiohswidget/resource/fmradiohswidget.manifest
radiohswidget/resource/fmradiohswidget.xml
radiohswidget/resource/fmradiohswidgetplugin.s60xml
radiohswidget/resource/fmradiohswidgetplugin_icon.png
radiohswidget/resource/qtg_graf_hsradio_bg.png
radiohswidget/resources.qrc
radiohswidget/src/radiohswidget.cpp
radiohswidget/src/radiohswidgetprofilereader.cpp
radiohswidget/src/radiohswidgetradioserviceclient.cpp
radiohswidget/stub/xqaiwinterfacedescriptor.cpp
radiohswidget/stub/xqaiwinterfacedescriptor.h
radiohswidget/stub/xqaiwrequest.cpp
radiohswidget/stub/xqaiwrequest.h
radiohswidget/stub/xqapplicationmanager.cpp
radiohswidget/stub/xqapplicationmanager.h
radiohswidget/stub/xqrequestinfo.cpp
radiohswidget/stub/xqrequestinfo.h
radiohswidget/stub/xqsettingskey.cpp
radiohswidget/stub/xqsettingskey.h
radiohswidget/stub/xqsettingsmanager.cpp
radiohswidget/stub/xqsettingsmanager.h
radiohswidget/tsrc/buildflags.pri
radiohswidget/tsrc/inc/radiohswidget.h
radiohswidget/tsrc/inc/t_radiohswidget.h
radiohswidget/tsrc/src/radiohswidget.cpp
radiohswidget/tsrc/src/t_radiohswidget.cpp
radiohswidget/tsrc/t_radiohswidget.pro
tsrc/bld.inf
--- a/common/radio_global.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/common/radio_global.h	Tue Jul 06 14:16:27 2010 +0300
@@ -36,6 +36,14 @@
  */
 const int MAXIMUM_VOLUME_LEVEL = 20;
 
+/**
+ * Default volume level that is used when no previous setting exists
+ */
+const int DEFAULT_VOLUME_LEVEL = 4;
+
+/**
+ * Roles used when interacting with the radio station model
+ */
 namespace RadioRole
 {
     enum Role
Binary file radioapp/bin/fmradio_en_US.qm has changed
--- a/radioapp/buildflags.pri	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/buildflags.pri	Tue Jul 06 14:16:27 2010 +0300
@@ -101,8 +101,14 @@
     TARGET.EPOCALLOWDLLDATA = 1
     TARGET.VID              = VID_DEFAULT
     TARGET.CAPABILITY       = CAP_GENERAL_DLL
+    INCLUDEPATH             += $$APP_LAYER_SYSTEMINCLUDE
+    SYMBIAN_PLATFORMS       = WINSCW ARMV5
+    MMP_RULES               += SMPSAFE
 }
 
+# QT 4.7 changes the def file location so force them to stay where they are
+defFilePath     = ..
+
 win32: {
     DEFINES     += BUILD_WIN32
     DESTDIR     = ../bin
--- a/radioapp/bwins/fmradiouiengineu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/bwins/fmradiouiengineu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -57,15 +57,15 @@
 	?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 56 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const
 	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 57 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
 	?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 58 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void)
-	?lastTunedFrequency@RadioUiEngine@@SAIXZ @ 59 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(void)
-	?favoriteCount@RadioStationModel@@QAEHXZ @ 60 NONAME ; int RadioStationModel::favoriteCount(void)
-	??1RadioScannerEngine@@UAE@XZ @ 61 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
-	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 62 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
-	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
-	?launchBrowser@RadioUiEngine@@QAEXABVQString@@@Z @ 64 NONAME ; void RadioUiEngine::launchBrowser(class QString const &)
-	?isScanning@RadioScannerEngine@@QBE_NXZ @ 65 NONAME ; bool RadioScannerEngine::isScanning(void) const
-	??1RadioHistoryItem@@QAE@XZ @ 66 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
-	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
+	?favoriteCount@RadioStationModel@@QAEHXZ @ 59 NONAME ; int RadioStationModel::favoriteCount(void)
+	??1RadioScannerEngine@@UAE@XZ @ 60 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
+	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 61 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
+	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 62 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
+	?launchBrowser@RadioUiEngine@@QAEXABVQString@@@Z @ 63 NONAME ; void RadioUiEngine::launchBrowser(class QString const &)
+	?isScanning@RadioScannerEngine@@QBE_NXZ @ 64 NONAME ; bool RadioScannerEngine::isScanning(void) const
+	??1RadioHistoryItem@@QAE@XZ @ 65 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
+	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
+	?hasName@RadioStation@@QBE_NXZ @ 67 NONAME ; bool RadioStation::hasName(void) const
 	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 68 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
 	?setPowerOff@RadioUiEngine@@QAEXH@Z @ 69 NONAME ; void RadioUiEngine::setPowerOff(int)
 	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 70 NONAME ; bool RadioUiEngine::isRadioOn(void) const
@@ -76,172 +76,180 @@
 	?hasRds@RadioStation@@QBE_NXZ @ 75 NONAME ; bool RadioStation::hasRds(void) const
 	?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 76 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode)
 	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 77 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
-	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 78 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
-	?id@RadioHistoryItem@@QBEHXZ @ 79 NONAME ; int RadioHistoryItem::id(void) const
-	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 80 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
-	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 83 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
-	?data_ptr@RadioHistoryItem@@QAEAAV?$QSharedDataPointer@VRadioHistoryItemPrivate@@@@XZ @ 84 NONAME ; class QSharedDataPointer<class RadioHistoryItemPrivate> & RadioHistoryItem::data_ptr(void)
-	?radioText@RadioStation@@QBE?AVQString@@XZ @ 85 NONAME ; class QString RadioStation::radioText(void) const
-	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 86 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
-	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 87 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
-	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 88 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
-	?setVolume@RadioUiEngine@@QAEXH@Z @ 89 NONAME ; void RadioUiEngine::setVolume(int)
-	?setFavorite@RadioStation@@QAEX_N@Z @ 90 NONAME ; void RadioStation::setFavorite(bool)
-	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 91 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
-	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 92 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
-	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
-	??1RadioStationModel@@UAE@XZ @ 94 NONAME ; RadioStationModel::~RadioStationModel(void)
-	?isMuted@RadioUiEngine@@QBE_NXZ @ 95 NONAME ; bool RadioUiEngine::isMuted(void) const
-	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 96 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
-	?currentFrequency@RadioUiEngine@@QBEIXZ @ 97 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
-	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 98 NONAME ; void RadioHistoryModel::emitItemAdded(void)
-	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 99 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
-	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 100 NONAME ; void RadioStation::setUrl(class QString const &)
-	??1RadioStation@@UAE@XZ @ 101 NONAME ; RadioStation::~RadioStation(void)
-	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
-	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 103 NONAME ; class QString RadioStation::callSignString(unsigned int)
-	?isValid@RadioStation@@QBE_NXZ @ 104 NONAME ; bool RadioStation::isValid(void) const
-	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 105 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 106 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
-	?reset@RadioHistoryItem@@QAEXXZ @ 107 NONAME ; void RadioHistoryItem::reset(void)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 108 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
-	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 109 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
-	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 110 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
-	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 111 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
-	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 112 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
-	?frequency@RadioHistoryItem@@QBEIXZ @ 113 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
-	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 114 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
-	?isDetached@RadioHistoryItem@@QBE_NXZ @ 115 NONAME ; bool RadioHistoryItem::isDetached(void) const
-	?genre@RadioStation@@QBEHXZ @ 116 NONAME ; int RadioStation::genre(void) const
-	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 117 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 118 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
-	??0RadioStation@@QAE@XZ @ 119 NONAME ; RadioStation::RadioStation(void)
-	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 120 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
-	??1RadioHistoryModel@@UAE@XZ @ 121 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
-	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 122 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
-	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 123 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
-	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 124 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
-	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 125 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
-	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 126 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
-	?startScanning@RadioScannerEngine@@QAEXXZ @ 127 NONAME ; void RadioScannerEngine::startScanning(void)
-	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 128 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
-	?isValid@RadioHistoryItem@@QBE_NXZ @ 129 NONAME ; bool RadioHistoryItem::isValid(void) const
-	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 130 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
-	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 131 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
-	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 132 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
-	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 133 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
-	?url@RadioStation@@QBE?AVQString@@XZ @ 134 NONAME ; class QString RadioStation::url(void) const
-	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 135 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
-	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 136 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
-	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 137 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
-	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 138 NONAME ; void RadioHistoryItem::setStation(class QString const &)
-	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 139 NONAME ; void * RadioStationModel::qt_metacast(char const *)
-	?presetIndex@RadioStation@@QBEHXZ @ 140 NONAME ; int RadioStation::presetIndex(void) const
-	?cancel@RadioScannerEngine@@QAEXXZ @ 141 NONAME ; void RadioScannerEngine::cancel(void)
-	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 142 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
-	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 143 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
-	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 144 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
-	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 145 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
-	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 146 NONAME ; void RadioHistoryModel::currentSongReset(void)
-	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 147 NONAME ; void RadioStationModel::removeByPresetIndex(int)
-	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 148 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
-	?isRenamed@RadioStation@@QBE_NXZ @ 149 NONAME ; bool RadioStation::isRenamed(void) const
-	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 150 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
-	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 151 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
-	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 152 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
-	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 153 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
-	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 154 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
-	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 155 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
-	??0RadioHistoryItem@@QAE@XZ @ 156 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
-	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 157 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
-	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 158 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
-	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 159 NONAME ; int RadioStationModel::findPresetIndex(int)
-	??0RadioHistoryItem@@QAE@ABV0@@Z @ 160 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
-	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 161 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
-	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 162 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
-	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 163 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 164 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
-	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 165 NONAME ; void RadioHistoryModel::removeAll(bool)
-	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 166 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
-	?setPowerOn@RadioUiEngine@@QAEXXZ @ 167 NONAME ; void RadioUiEngine::setPowerOn(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 168 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
-	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 169 NONAME ; class QString RadioStation::dynamicPsText(void) const
-	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 170 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
-	?setMute@RadioUiEngine@@QAEX_N@Z @ 171 NONAME ; void RadioUiEngine::setMute(bool)
-	?setGenre@RadioStation@@AAEXH@Z @ 172 NONAME ; void RadioStation::setGenre(int)
-	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 173 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
-	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 174 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
-	??_ERadioUiEngine@@UAE@I@Z @ 175 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
-	?init@RadioUiEngine@@QAE_NXZ @ 176 NONAME ; bool RadioUiEngine::init(void)
-	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 177 NONAME ; void RadioStation::setRadioText(class QString const &)
-	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 178 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
-	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 179 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
-	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 180 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
-	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 181 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
-	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 182 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
-	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 183 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
-	??1RadioUiEngine@@UAE@XZ @ 184 NONAME ; RadioUiEngine::~RadioUiEngine(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 185 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
-	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 186 NONAME ; class QString RadioHistoryItem::time(void) const
-	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 187 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
-	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 188 NONAME ; class QString RadioHistoryItem::artist(void) const
-	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 189 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
-	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 190 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
-	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 191 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
-	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 192 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
-	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 193 NONAME ; void RadioUiEngine::volumeChanged(int)
-	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 194 NONAME ; class QString RadioHistoryItem::title(void) const
-	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 195 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
-	?resetChangeFlags@RadioStation@@QAEXXZ @ 196 NONAME ; void RadioStation::resetChangeFlags(void)
-	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 197 NONAME ; void RadioUiEngine::powerOffRequested(void)
-	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 198 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
-	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 199 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
-	?callSignChar@RadioStation@@AAEDI@Z @ 200 NONAME ; char RadioStation::callSignChar(unsigned int)
-	??_ERadioStation@@UAE@I@Z @ 201 NONAME ; RadioStation::~RadioStation(unsigned int)
-	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 202 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
-	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 203 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
-	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 204 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
-	??0RadioStation@@AAE@HI@Z @ 205 NONAME ; RadioStation::RadioStation(int, unsigned int)
-	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 206 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isDetached@RadioStation@@QBE_NXZ @ 207 NONAME ; bool RadioStation::isDetached(void) const
-	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 208 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
-	?name@RadioStation@@QBE?AVQString@@XZ @ 209 NONAME ; class QString RadioStation::name(void) const
-	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 210 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
-	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 211 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
-	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 212 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
-	?itemAdded@RadioHistoryModel@@IAEXXZ @ 213 NONAME ; void RadioHistoryModel::itemAdded(void)
-	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 214 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
-	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 215 NONAME ; void RadioHistoryModel::setShowDetails(bool)
-	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 216 NONAME ; void RadioUiEngine::launchSongRecognition(void)
-	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 217 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
-	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 218 NONAME ; class QString RadioStation::iterateCallSign(int, int)
-	?toggleMute@RadioUiEngine@@QAEXXZ @ 219 NONAME ; void RadioUiEngine::toggleMute(void)
-	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 220 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
-	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 221 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
-	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 222 NONAME ; void RadioHistoryItem::setCurrentTime(void)
-	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 223 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
-	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 224 NONAME ; class QString RadioHistoryItem::station(void) const
-	??_ERadioHistoryModel@@UAE@I@Z @ 225 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
-	?minFrequency@RadioUiEngine@@QBEIXZ @ 226 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
-	?isTagged@RadioHistoryItem@@QBE_NXZ @ 227 NONAME ; bool RadioHistoryItem::isTagged(void) const
-	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 228 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
-	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 229 NONAME ; void RadioHistoryModel::setShowTagged(bool)
-	?setPresetIndex@RadioStation@@AAEXH@Z @ 230 NONAME ; void RadioStation::setPresetIndex(int)
-	?setName@RadioStation@@AAEXABVQString@@@Z @ 231 NONAME ; void RadioStation::setName(class QString const &)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 232 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
-	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 233 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
-	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 234 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 235 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
-	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 236 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
-	?isFavorite@RadioStation@@QBE_NXZ @ 237 NONAME ; bool RadioStation::isFavorite(void) const
-	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 238 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
-	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 239 NONAME ; void RadioUiEngine::seekingStarted(int)
-	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 240 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
-	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 241 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
-	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 242 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
-	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 243 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
-	??_ERadioStationModel@@UAE@I@Z @ 244 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
-	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 245 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?launchRadioServer@RadioUiEngine@@SAXXZ @ 78 NONAME ; void RadioUiEngine::launchRadioServer(void)
+	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 79 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
+	?id@RadioHistoryItem@@QBEHXZ @ 80 NONAME ; int RadioHistoryItem::id(void) const
+	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 81 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 82 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 83 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
+	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 84 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
+	?data_ptr@RadioHistoryItem@@QAEAAV?$QSharedDataPointer@VRadioHistoryItemPrivate@@@@XZ @ 85 NONAME ; class QSharedDataPointer<class RadioHistoryItemPrivate> & RadioHistoryItem::data_ptr(void)
+	?radioText@RadioStation@@QBE?AVQString@@XZ @ 86 NONAME ; class QString RadioStation::radioText(void) const
+	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 87 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 88 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
+	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 89 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
+	?setVolume@RadioUiEngine@@QAEXH@Z @ 90 NONAME ; void RadioUiEngine::setVolume(int)
+	?setFavorite@RadioStation@@QAEX_N@Z @ 91 NONAME ; void RadioStation::setFavorite(bool)
+	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 92 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
+	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 93 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
+	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 94 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
+	?hasUrl@RadioStation@@QBE_NXZ @ 95 NONAME ; bool RadioStation::hasUrl(void) const
+	??1RadioStationModel@@UAE@XZ @ 96 NONAME ; RadioStationModel::~RadioStationModel(void)
+	?isMuted@RadioUiEngine@@QBE_NXZ @ 97 NONAME ; bool RadioUiEngine::isMuted(void) const
+	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 98 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
+	?currentFrequency@RadioUiEngine@@QBEIXZ @ 99 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
+	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 100 NONAME ; void RadioHistoryModel::emitItemAdded(void)
+	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 101 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
+	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 102 NONAME ; void RadioStation::setUrl(class QString const &)
+	?hasDynamicPs@RadioStation@@QBE_NXZ @ 103 NONAME ; bool RadioStation::hasDynamicPs(void) const
+	??1RadioStation@@UAE@XZ @ 104 NONAME ; RadioStation::~RadioStation(void)
+	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
+	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 106 NONAME ; class QString RadioStation::callSignString(unsigned int)
+	?isValid@RadioStation@@QBE_NXZ @ 107 NONAME ; bool RadioStation::isValid(void) const
+	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 108 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 109 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
+	?reset@RadioHistoryItem@@QAEXXZ @ 110 NONAME ; void RadioHistoryItem::reset(void)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 111 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
+	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 112 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
+	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 113 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 114 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
+	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 115 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
+	?frequency@RadioHistoryItem@@QBEIXZ @ 116 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
+	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 117 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
+	?isDetached@RadioHistoryItem@@QBE_NXZ @ 118 NONAME ; bool RadioHistoryItem::isDetached(void) const
+	?genre@RadioStation@@QBEHXZ @ 119 NONAME ; int RadioStation::genre(void) const
+	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 120 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 121 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
+	??0RadioStation@@QAE@XZ @ 122 NONAME ; RadioStation::RadioStation(void)
+	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 123 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
+	??1RadioHistoryModel@@UAE@XZ @ 124 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
+	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 125 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
+	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 126 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
+	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 127 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
+	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 128 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
+	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 129 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
+	?startScanning@RadioScannerEngine@@QAEXXZ @ 130 NONAME ; void RadioScannerEngine::startScanning(void)
+	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 131 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
+	?isValid@RadioHistoryItem@@QBE_NXZ @ 132 NONAME ; bool RadioHistoryItem::isValid(void) const
+	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 133 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
+	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 134 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
+	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 135 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
+	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 136 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
+	?url@RadioStation@@QBE?AVQString@@XZ @ 137 NONAME ; class QString RadioStation::url(void) const
+	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 138 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
+	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 139 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
+	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 140 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
+	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 141 NONAME ; void RadioHistoryItem::setStation(class QString const &)
+	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 142 NONAME ; void * RadioStationModel::qt_metacast(char const *)
+	?presetIndex@RadioStation@@QBEHXZ @ 143 NONAME ; int RadioStation::presetIndex(void) const
+	?cancel@RadioScannerEngine@@QAEXXZ @ 144 NONAME ; void RadioScannerEngine::cancel(void)
+	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 145 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
+	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 146 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
+	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 147 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 148 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
+	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 149 NONAME ; void RadioHistoryModel::currentSongReset(void)
+	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 150 NONAME ; void RadioStationModel::removeByPresetIndex(int)
+	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 151 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
+	?isRenamed@RadioStation@@QBE_NXZ @ 152 NONAME ; bool RadioStation::isRenamed(void) const
+	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 153 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
+	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 154 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
+	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 155 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
+	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 156 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
+	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 157 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
+	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 158 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
+	??0RadioHistoryItem@@QAE@XZ @ 159 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
+	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 160 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
+	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 161 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
+	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 162 NONAME ; int RadioStationModel::findPresetIndex(int)
+	??0RadioHistoryItem@@QAE@ABV0@@Z @ 163 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
+	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 164 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
+	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
+	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 166 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
+	?lastTunedFrequency@RadioUiEngine@@SAII@Z @ 167 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(unsigned int)
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 168 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
+	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 169 NONAME ; void RadioHistoryModel::removeAll(bool)
+	?hasGenre@RadioStation@@QBE_NXZ @ 170 NONAME ; bool RadioStation::hasGenre(void) const
+	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 171 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
+	?setPowerOn@RadioUiEngine@@QAEXXZ @ 172 NONAME ; void RadioUiEngine::setPowerOn(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 173 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
+	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 174 NONAME ; class QString RadioStation::dynamicPsText(void) const
+	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 175 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
+	?setMute@RadioUiEngine@@QAEX_N@Z @ 176 NONAME ; void RadioUiEngine::setMute(bool)
+	?setGenre@RadioStation@@AAEXH@Z @ 177 NONAME ; void RadioStation::setGenre(int)
+	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 178 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
+	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 179 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
+	??_ERadioUiEngine@@UAE@I@Z @ 180 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
+	?init@RadioUiEngine@@QAE_NXZ @ 181 NONAME ; bool RadioUiEngine::init(void)
+	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 182 NONAME ; void RadioStation::setRadioText(class QString const &)
+	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 183 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
+	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 184 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
+	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 185 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
+	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 186 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
+	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 187 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
+	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 188 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
+	??1RadioUiEngine@@UAE@XZ @ 189 NONAME ; RadioUiEngine::~RadioUiEngine(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 190 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
+	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 191 NONAME ; class QString RadioHistoryItem::time(void) const
+	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 192 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
+	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 193 NONAME ; class QString RadioHistoryItem::artist(void) const
+	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 194 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
+	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 195 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
+	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 196 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
+	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 197 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
+	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 198 NONAME ; void RadioUiEngine::volumeChanged(int)
+	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 199 NONAME ; class QString RadioHistoryItem::title(void) const
+	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 200 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
+	?resetChangeFlags@RadioStation@@QAEXXZ @ 201 NONAME ; void RadioStation::resetChangeFlags(void)
+	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 202 NONAME ; void RadioUiEngine::powerOffRequested(void)
+	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 203 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
+	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 204 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
+	?callSignChar@RadioStation@@AAEDI@Z @ 205 NONAME ; char RadioStation::callSignChar(unsigned int)
+	??_ERadioStation@@UAE@I@Z @ 206 NONAME ; RadioStation::~RadioStation(unsigned int)
+	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 207 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
+	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 208 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
+	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 209 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
+	??0RadioStation@@AAE@HI@Z @ 210 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 211 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isDetached@RadioStation@@QBE_NXZ @ 212 NONAME ; bool RadioStation::isDetached(void) const
+	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 213 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
+	?name@RadioStation@@QBE?AVQString@@XZ @ 214 NONAME ; class QString RadioStation::name(void) const
+	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 215 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
+	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 216 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
+	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 217 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
+	?itemAdded@RadioHistoryModel@@IAEXXZ @ 218 NONAME ; void RadioHistoryModel::itemAdded(void)
+	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 219 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
+	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 220 NONAME ; void RadioHistoryModel::setShowDetails(bool)
+	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 221 NONAME ; void RadioUiEngine::launchSongRecognition(void)
+	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 222 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
+	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 223 NONAME ; class QString RadioStation::iterateCallSign(int, int)
+	?toggleMute@RadioUiEngine@@QAEXXZ @ 224 NONAME ; void RadioUiEngine::toggleMute(void)
+	?piCode@RadioStation@@QBEHXZ @ 225 NONAME ; int RadioStation::piCode(void) const
+	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 226 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
+	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 227 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
+	?hasRadiotext@RadioStation@@QBE_NXZ @ 228 NONAME ; bool RadioStation::hasRadiotext(void) const
+	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 229 NONAME ; void RadioHistoryItem::setCurrentTime(void)
+	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 230 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
+	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 231 NONAME ; class QString RadioHistoryItem::station(void) const
+	??_ERadioHistoryModel@@UAE@I@Z @ 232 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
+	?minFrequency@RadioUiEngine@@QBEIXZ @ 233 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
+	?isTagged@RadioHistoryItem@@QBE_NXZ @ 234 NONAME ; bool RadioHistoryItem::isTagged(void) const
+	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 235 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
+	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 236 NONAME ; void RadioHistoryModel::setShowTagged(bool)
+	?setPresetIndex@RadioStation@@AAEXH@Z @ 237 NONAME ; void RadioStation::setPresetIndex(int)
+	?setName@RadioStation@@AAEXABVQString@@@Z @ 238 NONAME ; void RadioStation::setName(class QString const &)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 239 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
+	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 240 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
+	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 241 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 242 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
+	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 243 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
+	?isFavorite@RadioStation@@QBE_NXZ @ 244 NONAME ; bool RadioStation::isFavorite(void) const
+	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 245 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
+	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 246 NONAME ; void RadioUiEngine::seekingStarted(int)
+	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 247 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
+	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 248 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
+	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 249 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
+	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 250 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
+	??_ERadioStationModel@@UAE@I@Z @ 251 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
+	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 252 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?lastVolume@RadioUiEngine@@SAHXZ @ 253 NONAME ; int RadioUiEngine::lastVolume(void)
 
--- a/radioapp/bwins/fmradiowidgetsu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/bwins/fmradiowidgetsu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -2,160 +2,164 @@
 	?trUtf8@RadioWindow@@SA?AVQString@@PBD0H@Z @ 1 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *, int)
 	?nextIndex@RadioStationCarousel@@AAEHH@Z @ 2 NONAME ; int RadioStationCarousel::nextIndex(int)
 	?scrollToIndex@RadioStationCarousel@@AAEXHW4Direction@Scroll@@V?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 3 NONAME ; void RadioStationCarousel::scrollToIndex(int, enum Scroll::Direction, class QFlags<enum RadioStationCarousel::ScrollFlag>)
-	?updateItem@RadioFrequencyStrip@@AAEXPAVRadioFrequencyItem@@II@Z @ 4 NONAME ; void RadioFrequencyStrip::updateItem(class RadioFrequencyItem *, unsigned int, unsigned int)
-	?qt_metacast@RadioFadingLabel@@UAEPAXPBD@Z @ 5 NONAME ; void * RadioFadingLabel::qt_metacast(char const *)
-	?findStation@RadioStationCarousel@@EAE?AVRadioStation@@I@Z @ 6 NONAME ; class RadioStation RadioStationCarousel::findStation(unsigned int)
-	?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 7 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &)
-	?nonFavoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 8 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const
-	?gestureEvent@RadioStationCarousel@@EAEXPAVQGestureEvent@@@Z @ 9 NONAME ; void RadioStationCarousel::gestureEvent(class QGestureEvent *)
-	?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 10 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &)
-	?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 11 NONAME ; void RadioStationCarousel::update(class RadioStation const &)
-	?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 12 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *)
-	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *)
-	?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 14 NONAME ; void RadioFrequencyStrip::setScanningMode(bool)
-	?handleUrlClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 15 NONAME ; void RadioStationCarousel::handleUrlClicked(class RadioStation const &)
-	?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 16 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *)
-	?skipRequested@RadioStationCarousel@@IAEXH@Z @ 17 NONAME ; void RadioStationCarousel::skipRequested(int)
-	?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 18 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &)
-	?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 19 NONAME ; void RadioWindow::updateAntennaStatus(bool)
-	?handleIconClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 20 NONAME ; void RadioStationCarousel::handleIconClicked(class RadioStation const &)
-	?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 21 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *)
-	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 22 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
-	?initButtons@RadioFrequencyStrip@@AAEXXZ @ 23 NONAME ; void RadioFrequencyStrip::initButtons(void)
-	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 25 NONAME ; bool RadioStationCarousel::isInitialized(void) const
-	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 26 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
-	?manualSeekChanged@RadioFrequencyStrip@@IAEX_N@Z @ 27 NONAME ; void RadioFrequencyStrip::manualSeekChanged(bool)
-	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 28 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
-	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 29 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
-	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 30 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
-	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 31 NONAME ; int RadioStationCarousel::prevIndex(int)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
-	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 34 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
-	?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 35 NONAME ; int RadioFrequencyStrip::selectorPos(void) const
-	??1RadioWindow@@UAE@XZ @ 36 NONAME ; RadioWindow::~RadioWindow(void)
-	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 37 NONAME ; void RadioFrequencyStrip::skipRequested(int)
-	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 38 NONAME ; void RadioFadingLabel::setText(class QString const &)
-	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 39 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
-	?mousePressEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 40 NONAME ; void RadioStationCarousel::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
-	?handleScrollingEnd@RadioFrequencyStrip@@AAEXXZ @ 42 NONAME ; void RadioFrequencyStrip::handleScrollingEnd(void)
-	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 43 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
-	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 44 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
-	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 45 NONAME ; class QString RadioWindow::orientationSection(void)
-	?updateStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 46 NONAME ; void RadioFrequencyStrip::updateStation(class QModelIndex const &, int, int)
-	??1RadioFrequencyStrip@@UAE@XZ @ 47 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
-	?queryOfflineUsage@RadioWindow@@AAEXW4Profile@QSystemDeviceInfo@QtMobility@@@Z @ 48 NONAME ; void RadioWindow::queryOfflineUsage(enum QtMobility::QSystemDeviceInfo::Profile)
-	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 49 NONAME ; void RadioStationCarousel::cancelAnimation(void)
-	?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 50 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *)
-	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 51 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
-	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 52 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0RadioFrequencyStrip@@QAE@XZ @ 53 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
-	?timerEvent@RadioFrequencyStrip@@EAEXPAVQTimerEvent@@@Z @ 54 NONAME ; void RadioFrequencyStrip::timerEvent(class QTimerEvent *)
-	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 55 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
-	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 56 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
-	?scrollPosChanged@RadioFrequencyStrip@@EAEXXZ @ 57 NONAME ; void RadioFrequencyStrip::scrollPosChanged(void)
-	?updateStations@RadioStationCarousel@@AAEXXZ @ 58 NONAME ; void RadioStationCarousel::updateStations(void)
-	??_ERadioWindow@@UAE@I@Z @ 59 NONAME ; RadioWindow::~RadioWindow(unsigned int)
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 60 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
-	?initSelector@RadioFrequencyStrip@@AAEXXZ @ 61 NONAME ; void RadioFrequencyStrip::initSelector(void)
-	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 63 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 64 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
-	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 65 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
-	?setFrequency@RadioFrequencyStrip@@QAEXIHW4Direction@Scroll@@@Z @ 66 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?activateHistoryView@RadioWindow@@QAEXXZ @ 67 NONAME ; void RadioWindow::activateHistoryView(void)
-	??_ERadioStationCarousel@@UAE@I@Z @ 68 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int)
-	?initPositions@RadioFrequencyStrip@@AAEXXZ @ 69 NONAME ; void RadioFrequencyStrip::initPositions(void)
-	?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 70 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *)
-	?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 71 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void)
-	?setManualSeekMode@RadioStationCarousel@@QAEX_N@Z @ 72 NONAME ; void RadioStationCarousel::setManualSeekMode(bool)
-	?qt_metacast@RadioWindow@@UAEPAXPBD@Z @ 73 NONAME ; void * RadioWindow::qt_metacast(char const *)
-	?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 74 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &)
-	?tr@RadioWindow@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString RadioWindow::tr(char const *, char const *)
-	?favoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 76 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const
-	?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 77 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 78 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int)
-	?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 79 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void)
-	?showErrorMessage@RadioWindow@@QAEXABVQString@@@Z @ 80 NONAME ; void RadioWindow::showErrorMessage(class QString const &)
-	??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 81 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *)
-	?updateStationsInRange@RadioFrequencyStrip@@AAEXHH_N@Z @ 82 NONAME ; void RadioFrequencyStrip::updateStationsInRange(int, int, bool)
-	?initModel@RadioFrequencyStrip@@AAEXXZ @ 83 NONAME ; void RadioFrequencyStrip::initModel(void)
-	?frequency@RadioFrequencyStrip@@QBEIXZ @ 84 NONAME ; unsigned int RadioFrequencyStrip::frequency(void) const
-	?isInManualSeek@RadioStationCarousel@@EBE_NXZ @ 85 NONAME ; bool RadioStationCarousel::isInManualSeek(void) const
-	??1RadioStationCarousel@@UAE@XZ @ 86 NONAME ; RadioStationCarousel::~RadioStationCarousel(void)
-	??_ERadioFrequencyStrip@@UAE@I@Z @ 87 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int)
-	?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 88 NONAME ; void RadioFadingLabel::setFadingEnabled(bool)
-	?localizeGenre@RadioStationCarousel@@EAE?AVQString@@H@Z @ 89 NONAME ; class QString RadioStationCarousel::localizeGenre(int)
-	?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 90 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?showVolumeLevel@RadioWindow@@AAEXH@Z @ 91 NONAME ; void RadioWindow::showVolumeLevel(int)
-	?getStaticMetaObject@RadioWindow@@SAABUQMetaObject@@XZ @ 92 NONAME ; struct QMetaObject const & RadioWindow::getStaticMetaObject(void)
-	?trUtf8@RadioWindow@@SA?AVQString@@PBD0@Z @ 93 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *)
-	?handleRadiotextClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 94 NONAME ; void RadioStationCarousel::handleRadiotextClicked(class RadioStation const &)
-	?timerFired@RadioStationCarousel@@AAEXXZ @ 95 NONAME ; void RadioStationCarousel::timerFired(void)
-	?toggleManualSeek@RadioFrequencyStrip@@AAEXXZ @ 96 NONAME ; void RadioFrequencyStrip::toggleManualSeek(void)
-	?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 97 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList<class RadioStation>, class RadioFrequencyItem *)
-	?initEmptyItems@RadioFrequencyStrip@@AAEXXZ @ 98 NONAME ; void RadioFrequencyStrip::initEmptyItems(void)
-	??0RadioWindow@@QAE@PAVQWidget@@@Z @ 99 NONAME ; RadioWindow::RadioWindow(class QWidget *)
-	?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 100 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int)
-	?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 101 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &)
-	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 102 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
-	?updateFavorite@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 103 NONAME ; void RadioFrequencyStrip::updateFavorite(class RadioStation const &)
-	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 104 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 105 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
-	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 106 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 107 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 108 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
-	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 109 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
-	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 110 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
-	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 111 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
-	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 112 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
-	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 113 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
-	?handleRightButton@RadioFrequencyStrip@@AAEXXZ @ 114 NONAME ; void RadioFrequencyStrip::handleRightButton(void)
-	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 115 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
-	?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 116 NONAME ; class QString RadioWindow::tr(char const *, char const *, int)
-	?addScannedStation@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 117 NONAME ; void RadioFrequencyStrip::addScannedStation(class RadioStation const &)
-	?handleLongRightButton@RadioFrequencyStrip@@AAEXXZ @ 118 NONAME ; void RadioFrequencyStrip::handleLongRightButton(void)
-	?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 119 NONAME ; void RadioFrequencyStrip::seekRequested(int)
-	?isInManualSeekMode@RadioFrequencyStrip@@QBE_NXZ @ 120 NONAME ; bool RadioFrequencyStrip::isInManualSeekMode(void) const
-	?scrollToFrequency@RadioFrequencyStrip@@AAEXIW4Direction@Scroll@@HW4Reason@TuneReason@@@Z @ 121 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, enum Scroll::Direction, int, enum TuneReason::Reason)
-	??0RadioStationCarousel@@QAE@PAVQGraphicsItem@@@Z @ 122 NONAME ; RadioStationCarousel::RadioStationCarousel(class QGraphicsItem *)
-	?adjustAfterScroll@RadioStationCarousel@@AAEXXZ @ 123 NONAME ; void RadioStationCarousel::adjustAfterScroll(void)
-	?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 124 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const
-	?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 125 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus)
-	?updateOrientation@RadioWindow@@AAEXW4Orientation@Qt@@@Z @ 126 NONAME ; void RadioWindow::updateOrientation(enum Qt::Orientation)
-	?init@RadioWindow@@QAEXPAVQSystemDeviceInfo@QtMobility@@@Z @ 127 NONAME ; void RadioWindow::init(class QtMobility::QSystemDeviceInfo *)
-	?showButtons@RadioFrequencyStrip@@AAEXXZ @ 128 NONAME ; void RadioFrequencyStrip::showButtons(void)
-	?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 129 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void)
-	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 130 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int)
-	?activateMainView@RadioWindow@@QAEXXZ @ 131 NONAME ; void RadioWindow::activateMainView(void)
-	?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 132 NONAME ; void RadioStationCarousel::setScanningMode(bool)
-	??1RadioFadingLabel@@UAE@XZ @ 133 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
-	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 134 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
-	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 135 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
-	?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 136 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
-	?activateStationsView@RadioWindow@@QAEXXZ @ 137 NONAME ; void RadioWindow::activateStationsView(void)
-	?removeStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 138 NONAME ; void RadioFrequencyStrip::removeStation(class QModelIndex const &, int, int)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 139 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
-	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 140 NONAME ; int RadioStationCarousel::trimIndex(int)
-	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 141 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
-	?setAlternateSkippingMode@RadioStationCarousel@@QAEX_N@Z @ 142 NONAME ; void RadioStationCarousel::setAlternateSkippingMode(bool)
-	?initView@RadioWindow@@AAEXXZ @ 143 NONAME ; void RadioWindow::initView(void)
-	?gestureEvent@RadioFrequencyStrip@@EAEXPAVQGestureEvent@@@Z @ 144 NONAME ; void RadioFrequencyStrip::gestureEvent(class QGestureEvent *)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 145 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
-	?handleLongLeftButton@RadioFrequencyStrip@@AAEXXZ @ 146 NONAME ; void RadioFrequencyStrip::handleLongLeftButton(void)
-	?hideButtons@RadioFrequencyStrip@@AAEXXZ @ 147 NONAME ; void RadioFrequencyStrip::hideButtons(void)
-	?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 148 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int)
-	?handleLeftButton@RadioFrequencyStrip@@AAEXXZ @ 149 NONAME ; void RadioFrequencyStrip::handleLeftButton(void)
-	??_ERadioFadingLabel@@UAE@I@Z @ 150 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
-	?cancelManualSeek@RadioFrequencyStrip@@QAEXXZ @ 151 NONAME ; void RadioFrequencyStrip::cancelManualSeek(void)
-	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 152 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
-	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 153 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
-	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 154 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
-	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 155 NONAME ; void RadioStationCarousel::cleanRdsData(void)
-	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 156 NONAME ; void RadioStationCarousel::clearInfoText(void)
-	?updateAllItems@RadioFrequencyStrip@@AAEXXZ @ 157 NONAME ; void RadioFrequencyStrip::updateAllItems(void)
-	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 158 NONAME ; void RadioStationCarousel::adjustPos(int)
-	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 159 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
+	?drawOffScreen@RadioStationCarousel@@QAEXAAVQPainter@@@Z @ 4 NONAME ; void RadioStationCarousel::drawOffScreen(class QPainter &)
+	?updateItem@RadioFrequencyStrip@@AAEXPAVRadioFrequencyItem@@II@Z @ 5 NONAME ; void RadioFrequencyStrip::updateItem(class RadioFrequencyItem *, unsigned int, unsigned int)
+	?qt_metacast@RadioFadingLabel@@UAEPAXPBD@Z @ 6 NONAME ; void * RadioFadingLabel::qt_metacast(char const *)
+	?findStation@RadioStationCarousel@@EAE?AVRadioStation@@I@Z @ 7 NONAME ; class RadioStation RadioStationCarousel::findStation(unsigned int)
+	?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 8 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &)
+	?nonFavoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 9 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const
+	?gestureEvent@RadioStationCarousel@@EAEXPAVQGestureEvent@@@Z @ 10 NONAME ; void RadioStationCarousel::gestureEvent(class QGestureEvent *)
+	?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 11 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &)
+	?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 12 NONAME ; void RadioStationCarousel::update(class RadioStation const &)
+	?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 13 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *)
+	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *)
+	?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 15 NONAME ; void RadioFrequencyStrip::setScanningMode(bool)
+	?handleUrlClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 16 NONAME ; void RadioStationCarousel::handleUrlClicked(class RadioStation const &)
+	?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 17 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *)
+	?skipRequested@RadioStationCarousel@@IAEXH@Z @ 18 NONAME ; void RadioStationCarousel::skipRequested(int)
+	?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 19 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &)
+	?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 20 NONAME ; void RadioWindow::updateAntennaStatus(bool)
+	?handleIconClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 21 NONAME ; void RadioStationCarousel::handleIconClicked(class RadioStation const &)
+	?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 22 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *)
+	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 23 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
+	?initButtons@RadioFrequencyStrip@@AAEXXZ @ 24 NONAME ; void RadioFrequencyStrip::initButtons(void)
+	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 26 NONAME ; bool RadioStationCarousel::isInitialized(void) const
+	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 27 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
+	?manualSeekChanged@RadioFrequencyStrip@@IAEX_N@Z @ 28 NONAME ; void RadioFrequencyStrip::manualSeekChanged(bool)
+	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 29 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
+	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 30 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
+	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 31 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
+	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 32 NONAME ; int RadioStationCarousel::prevIndex(int)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 34 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
+	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 35 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
+	?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 36 NONAME ; int RadioFrequencyStrip::selectorPos(void) const
+	??1RadioWindow@@UAE@XZ @ 37 NONAME ; RadioWindow::~RadioWindow(void)
+	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 38 NONAME ; void RadioFrequencyStrip::skipRequested(int)
+	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 39 NONAME ; void RadioFadingLabel::setText(class QString const &)
+	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 40 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
+	?mousePressEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 41 NONAME ; void RadioStationCarousel::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
+	?handleScrollingEnd@RadioFrequencyStrip@@AAEXXZ @ 43 NONAME ; void RadioFrequencyStrip::handleScrollingEnd(void)
+	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 44 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
+	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 45 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
+	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 46 NONAME ; class QString RadioWindow::orientationSection(void)
+	?updateStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 47 NONAME ; void RadioFrequencyStrip::updateStation(class QModelIndex const &, int, int)
+	??1RadioFrequencyStrip@@UAE@XZ @ 48 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
+	?setItemHeight@RadioFrequencyStrip@@QAEXH@Z @ 49 NONAME ; void RadioFrequencyStrip::setItemHeight(int)
+	?queryOfflineUsage@RadioWindow@@AAEXW4Profile@QSystemDeviceInfo@QtMobility@@@Z @ 50 NONAME ; void RadioWindow::queryOfflineUsage(enum QtMobility::QSystemDeviceInfo::Profile)
+	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 51 NONAME ; void RadioStationCarousel::cancelAnimation(void)
+	?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 52 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *)
+	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 53 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
+	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 54 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0RadioFrequencyStrip@@QAE@XZ @ 55 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
+	?timerEvent@RadioFrequencyStrip@@EAEXPAVQTimerEvent@@@Z @ 56 NONAME ; void RadioFrequencyStrip::timerEvent(class QTimerEvent *)
+	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 57 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
+	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 58 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
+	?scrollPosChanged@RadioFrequencyStrip@@EAEXXZ @ 59 NONAME ; void RadioFrequencyStrip::scrollPosChanged(void)
+	?updateStations@RadioStationCarousel@@AAEXXZ @ 60 NONAME ; void RadioStationCarousel::updateStations(void)
+	??_ERadioWindow@@UAE@I@Z @ 61 NONAME ; RadioWindow::~RadioWindow(unsigned int)
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 62 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
+	?initSelector@RadioFrequencyStrip@@AAEXXZ @ 63 NONAME ; void RadioFrequencyStrip::initSelector(void)
+	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 64 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 65 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
+	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 67 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
+	?setFrequency@RadioFrequencyStrip@@QAEXIHW4Direction@Scroll@@@Z @ 68 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?activateHistoryView@RadioWindow@@QAEXXZ @ 69 NONAME ; void RadioWindow::activateHistoryView(void)
+	??_ERadioStationCarousel@@UAE@I@Z @ 70 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int)
+	?initPositions@RadioFrequencyStrip@@AAEXXZ @ 71 NONAME ; void RadioFrequencyStrip::initPositions(void)
+	?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 72 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *)
+	?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 73 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void)
+	?itemHeight@RadioFrequencyStrip@@QBEHXZ @ 74 NONAME ; int RadioFrequencyStrip::itemHeight(void) const
+	?setManualSeekMode@RadioStationCarousel@@QAEX_N@Z @ 75 NONAME ; void RadioStationCarousel::setManualSeekMode(bool)
+	?qt_metacast@RadioWindow@@UAEPAXPBD@Z @ 76 NONAME ; void * RadioWindow::qt_metacast(char const *)
+	?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 77 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &)
+	?tr@RadioWindow@@SA?AVQString@@PBD0@Z @ 78 NONAME ; class QString RadioWindow::tr(char const *, char const *)
+	?favoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 79 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const
+	?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 80 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 81 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int)
+	?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 82 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void)
+	?showErrorMessage@RadioWindow@@QAEXABVQString@@@Z @ 83 NONAME ; void RadioWindow::showErrorMessage(class QString const &)
+	??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 84 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *)
+	?updateStationsInRange@RadioFrequencyStrip@@AAEXHH_N@Z @ 85 NONAME ; void RadioFrequencyStrip::updateStationsInRange(int, int, bool)
+	?initModel@RadioFrequencyStrip@@AAEXXZ @ 86 NONAME ; void RadioFrequencyStrip::initModel(void)
+	?frequency@RadioFrequencyStrip@@QBEIXZ @ 87 NONAME ; unsigned int RadioFrequencyStrip::frequency(void) const
+	?isInManualSeek@RadioStationCarousel@@EBE_NXZ @ 88 NONAME ; bool RadioStationCarousel::isInManualSeek(void) const
+	??1RadioStationCarousel@@UAE@XZ @ 89 NONAME ; RadioStationCarousel::~RadioStationCarousel(void)
+	??_ERadioFrequencyStrip@@UAE@I@Z @ 90 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int)
+	?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 91 NONAME ; void RadioFadingLabel::setFadingEnabled(bool)
+	?localizeGenre@RadioStationCarousel@@EAE?AVQString@@H@Z @ 92 NONAME ; class QString RadioStationCarousel::localizeGenre(int)
+	?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 93 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?showVolumeLevel@RadioWindow@@AAEXH@Z @ 94 NONAME ; void RadioWindow::showVolumeLevel(int)
+	?getStaticMetaObject@RadioWindow@@SAABUQMetaObject@@XZ @ 95 NONAME ; struct QMetaObject const & RadioWindow::getStaticMetaObject(void)
+	?trUtf8@RadioWindow@@SA?AVQString@@PBD0@Z @ 96 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *)
+	?toggleManualSeek@RadioFrequencyStrip@@AAEXXZ @ 97 NONAME ; void RadioFrequencyStrip::toggleManualSeek(void)
+	?timerFired@RadioStationCarousel@@AAEXXZ @ 98 NONAME ; void RadioStationCarousel::timerFired(void)
+	?handleRadiotextClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 99 NONAME ; void RadioStationCarousel::handleRadiotextClicked(class RadioStation const &)
+	?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 100 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList<class RadioStation>, class RadioFrequencyItem *)
+	?initEmptyItems@RadioFrequencyStrip@@AAEXXZ @ 101 NONAME ; void RadioFrequencyStrip::initEmptyItems(void)
+	?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 102 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int)
+	??0RadioWindow@@QAE@PAVQWidget@@@Z @ 103 NONAME ; RadioWindow::RadioWindow(class QWidget *)
+	?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 104 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &)
+	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 105 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
+	?updateFavorite@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 106 NONAME ; void RadioFrequencyStrip::updateFavorite(class RadioStation const &)
+	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 107 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 108 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
+	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 109 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 110 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 111 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
+	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 112 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
+	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 113 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
+	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 114 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
+	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 115 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
+	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 116 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
+	?handleRightButton@RadioFrequencyStrip@@AAEXXZ @ 117 NONAME ; void RadioFrequencyStrip::handleRightButton(void)
+	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 118 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
+	?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 119 NONAME ; class QString RadioWindow::tr(char const *, char const *, int)
+	?addScannedStation@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 120 NONAME ; void RadioFrequencyStrip::addScannedStation(class RadioStation const &)
+	?handleLongRightButton@RadioFrequencyStrip@@AAEXXZ @ 121 NONAME ; void RadioFrequencyStrip::handleLongRightButton(void)
+	?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 122 NONAME ; void RadioFrequencyStrip::seekRequested(int)
+	?isInManualSeekMode@RadioFrequencyStrip@@QBE_NXZ @ 123 NONAME ; bool RadioFrequencyStrip::isInManualSeekMode(void) const
+	?scrollToFrequency@RadioFrequencyStrip@@AAEXIW4Direction@Scroll@@HW4Reason@TuneReason@@@Z @ 124 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, enum Scroll::Direction, int, enum TuneReason::Reason)
+	??0RadioStationCarousel@@QAE@PAVQGraphicsItem@@@Z @ 125 NONAME ; RadioStationCarousel::RadioStationCarousel(class QGraphicsItem *)
+	?adjustAfterScroll@RadioStationCarousel@@AAEXXZ @ 126 NONAME ; void RadioStationCarousel::adjustAfterScroll(void)
+	?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 127 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const
+	?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 128 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus)
+	?updateOrientation@RadioWindow@@AAEXW4Orientation@Qt@@@Z @ 129 NONAME ; void RadioWindow::updateOrientation(enum Qt::Orientation)
+	?init@RadioWindow@@QAEXPAVQSystemDeviceInfo@QtMobility@@@Z @ 130 NONAME ; void RadioWindow::init(class QtMobility::QSystemDeviceInfo *)
+	?showButtons@RadioFrequencyStrip@@AAEXXZ @ 131 NONAME ; void RadioFrequencyStrip::showButtons(void)
+	?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 132 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void)
+	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 133 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int)
+	?activateMainView@RadioWindow@@QAEXXZ @ 134 NONAME ; void RadioWindow::activateMainView(void)
+	?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 135 NONAME ; void RadioStationCarousel::setScanningMode(bool)
+	??1RadioFadingLabel@@UAE@XZ @ 136 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
+	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 137 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
+	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 138 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
+	?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 139 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
+	?activateStationsView@RadioWindow@@QAEXXZ @ 140 NONAME ; void RadioWindow::activateStationsView(void)
+	?removeStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 141 NONAME ; void RadioFrequencyStrip::removeStation(class QModelIndex const &, int, int)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 142 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
+	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 143 NONAME ; int RadioStationCarousel::trimIndex(int)
+	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 144 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
+	?setAlternateSkippingMode@RadioStationCarousel@@QAEX_N@Z @ 145 NONAME ; void RadioStationCarousel::setAlternateSkippingMode(bool)
+	?initView@RadioWindow@@AAEXXZ @ 146 NONAME ; void RadioWindow::initView(void)
+	?gestureEvent@RadioFrequencyStrip@@EAEXPAVQGestureEvent@@@Z @ 147 NONAME ; void RadioFrequencyStrip::gestureEvent(class QGestureEvent *)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 148 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
+	?handleLongLeftButton@RadioFrequencyStrip@@AAEXXZ @ 149 NONAME ; void RadioFrequencyStrip::handleLongLeftButton(void)
+	?hideButtons@RadioFrequencyStrip@@AAEXXZ @ 150 NONAME ; void RadioFrequencyStrip::hideButtons(void)
+	?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 151 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int)
+	?handleLeftButton@RadioFrequencyStrip@@AAEXXZ @ 152 NONAME ; void RadioFrequencyStrip::handleLeftButton(void)
+	??_ERadioFadingLabel@@UAE@I@Z @ 153 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
+	?cancelManualSeek@RadioFrequencyStrip@@QAEXXZ @ 154 NONAME ; void RadioFrequencyStrip::cancelManualSeek(void)
+	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 155 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
+	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 156 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
+	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 157 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
+	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 158 NONAME ; void RadioStationCarousel::cleanRdsData(void)
+	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 159 NONAME ; void RadioStationCarousel::clearInfoText(void)
+	?updateAllItems@RadioFrequencyStrip@@AAEXXZ @ 160 NONAME ; void RadioFrequencyStrip::updateAllItems(void)
+	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 161 NONAME ; void RadioStationCarousel::adjustPos(int)
+	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 162 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
+	?makeTab@RadioFrequencyStrip@@AAE?AVQLineF@@MH@Z @ 163 NONAME ; class QLineF RadioFrequencyStrip::makeTab(float, int)
 
--- a/radioapp/eabi/fmradiouiengineu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/eabi/fmradiouiengineu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -57,140 +57,140 @@
 	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 56 NONAME
 	_ZN13RadioUiEngine17audioRouteChangedEb @ 57 NONAME
 	_ZN13RadioUiEngine17emitVolumeChangedEi @ 58 NONAME
-	_ZN13RadioUiEngine17powerOffRequestedEv @ 59 NONAME
-	_ZN13RadioUiEngine17setManualSeekModeEb @ 60 NONAME
-	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 61 NONAME
-	_ZN13RadioUiEngine18lastTunedFrequencyEv @ 62 NONAME
-	_ZN13RadioUiEngine18radioStatusChangedEb @ 63 NONAME
-	_ZN13RadioUiEngine19createScannerEngineEv @ 64 NONAME
-	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 65 NONAME
-	_ZN13RadioUiEngine20antennaStatusChangedEb @ 66 NONAME
-	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 67 NONAME
-	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 68 NONAME
-	_ZN13RadioUiEngine21launchSongRecognitionEv @ 69 NONAME
-	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 70 NONAME
-	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 71 NONAME
-	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 72 NONAME
-	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 73 NONAME
-	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 74 NONAME
-	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 75 NONAME
-	_ZN13RadioUiEngine4initEv @ 76 NONAME
-	_ZN13RadioUiEngine7setMuteEb @ 77 NONAME
-	_ZN13RadioUiEngine8settingsEv @ 78 NONAME
-	_ZN13RadioUiEngine9setVolumeEi @ 79 NONAME
-	_ZN13RadioUiEngineC1EP7QObject @ 80 NONAME
-	_ZN13RadioUiEngineC2EP7QObject @ 81 NONAME
-	_ZN13RadioUiEngineD0Ev @ 82 NONAME
-	_ZN13RadioUiEngineD1Ev @ 83 NONAME
-	_ZN13RadioUiEngineD2Ev @ 84 NONAME
-	_ZN16RadioHistoryItem10setStationERK7QString @ 85 NONAME
-	_ZN16RadioHistoryItem12setFrequencyEj @ 86 NONAME
-	_ZN16RadioHistoryItem14setCurrentTimeEv @ 87 NONAME
-	_ZN16RadioHistoryItem5resetEv @ 88 NONAME
-	_ZN16RadioHistoryItem8setTitleERK7QString @ 89 NONAME
-	_ZN16RadioHistoryItem9setArtistERK7QString @ 90 NONAME
-	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 91 NONAME
-	_ZN16RadioHistoryItemC1ERKS_ @ 92 NONAME
-	_ZN16RadioHistoryItemC1Ev @ 93 NONAME
-	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 94 NONAME
-	_ZN16RadioHistoryItemC2ERKS_ @ 95 NONAME
-	_ZN16RadioHistoryItemC2Ev @ 96 NONAME
-	_ZN16RadioHistoryItemD1Ev @ 97 NONAME
-	_ZN16RadioHistoryItemD2Ev @ 98 NONAME
-	_ZN16RadioHistoryItemaSERKS_ @ 99 NONAME
-	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 100 NONAME
-	_ZN17RadioHistoryModel11qt_metacastEPKc @ 101 NONAME
-	_ZN17RadioHistoryModel13emitItemAddedEv @ 102 NONAME
-	_ZN17RadioHistoryModel13setShowTaggedEb @ 103 NONAME
-	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 104 NONAME
-	_ZN17RadioHistoryModel14setShowDetailsEb @ 105 NONAME
-	_ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 106 NONAME
-	_ZN17RadioHistoryModel16currentSongResetEv @ 107 NONAME
-	_ZN17RadioHistoryModel16resetCurrentSongEv @ 108 NONAME
-	_ZN17RadioHistoryModel16staticMetaObjectE @ 109 NONAME DATA 16
-	_ZN17RadioHistoryModel17reportChangedDataEii @ 110 NONAME
-	_ZN17RadioHistoryModel18clearRadioTextPlusEv @ 111 NONAME
-	_ZN17RadioHistoryModel19getStaticMetaObjectEv @ 112 NONAME
-	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 113 NONAME
-	_ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 114 NONAME
-	_ZN17RadioHistoryModel9itemAddedEv @ 115 NONAME
-	_ZN17RadioHistoryModel9removeAllEb @ 116 NONAME
-	_ZN17RadioHistoryModelC1ER13RadioUiEngine @ 117 NONAME
-	_ZN17RadioHistoryModelC2ER13RadioUiEngine @ 118 NONAME
-	_ZN17RadioHistoryModelD0Ev @ 119 NONAME
-	_ZN17RadioHistoryModelD1Ev @ 120 NONAME
-	_ZN17RadioHistoryModelD2Ev @ 121 NONAME
-	_ZN17RadioStationModel10addStationERK12RadioStation @ 122 NONAME
-	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 123 NONAME
-	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 124 NONAME
-	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 125 NONAME
-	_ZN17RadioStationModel11qt_metacastEPKc @ 126 NONAME
-	_ZN17RadioStationModel11saveStationER12RadioStation @ 127 NONAME
-	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 128 NONAME
-	_ZN17RadioStationModel13favoriteCountEv @ 129 NONAME
-	_ZN17RadioStationModel13removeStationERK12RadioStation @ 130 NONAME
-	_ZN17RadioStationModel13renameStationEiRK7QString @ 131 NONAME
-	_ZN17RadioStationModel14currentStationEv @ 132 NONAME
-	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 133 NONAME
-	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 134 NONAME
-	_ZN17RadioStationModel15findPresetIndexEi @ 135 NONAME
-	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 136 NONAME
-	_ZN17RadioStationModel15stationsInRangeEjj @ 137 NONAME
-	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 138 NONAME
-	_ZN17RadioStationModel16staticMetaObjectE @ 139 NONAME DATA 16
-	_ZN17RadioStationModel16stationHandlerIfEv @ 140 NONAME
-	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 141 NONAME
-	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 142 NONAME
-	_ZN17RadioStationModel17removeByFrequencyEj @ 143 NONAME
-	_ZN17RadioStationModel18indexFromFrequencyEj @ 144 NONAME
-	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 145 NONAME
-	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 146 NONAME
-	_ZN17RadioStationModel19getStaticMetaObjectEv @ 147 NONAME
-	_ZN17RadioStationModel19removeByPresetIndexEi @ 148 NONAME
-	_ZN17RadioStationModel19setFavoriteByPresetEib @ 149 NONAME
-	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 150 NONAME
-	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 151 NONAME
-	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 152 NONAME
-	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 153 NONAME
-	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 154 NONAME
-	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 155 NONAME
-	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 156 NONAME
-	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 157 NONAME
-	_ZN17RadioStationModelD0Ev @ 158 NONAME
-	_ZN17RadioStationModelD1Ev @ 159 NONAME
-	_ZN17RadioStationModelD2Ev @ 160 NONAME
-	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 161 NONAME
-	_ZN18RadioScannerEngine11qt_metacastEPKc @ 162 NONAME
-	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 163 NONAME
-	_ZN18RadioScannerEngine13startScanningEv @ 164 NONAME
-	_ZN18RadioScannerEngine16continueScanningEv @ 165 NONAME
-	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 166 NONAME
-	_ZN18RadioScannerEngine16staticMetaObjectE @ 167 NONAME DATA 16
-	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 168 NONAME
-	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 169 NONAME
-	_ZN18RadioScannerEngine6cancelEv @ 170 NONAME
-	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 171 NONAME
-	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 172 NONAME
-	_ZN18RadioScannerEngineD0Ev @ 173 NONAME
-	_ZN18RadioScannerEngineD1Ev @ 174 NONAME
-	_ZN18RadioScannerEngineD2Ev @ 175 NONAME
-	_ZNK12RadioStation10hasChangedEv @ 176 NONAME
-	_ZNK12RadioStation10isDetachedEv @ 177 NONAME
-	_ZNK12RadioStation10isFavoriteEv @ 178 NONAME
-	_ZNK12RadioStation11changeFlagsEv @ 179 NONAME
-	_ZNK12RadioStation11presetIndexEv @ 180 NONAME
-	_ZNK12RadioStation13dynamicPsTextEv @ 181 NONAME
-	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 182 NONAME
-	_ZNK12RadioStation15frequencyStringEv @ 183 NONAME
-	_ZNK12RadioStation3urlEv @ 184 NONAME
-	_ZNK12RadioStation4nameEv @ 185 NONAME
-	_ZNK12RadioStation5genreEv @ 186 NONAME
-	_ZNK12RadioStation6hasRdsEv @ 187 NONAME
+	_ZN13RadioUiEngine17launchRadioServerEv @ 59 NONAME
+	_ZN13RadioUiEngine17powerOffRequestedEv @ 60 NONAME
+	_ZN13RadioUiEngine17setManualSeekModeEb @ 61 NONAME
+	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 62 NONAME
+	_ZN13RadioUiEngine18lastTunedFrequencyEj @ 63 NONAME
+	_ZN13RadioUiEngine18radioStatusChangedEb @ 64 NONAME
+	_ZN13RadioUiEngine19createScannerEngineEv @ 65 NONAME
+	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 66 NONAME
+	_ZN13RadioUiEngine20antennaStatusChangedEb @ 67 NONAME
+	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 68 NONAME
+	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 69 NONAME
+	_ZN13RadioUiEngine21launchSongRecognitionEv @ 70 NONAME
+	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 71 NONAME
+	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 72 NONAME
+	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 73 NONAME
+	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 74 NONAME
+	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 75 NONAME
+	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 76 NONAME
+	_ZN13RadioUiEngine4initEv @ 77 NONAME
+	_ZN13RadioUiEngine7setMuteEb @ 78 NONAME
+	_ZN13RadioUiEngine8settingsEv @ 79 NONAME
+	_ZN13RadioUiEngine9setVolumeEi @ 80 NONAME
+	_ZN13RadioUiEngineC1EP7QObject @ 81 NONAME
+	_ZN13RadioUiEngineC2EP7QObject @ 82 NONAME
+	_ZN13RadioUiEngineD0Ev @ 83 NONAME
+	_ZN13RadioUiEngineD1Ev @ 84 NONAME
+	_ZN13RadioUiEngineD2Ev @ 85 NONAME
+	_ZN16RadioHistoryItem10setStationERK7QString @ 86 NONAME
+	_ZN16RadioHistoryItem12setFrequencyEj @ 87 NONAME
+	_ZN16RadioHistoryItem14setCurrentTimeEv @ 88 NONAME
+	_ZN16RadioHistoryItem5resetEv @ 89 NONAME
+	_ZN16RadioHistoryItem8setTitleERK7QString @ 90 NONAME
+	_ZN16RadioHistoryItem9setArtistERK7QString @ 91 NONAME
+	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 92 NONAME
+	_ZN16RadioHistoryItemC1ERKS_ @ 93 NONAME
+	_ZN16RadioHistoryItemC1Ev @ 94 NONAME
+	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 95 NONAME
+	_ZN16RadioHistoryItemC2ERKS_ @ 96 NONAME
+	_ZN16RadioHistoryItemC2Ev @ 97 NONAME
+	_ZN16RadioHistoryItemD1Ev @ 98 NONAME
+	_ZN16RadioHistoryItemD2Ev @ 99 NONAME
+	_ZN16RadioHistoryItemaSERKS_ @ 100 NONAME
+	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 101 NONAME
+	_ZN17RadioHistoryModel11qt_metacastEPKc @ 102 NONAME
+	_ZN17RadioHistoryModel13emitItemAddedEv @ 103 NONAME
+	_ZN17RadioHistoryModel13setShowTaggedEb @ 104 NONAME
+	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 105 NONAME
+	_ZN17RadioHistoryModel14setShowDetailsEb @ 106 NONAME
+	_ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 107 NONAME
+	_ZN17RadioHistoryModel16currentSongResetEv @ 108 NONAME
+	_ZN17RadioHistoryModel16resetCurrentSongEv @ 109 NONAME
+	_ZN17RadioHistoryModel16staticMetaObjectE @ 110 NONAME DATA 16
+	_ZN17RadioHistoryModel17reportChangedDataEii @ 111 NONAME
+	_ZN17RadioHistoryModel18clearRadioTextPlusEv @ 112 NONAME
+	_ZN17RadioHistoryModel19getStaticMetaObjectEv @ 113 NONAME
+	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 114 NONAME
+	_ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 115 NONAME
+	_ZN17RadioHistoryModel9itemAddedEv @ 116 NONAME
+	_ZN17RadioHistoryModel9removeAllEb @ 117 NONAME
+	_ZN17RadioHistoryModelC1ER13RadioUiEngine @ 118 NONAME
+	_ZN17RadioHistoryModelC2ER13RadioUiEngine @ 119 NONAME
+	_ZN17RadioHistoryModelD0Ev @ 120 NONAME
+	_ZN17RadioHistoryModelD1Ev @ 121 NONAME
+	_ZN17RadioHistoryModelD2Ev @ 122 NONAME
+	_ZN17RadioStationModel10addStationERK12RadioStation @ 123 NONAME
+	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 124 NONAME
+	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 125 NONAME
+	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 126 NONAME
+	_ZN17RadioStationModel11qt_metacastEPKc @ 127 NONAME
+	_ZN17RadioStationModel11saveStationER12RadioStation @ 128 NONAME
+	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 129 NONAME
+	_ZN17RadioStationModel13favoriteCountEv @ 130 NONAME
+	_ZN17RadioStationModel13removeStationERK12RadioStation @ 131 NONAME
+	_ZN17RadioStationModel13renameStationEiRK7QString @ 132 NONAME
+	_ZN17RadioStationModel14currentStationEv @ 133 NONAME
+	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 134 NONAME
+	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 135 NONAME
+	_ZN17RadioStationModel15findPresetIndexEi @ 136 NONAME
+	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 137 NONAME
+	_ZN17RadioStationModel15stationsInRangeEjj @ 138 NONAME
+	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 139 NONAME
+	_ZN17RadioStationModel16staticMetaObjectE @ 140 NONAME DATA 16
+	_ZN17RadioStationModel16stationHandlerIfEv @ 141 NONAME
+	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 142 NONAME
+	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 143 NONAME
+	_ZN17RadioStationModel17removeByFrequencyEj @ 144 NONAME
+	_ZN17RadioStationModel18indexFromFrequencyEj @ 145 NONAME
+	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 146 NONAME
+	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 147 NONAME
+	_ZN17RadioStationModel19getStaticMetaObjectEv @ 148 NONAME
+	_ZN17RadioStationModel19removeByPresetIndexEi @ 149 NONAME
+	_ZN17RadioStationModel19setFavoriteByPresetEib @ 150 NONAME
+	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 151 NONAME
+	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 152 NONAME
+	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 153 NONAME
+	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 154 NONAME
+	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 155 NONAME
+	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 156 NONAME
+	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 157 NONAME
+	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 158 NONAME
+	_ZN17RadioStationModelD0Ev @ 159 NONAME
+	_ZN17RadioStationModelD1Ev @ 160 NONAME
+	_ZN17RadioStationModelD2Ev @ 161 NONAME
+	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 162 NONAME
+	_ZN18RadioScannerEngine11qt_metacastEPKc @ 163 NONAME
+	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 164 NONAME
+	_ZN18RadioScannerEngine13startScanningEv @ 165 NONAME
+	_ZN18RadioScannerEngine16continueScanningEv @ 166 NONAME
+	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 167 NONAME
+	_ZN18RadioScannerEngine16staticMetaObjectE @ 168 NONAME DATA 16
+	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 169 NONAME
+	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 170 NONAME
+	_ZN18RadioScannerEngine6cancelEv @ 171 NONAME
+	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 172 NONAME
+	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 173 NONAME
+	_ZN18RadioScannerEngineD0Ev @ 174 NONAME
+	_ZN18RadioScannerEngineD1Ev @ 175 NONAME
+	_ZN18RadioScannerEngineD2Ev @ 176 NONAME
+	_ZNK12RadioStation10hasChangedEv @ 177 NONAME
+	_ZNK12RadioStation10isDetachedEv @ 178 NONAME
+	_ZNK12RadioStation10isFavoriteEv @ 179 NONAME
+	_ZNK12RadioStation11changeFlagsEv @ 180 NONAME
+	_ZNK12RadioStation11presetIndexEv @ 181 NONAME
+	_ZNK12RadioStation13dynamicPsTextEv @ 182 NONAME
+	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 183 NONAME
+	_ZNK12RadioStation15frequencyStringEv @ 184 NONAME
+	_ZNK12RadioStation3urlEv @ 185 NONAME
+	_ZNK12RadioStation4nameEv @ 186 NONAME
+	_ZNK12RadioStation5genreEv @ 187 NONAME
 	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 188 NONAME
-	_ZNK12RadioStation6psTypeEv @ 189 NONAME
-	_ZNK12RadioStation7isValidEv @ 190 NONAME
-	_ZNK12RadioStation9frequencyEv @ 191 NONAME
-	_ZNK12RadioStation9hasPiCodeEv @ 192 NONAME
+	_ZNK12RadioStation6piCodeEv @ 189 NONAME
+	_ZNK12RadioStation6psTypeEv @ 190 NONAME
+	_ZNK12RadioStation7isValidEv @ 191 NONAME
+	_ZNK12RadioStation9frequencyEv @ 192 NONAME
 	_ZNK12RadioStation9isRenamedEv @ 193 NONAME
 	_ZNK12RadioStation9radioTextEv @ 194 NONAME
 	_ZNK13RadioUiEngine10isScanningEv @ 195 NONAME
@@ -244,4 +244,5 @@
 	_ZTV17RadioHistoryModel @ 243 NONAME
 	_ZTV17RadioStationModel @ 244 NONAME
 	_ZTV18RadioScannerEngine @ 245 NONAME
+	_ZN13RadioUiEngine10lastVolumeEv @ 246 NONAME
 
--- a/radioapp/eabi/fmradiowidgetsu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/eabi/fmradiowidgetsu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -48,118 +48,122 @@
 	_ZN19RadioFrequencyStrip13initPositionsEv @ 47 NONAME
 	_ZN19RadioFrequencyStrip13removeStationERK11QModelIndexii @ 48 NONAME
 	_ZN19RadioFrequencyStrip13seekRequestedEi @ 49 NONAME
-	_ZN19RadioFrequencyStrip13skipRequestedEi @ 50 NONAME
-	_ZN19RadioFrequencyStrip13updateStationERK11QModelIndexii @ 51 NONAME
-	_ZN19RadioFrequencyStrip14initEmptyItemsEv @ 52 NONAME
-	_ZN19RadioFrequencyStrip14updateAllItemsEv @ 53 NONAME
-	_ZN19RadioFrequencyStrip14updateFavoriteERK12RadioStation @ 54 NONAME
-	_ZN19RadioFrequencyStrip15addFrequencyPosEijP18RadioFrequencyItem @ 55 NONAME
-	_ZN19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 56 NONAME
-	_ZN19RadioFrequencyStrip15setScanningModeEb @ 57 NONAME
-	_ZN19RadioFrequencyStrip16cancelManualSeekEv @ 58 NONAME
-	_ZN19RadioFrequencyStrip16frequencyChangedEjii @ 59 NONAME
-	_ZN19RadioFrequencyStrip16handleLeftButtonEv @ 60 NONAME
-	_ZN19RadioFrequencyStrip16scrollPosChangedEv @ 61 NONAME
-	_ZN19RadioFrequencyStrip16staticMetaObjectE @ 62 NONAME DATA 16
-	_ZN19RadioFrequencyStrip16toggleManualSeekEv @ 63 NONAME
-	_ZN19RadioFrequencyStrip17addScannedStationERK12RadioStation @ 64 NONAME
-	_ZN19RadioFrequencyStrip17handleRightButtonEv @ 65 NONAME
-	_ZN19RadioFrequencyStrip17manualSeekChangedEb @ 66 NONAME
-	_ZN19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 67 NONAME
-	_ZN19RadioFrequencyStrip17scrollToFrequencyEjN6Scroll9DirectionEiN10TuneReason6ReasonE @ 68 NONAME
-	_ZN19RadioFrequencyStrip18handleScrollingEndEv @ 69 NONAME
-	_ZN19RadioFrequencyStrip19createItemPrimitiveEP13QGraphicsItem @ 70 NONAME
-	_ZN19RadioFrequencyStrip19getStaticMetaObjectEv @ 71 NONAME
-	_ZN19RadioFrequencyStrip19updateItemPrimitiveEP13QGraphicsItemi @ 72 NONAME
-	_ZN19RadioFrequencyStrip20emitFrequencyChangedEj @ 73 NONAME
-	_ZN19RadioFrequencyStrip20handleLongLeftButtonEv @ 74 NONAME
-	_ZN19RadioFrequencyStrip21handleLongRightButtonEv @ 75 NONAME
-	_ZN19RadioFrequencyStrip21updateStationsInRangeEiib @ 76 NONAME
-	_ZN19RadioFrequencyStrip4initEP13RadioUiEngineR13RadioUiLoader @ 77 NONAME
-	_ZN19RadioFrequencyStrip9initModelEv @ 78 NONAME
-	_ZN19RadioFrequencyStripC1Ev @ 79 NONAME
-	_ZN19RadioFrequencyStripC2Ev @ 80 NONAME
-	_ZN20RadioStationCarousel10timerFiredEv @ 81 NONAME
-	_ZN20RadioStationCarousel11findStationEj @ 82 NONAME
-	_ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 83 NONAME
-	_ZN20RadioStationCarousel11qt_metacastEPKc @ 84 NONAME
-	_ZN20RadioStationCarousel11resizeEventEP25QGraphicsSceneResizeEvent @ 85 NONAME
-	_ZN20RadioStationCarousel11setInfoTextEN16CarouselInfoText4TypeE @ 86 NONAME
-	_ZN20RadioStationCarousel12cleanRdsDataEv @ 87 NONAME
-	_ZN20RadioStationCarousel12gestureEventEP13QGestureEvent @ 88 NONAME
-	_ZN20RadioStationCarousel12setFrequencyEjiN6Scroll9DirectionE @ 89 NONAME
-	_ZN20RadioStationCarousel13clearInfoTextEv @ 90 NONAME
-	_ZN20RadioStationCarousel13localizeGenreEi @ 91 NONAME
-	_ZN20RadioStationCarousel13scrollToIndexEiN6Scroll9DirectionE6QFlagsINS_10ScrollFlagEE @ 92 NONAME
-	_ZN20RadioStationCarousel13skipRequestedEi @ 93 NONAME
-	_ZN20RadioStationCarousel14setCenterIndexEi6QFlagsINS_10ScrollFlagEE @ 94 NONAME
-	_ZN20RadioStationCarousel14updateStationsEv @ 95 NONAME
-	_ZN20RadioStationCarousel15cancelAnimationEv @ 96 NONAME
-	_ZN20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 97 NONAME
-	_ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 98 NONAME
-	_ZN20RadioStationCarousel15setScanningModeEb @ 99 NONAME
-	_ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 100 NONAME
-	_ZN20RadioStationCarousel16frequencyChangedEjii @ 101 NONAME
-	_ZN20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 102 NONAME
-	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 103 NONAME
-	_ZN20RadioStationCarousel16staticMetaObjectE @ 104 NONAME DATA 16
-	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 105 NONAME
-	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 106 NONAME
-	_ZN20RadioStationCarousel17handleIconClickedERK12RadioStation @ 107 NONAME
-	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 108 NONAME
-	_ZN20RadioStationCarousel17setManualSeekModeEb @ 109 NONAME
-	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 110 NONAME
-	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 111 NONAME
-	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 112 NONAME
-	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 113 NONAME
-	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 114 NONAME
-	_ZN20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 115 NONAME
-	_ZN20RadioStationCarousel24setAlternateSkippingModeEb @ 116 NONAME
-	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 117 NONAME
-	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 118 NONAME
-	_ZN20RadioStationCarousel6updateERK12RadioStation @ 119 NONAME
-	_ZN20RadioStationCarousel8uiEngineEv @ 120 NONAME
-	_ZN20RadioStationCarousel9adjustPosEi @ 121 NONAME
-	_ZN20RadioStationCarousel9nextIndexEi @ 122 NONAME
-	_ZN20RadioStationCarousel9prevIndexEi @ 123 NONAME
-	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 124 NONAME
-	_ZN20RadioStationCarousel9trimIndexEi @ 125 NONAME
-	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 126 NONAME
-	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 127 NONAME
-	_ZNK11RadioWindow10metaObjectEv @ 128 NONAME
-	_ZNK16RadioFadingLabel10metaObjectEv @ 129 NONAME
-	_ZNK19RadioFrequencyStrip10metaObjectEv @ 130 NONAME
-	_ZNK19RadioFrequencyStrip11selectorPosEv @ 131 NONAME
-	_ZNK19RadioFrequencyStrip18isInManualSeekModeEv @ 132 NONAME
-	_ZNK19RadioFrequencyStrip9frequencyEv @ 133 NONAME
-	_ZNK20RadioStationCarousel10metaObjectEv @ 134 NONAME
-	_ZNK20RadioStationCarousel12favoriteIconEv @ 135 NONAME
-	_ZNK20RadioStationCarousel13isInitializedEv @ 136 NONAME
-	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 137 NONAME
-	_ZNK20RadioStationCarousel14isInManualSeekEv @ 138 NONAME
-	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 139 NONAME
-	_ZNK20RadioStationCarousel16isInScanningModeEv @ 140 NONAME
-	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 141 NONAME
-	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 142 NONAME
-	_ZTI11RadioWindow @ 143 NONAME
-	_ZTI16RadioFadingLabel @ 144 NONAME
-	_ZTI19RadioFrequencyStrip @ 145 NONAME
-	_ZTI20RadioStationCarousel @ 146 NONAME
-	_ZTV11RadioWindow @ 147 NONAME
-	_ZTV16RadioFadingLabel @ 148 NONAME
-	_ZTV19RadioFrequencyStrip @ 149 NONAME
-	_ZTV20RadioStationCarousel @ 150 NONAME
-	_ZThn28_N20RadioStationCarousel11findStationEj @ 151 NONAME
-	_ZThn28_N20RadioStationCarousel13localizeGenreEi @ 152 NONAME
-	_ZThn28_N20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 153 NONAME
-	_ZThn28_N20RadioStationCarousel17handleIconClickedERK12RadioStation @ 154 NONAME
-	_ZThn28_N20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 155 NONAME
-	_ZThn28_NK20RadioStationCarousel12favoriteIconEv @ 156 NONAME
-	_ZThn28_NK20RadioStationCarousel14isInManualSeekEv @ 157 NONAME
-	_ZThn28_NK20RadioStationCarousel15nonFavoriteIconEv @ 158 NONAME
-	_ZThn8_N11RadioWindowD0Ev @ 159 NONAME
-	_ZThn8_N11RadioWindowD1Ev @ 160 NONAME
-	_ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 161 NONAME
-	_ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 162 NONAME
-	_ZThn8_N20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 163 NONAME
+	_ZN19RadioFrequencyStrip13setItemHeightEi @ 50 NONAME
+	_ZN19RadioFrequencyStrip13skipRequestedEi @ 51 NONAME
+	_ZN19RadioFrequencyStrip13updateStationERK11QModelIndexii @ 52 NONAME
+	_ZN19RadioFrequencyStrip14initEmptyItemsEv @ 53 NONAME
+	_ZN19RadioFrequencyStrip14updateAllItemsEv @ 54 NONAME
+	_ZN19RadioFrequencyStrip14updateFavoriteERK12RadioStation @ 55 NONAME
+	_ZN19RadioFrequencyStrip15addFrequencyPosEijP18RadioFrequencyItem @ 56 NONAME
+	_ZN19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 57 NONAME
+	_ZN19RadioFrequencyStrip15setScanningModeEb @ 58 NONAME
+	_ZN19RadioFrequencyStrip16cancelManualSeekEv @ 59 NONAME
+	_ZN19RadioFrequencyStrip16frequencyChangedEjii @ 60 NONAME
+	_ZN19RadioFrequencyStrip16handleLeftButtonEv @ 61 NONAME
+	_ZN19RadioFrequencyStrip16scrollPosChangedEv @ 62 NONAME
+	_ZN19RadioFrequencyStrip16staticMetaObjectE @ 63 NONAME DATA 16
+	_ZN19RadioFrequencyStrip16toggleManualSeekEv @ 64 NONAME
+	_ZN19RadioFrequencyStrip17addScannedStationERK12RadioStation @ 65 NONAME
+	_ZN19RadioFrequencyStrip17handleRightButtonEv @ 66 NONAME
+	_ZN19RadioFrequencyStrip17manualSeekChangedEb @ 67 NONAME
+	_ZN19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 68 NONAME
+	_ZN19RadioFrequencyStrip17scrollToFrequencyEjN6Scroll9DirectionEiN10TuneReason6ReasonE @ 69 NONAME
+	_ZN19RadioFrequencyStrip18handleScrollingEndEv @ 70 NONAME
+	_ZN19RadioFrequencyStrip19createItemPrimitiveEP13QGraphicsItem @ 71 NONAME
+	_ZN19RadioFrequencyStrip19getStaticMetaObjectEv @ 72 NONAME
+	_ZN19RadioFrequencyStrip19updateItemPrimitiveEP13QGraphicsItemi @ 73 NONAME
+	_ZN19RadioFrequencyStrip20emitFrequencyChangedEj @ 74 NONAME
+	_ZN19RadioFrequencyStrip20handleLongLeftButtonEv @ 75 NONAME
+	_ZN19RadioFrequencyStrip21handleLongRightButtonEv @ 76 NONAME
+	_ZN19RadioFrequencyStrip21updateStationsInRangeEiib @ 77 NONAME
+	_ZN19RadioFrequencyStrip4initEP13RadioUiEngineR13RadioUiLoader @ 78 NONAME
+	_ZN19RadioFrequencyStrip9initModelEv @ 79 NONAME
+	_ZN19RadioFrequencyStripC1Ev @ 80 NONAME
+	_ZN19RadioFrequencyStripC2Ev @ 81 NONAME
+	_ZN20RadioStationCarousel10timerFiredEv @ 82 NONAME
+	_ZN20RadioStationCarousel11findStationEj @ 83 NONAME
+	_ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 84 NONAME
+	_ZN20RadioStationCarousel11qt_metacastEPKc @ 85 NONAME
+	_ZN20RadioStationCarousel11resizeEventEP25QGraphicsSceneResizeEvent @ 86 NONAME
+	_ZN20RadioStationCarousel11setInfoTextEN16CarouselInfoText4TypeE @ 87 NONAME
+	_ZN20RadioStationCarousel12cleanRdsDataEv @ 88 NONAME
+	_ZN20RadioStationCarousel12gestureEventEP13QGestureEvent @ 89 NONAME
+	_ZN20RadioStationCarousel12setFrequencyEjiN6Scroll9DirectionE @ 90 NONAME
+	_ZN20RadioStationCarousel13clearInfoTextEv @ 91 NONAME
+	_ZN20RadioStationCarousel13drawOffScreenER8QPainter @ 92 NONAME
+	_ZN20RadioStationCarousel13localizeGenreEi @ 93 NONAME
+	_ZN20RadioStationCarousel13scrollToIndexEiN6Scroll9DirectionE6QFlagsINS_10ScrollFlagEE @ 94 NONAME
+	_ZN20RadioStationCarousel13skipRequestedEi @ 95 NONAME
+	_ZN20RadioStationCarousel14setCenterIndexEi6QFlagsINS_10ScrollFlagEE @ 96 NONAME
+	_ZN20RadioStationCarousel14updateStationsEv @ 97 NONAME
+	_ZN20RadioStationCarousel15cancelAnimationEv @ 98 NONAME
+	_ZN20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 99 NONAME
+	_ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 100 NONAME
+	_ZN20RadioStationCarousel15setScanningModeEb @ 101 NONAME
+	_ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 102 NONAME
+	_ZN20RadioStationCarousel16frequencyChangedEjii @ 103 NONAME
+	_ZN20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 104 NONAME
+	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 105 NONAME
+	_ZN20RadioStationCarousel16staticMetaObjectE @ 106 NONAME DATA 16
+	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 107 NONAME
+	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 108 NONAME
+	_ZN20RadioStationCarousel17handleIconClickedERK12RadioStation @ 109 NONAME
+	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 110 NONAME
+	_ZN20RadioStationCarousel17setManualSeekModeEb @ 111 NONAME
+	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 112 NONAME
+	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 113 NONAME
+	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 114 NONAME
+	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 115 NONAME
+	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 116 NONAME
+	_ZN20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 117 NONAME
+	_ZN20RadioStationCarousel24setAlternateSkippingModeEb @ 118 NONAME
+	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 119 NONAME
+	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 120 NONAME
+	_ZN20RadioStationCarousel6updateERK12RadioStation @ 121 NONAME
+	_ZN20RadioStationCarousel8uiEngineEv @ 122 NONAME
+	_ZN20RadioStationCarousel9adjustPosEi @ 123 NONAME
+	_ZN20RadioStationCarousel9nextIndexEi @ 124 NONAME
+	_ZN20RadioStationCarousel9prevIndexEi @ 125 NONAME
+	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 126 NONAME
+	_ZN20RadioStationCarousel9trimIndexEi @ 127 NONAME
+	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 128 NONAME
+	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 129 NONAME
+	_ZNK11RadioWindow10metaObjectEv @ 130 NONAME
+	_ZNK16RadioFadingLabel10metaObjectEv @ 131 NONAME
+	_ZNK19RadioFrequencyStrip10itemHeightEv @ 132 NONAME
+	_ZNK19RadioFrequencyStrip10metaObjectEv @ 133 NONAME
+	_ZNK19RadioFrequencyStrip11selectorPosEv @ 134 NONAME
+	_ZNK19RadioFrequencyStrip18isInManualSeekModeEv @ 135 NONAME
+	_ZNK19RadioFrequencyStrip9frequencyEv @ 136 NONAME
+	_ZNK20RadioStationCarousel10metaObjectEv @ 137 NONAME
+	_ZNK20RadioStationCarousel12favoriteIconEv @ 138 NONAME
+	_ZNK20RadioStationCarousel13isInitializedEv @ 139 NONAME
+	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 140 NONAME
+	_ZNK20RadioStationCarousel14isInManualSeekEv @ 141 NONAME
+	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 142 NONAME
+	_ZNK20RadioStationCarousel16isInScanningModeEv @ 143 NONAME
+	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 144 NONAME
+	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 145 NONAME
+	_ZTI11RadioWindow @ 146 NONAME
+	_ZTI16RadioFadingLabel @ 147 NONAME
+	_ZTI19RadioFrequencyStrip @ 148 NONAME
+	_ZTI20RadioStationCarousel @ 149 NONAME
+	_ZTV11RadioWindow @ 150 NONAME
+	_ZTV16RadioFadingLabel @ 151 NONAME
+	_ZTV19RadioFrequencyStrip @ 152 NONAME
+	_ZTV20RadioStationCarousel @ 153 NONAME
+	_ZThn28_N20RadioStationCarousel11findStationEj @ 154 NONAME
+	_ZThn28_N20RadioStationCarousel13localizeGenreEi @ 155 NONAME
+	_ZThn28_N20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 156 NONAME
+	_ZThn28_N20RadioStationCarousel17handleIconClickedERK12RadioStation @ 157 NONAME
+	_ZThn28_N20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 158 NONAME
+	_ZThn28_NK20RadioStationCarousel12favoriteIconEv @ 159 NONAME
+	_ZThn28_NK20RadioStationCarousel14isInManualSeekEv @ 160 NONAME
+	_ZThn28_NK20RadioStationCarousel15nonFavoriteIconEv @ 161 NONAME
+	_ZThn8_N11RadioWindowD0Ev @ 162 NONAME
+	_ZThn8_N11RadioWindowD1Ev @ 163 NONAME
+	_ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 164 NONAME
+	_ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 165 NONAME
+	_ZThn8_N20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 166 NONAME
+	_ZN19RadioFrequencyStrip7makeTabEfi @ 167 NONAME
 
--- a/radioapp/radioapplication/radioapplication.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioapplication/radioapplication.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -27,6 +27,14 @@
     TARGET.EPOCSTACKSIZE    = 0x14000
     TARGET.EPOCHEAPSIZE     = 0x020000 0x2400000
     SKINICON                = qtg_large_radio
+    ICON                    = resources/qtg_large_radio.svg # Fallback icon in case theme doesn't have one
+
+    LIBS                    += -lxqserviceutil
+
+    BLD_INF_RULES.prj_exports += "resources/fmradio.docml       /epoc32/release/winscw/udeb/z/resource/hb/splashml/fmradio.docml" \
+                                 "resources/fmradio.splashml    /epoc32/release/winscw/udeb/z/resource/hb/splashml/fmradio.splashml" \
+                                 "resources/fmradio.docml       /epoc32/data/z/resource/hb/splashml/fmradio.docml" \
+                                 "resources/fmradio.splashml    /epoc32/data/z/resource/hb/splashml/fmradio.splashml"
 }
 
 CONFIG      += hb service
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioapplication/resources/fmradio.docml	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="0.9">
+    <widget name="splashView" type="HbView">
+        <string name="title" locid="txt_rad_title_fm_radio" />
+    </widget>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioapplication/resources/fmradio.splashml	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbsplash version="1">
+    <docml>fmradio.docml</docml>
+    <widget>splashView</widget>
+    <appuid>0x2002FF4E</appuid>
+    <tsappname>fmradio</tsappname>
+</hbsplash>
--- a/radioapp/radioapplication/resources/fmradio.ts	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioapplication/resources/fmradio.ts	Tue Jul 06 14:16:27 2010 +0300
@@ -17,9 +17,9 @@
     <source>Rock Music</source>
     <translation variants="no">Rock Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_personality">
@@ -27,9 +27,9 @@
     <source>Personality</source>
     <translation variants="no">Personality</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_clear_recently_played_songs_list">
@@ -47,19 +47,9 @@
     <source>Play history</source>
     <translation variants="no">Play history</translation>
     <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>opt</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_button_cancel">
-    <comment>Button. Ignores the dialog and returns previous view</comment>        
-    <source>Cancel</source>
-    <translation variants="no">Cancel</translation>
-    <extra-loc-layout_id>qtl_dialog_softkey</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_news">
@@ -67,9 +57,9 @@
     <source>News</source>
     <translation variants="no">News</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_opt_search_all_stations">
@@ -87,9 +77,9 @@
     <source>Culture</source>
     <translation variants="no">Culture</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_soft_rhythm_and_blues">
@@ -97,9 +87,9 @@
     <source>Soft rhythm and blues</source>
     <translation variants="no">Soft rhythm and blues</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_country_music">
@@ -107,9 +97,9 @@
     <source>Country Music</source>
     <translation variants="no">Country Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_fmradio_info_local_frequency_band_automaticall">
@@ -127,9 +117,9 @@
     <source>%L1 MHz</source>
     <translation variants="no">%L1 MHz</translation>
     <extra-loc-layout_id>qtl_list_sec2_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_rock_music">
@@ -137,9 +127,9 @@
     <source>Rock Music</source>
     <translation variants="no">Rock Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_tagged_songs">
@@ -147,9 +137,9 @@
     <source>Tagged songs</source>
     <translation variants="no">Tagged songs</translation>
     <extra-loc-layout_id>qtl_toolbar_tiny_2</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_soft_rock">
@@ -157,9 +147,9 @@
     <source>Soft rock</source>
     <translation variants="no">Soft rock</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_culture">
@@ -167,9 +157,9 @@
     <source>Culture</source>
     <translation variants="no">Culture</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_add_to_favourites">
@@ -177,9 +167,9 @@
     <source>Add to favourites</source>
     <translation variants="no">Add to favourites</translation>
     <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_nostalgia">
@@ -187,9 +177,9 @@
     <source>Nostalgia</source>
     <translation variants="no">Nostalgia</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_social_affairs">
@@ -197,9 +187,9 @@
     <source>Social Affairs</source>
     <translation variants="no">Social Affairs</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_opt_clear_list">
@@ -207,9 +197,9 @@
     <source>Clear list</source>
     <translation variants="no">Clear list</translation>
     <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>opt</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_other_music">
@@ -217,9 +207,9 @@
     <source>Other Music</source>
     <translation variants="no">Other Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_rhythm_and_blues">
@@ -227,9 +217,9 @@
     <source>Rhythm and blues</source>
     <translation variants="no">Rhythm and blues</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_religious_talk">
@@ -237,9 +227,9 @@
     <source>Religious talk</source>
     <translation variants="no">Religious talk</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_activate_loudspeaker">
@@ -247,9 +237,9 @@
     <source>Activate loudspeaker</source>
     <translation variants="no">Activate loudspeaker</translation>
     <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_nostalgia">
@@ -257,19 +247,9 @@
     <source>Nostalgia</source>
     <translation variants="no">Nostalgia</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_menu_delete">
-    <comment>Item specific menu item. Allows the user to delete a station.</comment>        
-    <source>Delete</source>
-    <translation variants="no">Delete</translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_language">
@@ -277,9 +257,9 @@
     <source>Language</source>
     <translation variants="no">Language</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_talk">
@@ -287,19 +267,9 @@
     <source>Talk</source>
     <translation variants="no">Talk</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_menu_rename_item">
-    <comment>Item specific menu item. Allows the user to define a new name for a station.</comment>        
-    <source>Rename</source>
-    <translation variants="no">Rename</translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_soft_rhythm_and_blues">
@@ -307,9 +277,9 @@
     <source>Soft rhythm and blues</source>
     <translation variants="no">Soft rhythm and blues</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_national_music">
@@ -317,9 +287,9 @@
     <source>National Music</source>
     <translation variants="no">National Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_science">
@@ -327,9 +297,9 @@
     <source>Science</source>
     <translation variants="no">Science</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_weather">
@@ -337,9 +307,9 @@
     <source>Weather</source>
     <translation variants="no">Weather</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_drama">
@@ -347,9 +317,9 @@
     <source>Drama</source>
     <translation variants="no">Drama</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_national_music">
@@ -357,9 +327,9 @@
     <source>National Music</source>
     <translation variants="no">National Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_religious_music">
@@ -367,9 +337,9 @@
     <source>Religious music</source>
     <translation variants="no">Religious music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_oldies_music">
@@ -377,9 +347,9 @@
     <source>Oldies Music</source>
     <translation variants="no">Oldies Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_education">
@@ -387,29 +357,9 @@
     <source>Education</source>
     <translation variants="no">Education</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_button_no">
-    <comment>Button. Pressing this button rejects the selected operation.</comment>        
-    <source>No</source>
-    <translation variants="no">No</translation>
-    <extra-loc-layout_id>qtl_dialog_softkey</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_button_ok">
-    <comment>Button. Allows the user to accept the dialog and return to previous view</comment>        
-    <source>OK</source>
-    <translation variants="no">OK</translation>
-    <extra-loc-layout_id>qtl_dialog_softkey</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_station_list_is_full_please_remove_s">
@@ -427,9 +377,9 @@
     <source>Tap the star icon or Add to favourite button in main view to mark currently playing station as a favorite.</source>
     <translation variants="no">Tap the star icon or Add to favourite button in main view to mark currently playing station as a favorite.</translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_clear_favourite_stations_list">
@@ -447,9 +397,9 @@
     <source>Adult hits</source>
     <translation variants="no">Adult hits</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_no_favourite_stations">
@@ -457,9 +407,9 @@
     <source>(No favourite stations)</source>
     <translation variants="no">(No favourite stations)</translation>
     <extra-loc-layout_id>qtl_view_empty_title_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_stations">
@@ -467,9 +417,9 @@
     <source>Stations</source>
     <translation variants="no">Stations</translation>
     <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_pop_music">
@@ -477,9 +427,19 @@
     <source>Pop Music</source>
     <translation variants="no">Pop Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_fmradio_button_remove_from_favourites">
+    <comment>A button text in main view. Removes currently active station from Favourite station&apos;s list.</comment>        
+    <source>Remove from favourites</source>
+    <translation variants="no">Remove from favourites</translation>
+    <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_varied">
@@ -487,9 +447,9 @@
     <source>Varied</source>
     <translation variants="no">Varied</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_alarm">
@@ -497,9 +457,9 @@
     <source>Alarm</source>
     <translation variants="no">Alarm</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_other_music">
@@ -507,9 +467,9 @@
     <source>Other Music</source>
     <translation variants="no">Other Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_long_caption_fm_radio">
@@ -527,9 +487,9 @@
     <source>Children’s programmes</source>
     <translation variants="no">Children’s programmes</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_varied">
@@ -537,9 +497,9 @@
     <source>Varied</source>
     <translation variants="no">Varied</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_leisure">
@@ -547,9 +507,9 @@
     <source>Leisure</source>
     <translation variants="no">Leisure</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_alarm">
@@ -557,9 +517,9 @@
     <source>Alarm</source>
     <translation variants="no">Alarm</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_information">
@@ -567,9 +527,9 @@
     <source>Information</source>
     <translation variants="no">Information</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_menu_remove_favourite">
@@ -577,9 +537,9 @@
     <source>Remove from favourites</source>
     <translation variants="no">Remove from favourites</translation>
     <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_title_fm_radio">
@@ -597,9 +557,9 @@
     <source>Cancel</source>
     <translation variants="no">Cancel</translation>
     <extra-loc-layout_id>txt_rad_button_cancel</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_delete_station">
@@ -617,9 +577,9 @@
     <source>Religion</source>
     <translation variants="no">Religion</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_menu_add_to_favourites">
@@ -627,9 +587,9 @@
     <source>Add to favourites</source>
     <translation variants="no">Add to favourites</translation>
     <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_current_affairs">
@@ -637,9 +597,9 @@
     <source>Current affairs</source>
     <translation variants="no">Current affairs</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_you_can_add_song_to_the_tagged_songs">
@@ -647,9 +607,9 @@
     <source>You can add song to the tagged songs list from Recently played songs or from main view if song information is available. </source>
     <translation variants="no">You can add song to the tagged songs list from Recently played songs or from main view if song information is available. </translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_social_affairs">
@@ -657,9 +617,9 @@
     <source>Social Affairs</source>
     <translation variants="no">Social Affairs</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_education">
@@ -667,9 +627,9 @@
     <source>Education</source>
     <translation variants="no">Education</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_jazz_music">
@@ -677,9 +637,9 @@
     <source>Jazz Music</source>
     <translation variants="no">Jazz Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_religious_music">
@@ -687,9 +647,9 @@
     <source>Religious music</source>
     <translation variants="no">Religious music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_continue_using_the_radio_in_offline">
@@ -707,9 +667,9 @@
     <source>(Unknown) - %1</source>
     <translation variants="no">(Unknown) - %1</translation>
     <extra-loc-layout_id>qtl_list_pri_large_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>dblist</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_travel">
@@ -717,9 +677,9 @@
     <source>Travel</source>
     <translation variants="no">Travel</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_song_information_is_collected_automat">
@@ -727,9 +687,9 @@
     <source>Song information is collected automatically from radio stations which send the song information using the RDS+ technology.</source>
     <translation variants="no">Song information is collected automatically from radio stations which send the song information using the RDS+ technology.</translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_clear_all_stations_list">
@@ -747,9 +707,9 @@
     <source>Classical</source>
     <translation variants="no">Classical</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dpophead_song_was_added_to_favorite_songs">
@@ -767,19 +727,9 @@
     <source>Talk</source>
     <translation variants="no">Talk</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_button_yes">
-    <comment>Button. Pressing this button confirms the selected operation.</comment>        
-    <source>Yes</source>
-    <translation variants="no">Yes</translation>
-    <extra-loc-layout_id>qtl_dialog_softkey</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_finance">
@@ -787,9 +737,9 @@
     <source>Finance</source>
     <translation variants="no">Finance</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_activate_radio_in_offline_mode">
@@ -807,9 +757,9 @@
     <source>Searching local stations. Please wait.</source>
     <translation variants="no">Searching local stations. Please wait.</translation>
     <extra-loc-layout_id>qtl_dialog_pri3</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_04</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_004</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz2">
@@ -817,9 +767,9 @@
     <source>%L1 MHz</source>
     <translation variants="no">%L1 MHz</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_drama">
@@ -827,19 +777,9 @@
     <source>Drama</source>
     <translation variants="no">Drama</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_opt_deactivate_loudspeaker">
-    <comment>Options list item. Deactivates the loudspeaker. Only available if audio can be routed to the headset</comment>        
-    <source>Deactivate loudspeaker</source>
-    <translation variants="no">Deactivate loudspeaker</translation>
-    <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>opt</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_clear_tagged_songs_list">
@@ -857,9 +797,9 @@
     <source>Top 40</source>
     <translation variants="no">Top 40</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_list_searching_all_available_stations_ple">
@@ -867,9 +807,9 @@
     <source>Searching all available stations. Please wait.</source>
     <translation variants="no">Searching all available stations. Please wait.</translation>
     <extra-loc-layout_id>txt_rad_list_searching_all_available_stations_ple</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_college">
@@ -877,9 +817,9 @@
     <source>College</source>
     <translation variants="no">College</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_all_stations_in_stations_list_will_be">
@@ -907,9 +847,9 @@
     <source>Search stations automatically by tapping here.</source>
     <translation variants="no">Search stations automatically by tapping here.</translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_college">
@@ -917,9 +857,9 @@
     <source>College</source>
     <translation variants="no">College</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_pop_music">
@@ -927,9 +867,9 @@
     <source>Pop Music</source>
     <translation variants="no">Pop Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_public">
@@ -937,9 +877,9 @@
     <source>Public</source>
     <translation variants="no">Public</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_fmradio_info_fm_radio_could_not_be_started">
@@ -957,19 +897,9 @@
     <source>(No stations)</source>
     <translation variants="no">(No stations)</translation>
     <extra-loc-layout_id>qtl_view_empty_title_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_fmradio_list_quick_access_for_fm_radio_in_your">
-    <comment>FM radio home screen widget description in application library</comment>        
-    <source>Quick access for FM radio in your homescreen.</source>
-    <translation variants="no">Quick access for FM radio in your homescreen.</translation>
-    <extra-loc-layout_id>qtl_list_sec_large_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>fmradio</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>fm</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_short_caption_fm_radio">
@@ -982,24 +912,14 @@
     <extra-loc-feature>fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_common_opt_exit">
-    <comment>Options list item. With the exit option, the user can close the currently active application and return to the Home screen.</comment>        
-    <source>Exit</source>
-    <translation variants="no">Exit</translation>
-    <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>opt</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_info_serious_classical">
     <comment>Main view Information area item. Displayed if PTY is available. RDS Programme Type identifier for PTY code 14.</comment>        
     <source>Serious classical</source>
     <translation variants="no">Serious classical</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_religion">
@@ -1007,9 +927,9 @@
     <source>Religion</source>
     <translation variants="no">Religion</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_easy_listening">
@@ -1017,9 +937,9 @@
     <source>Easy Listening</source>
     <translation variants="no">Easy Listening</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_classical">
@@ -1027,9 +947,9 @@
     <source>Classical</source>
     <translation variants="no">Classical</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dpophead_no_stations_found_try_searching">
@@ -1047,9 +967,9 @@
     <source>Sport</source>
     <translation variants="no">Sport</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_tsw_caption_fm_radio">
@@ -1067,9 +987,9 @@
     <source>Play history</source>
     <translation variants="no">Play history</translation>
     <extra-loc-layout_id>qtl_groupbox_simple_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>subhead</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_menu_remove_tag">
@@ -1077,9 +997,9 @@
     <source>Remove tag</source>
     <translation variants="no">Remove tag</translation>
     <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_personality">
@@ -1087,9 +1007,9 @@
     <source>Personality</source>
     <translation variants="no">Personality</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_language">
@@ -1097,9 +1017,9 @@
     <source>Language</source>
     <translation variants="no">Language</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_current_affairs">
@@ -1107,9 +1027,9 @@
     <source>Current affairs</source>
     <translation variants="no">Current affairs</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_soft">
@@ -1117,9 +1037,9 @@
     <source>Soft</source>
     <translation variants="no">Soft</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_local_stations">
@@ -1127,9 +1047,9 @@
     <source>All stations</source>
     <translation variants="no">All stations</translation>
     <extra-loc-layout_id>qtl_toolbar_tiny_2</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_serious_classical">
@@ -1137,9 +1057,9 @@
     <source>Serious classical</source>
     <translation variants="no">Serious classical</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_sport">
@@ -1147,9 +1067,9 @@
     <source>Sport</source>
     <translation variants="no">Sport</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_weather">
@@ -1157,9 +1077,9 @@
     <source>Weather</source>
     <translation variants="no">Weather</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_science">
@@ -1167,9 +1087,9 @@
     <source>Science</source>
     <translation variants="no">Science</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_classic_rock">
@@ -1177,9 +1097,9 @@
     <source>Classic rock</source>
     <translation variants="no">Classic rock</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_soft_rock">
@@ -1187,9 +1107,9 @@
     <source>Soft rock</source>
     <translation variants="no">Soft rock</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_light_classical">
@@ -1197,9 +1117,9 @@
     <source>Light classical</source>
     <translation variants="no">Light classical</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_folk_music">
@@ -1207,9 +1127,9 @@
     <source>Folk Music</source>
     <translation variants="no">Folk Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_phone_in">
@@ -1217,9 +1137,9 @@
     <source>Phone In</source>
     <translation variants="no">Phone In</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_favourites">
@@ -1227,9 +1147,9 @@
     <source>Favourite stations</source>
     <translation variants="no">Favourite stations</translation>
     <extra-loc-layout_id>qtl_toolbar_tiny_2</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_1_2">
@@ -1237,9 +1157,9 @@
     <source>%1 - %2</source>
     <translation variants="no">%1 - %2</translation>
     <extra-loc-layout_id>qtl_list_pri2_graphic_add</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>dblist</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_leisure">
@@ -1247,9 +1167,9 @@
     <source>Leisure</source>
     <translation variants="no">Leisure</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_alarm_test">
@@ -1257,9 +1177,9 @@
     <source>Alarm Test</source>
     <translation variants="no">Alarm Test</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_recently_played_songs">
@@ -1267,9 +1187,9 @@
     <source>Recently played songs</source>
     <translation variants="no">Recently played songs</translation>
     <extra-loc-layout_id>qtl_toolbar_tiny_2</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_jazz_music">
@@ -1277,9 +1197,9 @@
     <source>Jazz Music</source>
     <translation variants="no">Jazz Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_soft">
@@ -1287,9 +1207,9 @@
     <source>Soft</source>
     <translation variants="no">Soft</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_information">
@@ -1297,9 +1217,9 @@
     <source>Information</source>
     <translation variants="no">Information</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_alarm_test">
@@ -1307,9 +1227,9 @@
     <source>Alarm Test</source>
     <translation variants="no">Alarm Test</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_rhythm_and_blues">
@@ -1317,9 +1237,9 @@
     <source>Rhythm and blues</source>
     <translation variants="no">Rhythm and blues</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_subhead_favorite_stations">
@@ -1327,9 +1247,9 @@
     <source>Favorite stations</source>
     <translation variants="no">Favorite stations</translation>
     <extra-loc-layout_id>qtl_groupbox_simple_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>subhead</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_unknown">
@@ -1337,19 +1257,9 @@
     <source>(Unknown)</source>
     <translation variants="no">(Unknown)</translation>
     <extra-loc-layout_id>qtl_list_pri_large_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>dblist</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_menu_play_music">
-    <comment>Item specific menu item. Starts to play the station when selected. Not displayed if station is already playing.</comment>        
-    <source>Play</source>
-    <translation variants="no">Play</translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_adult_hits">
@@ -1357,9 +1267,9 @@
     <source>Adult hits</source>
     <translation variants="no">Adult hits</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_play_history_is_empty">
@@ -1367,9 +1277,9 @@
     <source>(No songs)</source>
     <translation variants="no">(No songs)</translation>
     <extra-loc-layout_id>qtl_view_empty_title_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_003</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_menu_search_from_music_store">
@@ -1387,9 +1297,9 @@
     <source>Documentary</source>
     <translation variants="no">Documentary</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_list_seeking">
@@ -1397,9 +1307,9 @@
     <source>Seeking</source>
     <translation variants="no">Seeking</translation>
     <extra-loc-layout_id>txt_rad_list_seeking</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_top_40">
@@ -1407,9 +1317,9 @@
     <source>Top 40</source>
     <translation variants="no">Top 40</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_news">
@@ -1417,9 +1327,9 @@
     <source>News</source>
     <translation variants="no">News</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_connect_wired_headset1">
@@ -1427,9 +1337,9 @@
     <source>Connect wired headset.</source>
     <translation variants="no">Connect wired headset.</translation>
     <extra-loc-layout_id>txt_rad_info_connect_wired_headset1</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_easy_listening">
@@ -1437,9 +1347,9 @@
     <source>Easy Listening</source>
     <translation variants="no">Easy Listening</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_finance">
@@ -1447,9 +1357,9 @@
     <source>Finance</source>
     <translation variants="no">Finance</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_childrens_programmes">
@@ -1457,9 +1367,9 @@
     <source>Children’s programmes</source>
     <translation variants="no">Children’s programmes</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_documentary">
@@ -1467,19 +1377,9 @@
     <source>Documentary</source>
     <translation variants="no">Documentary</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_fmradio_list_fm_radio_homescreen_widget">
-    <comment>FM Radio home screen widget name in application library</comment>        
-    <source>FM Radio homescreen widget</source>
-    <translation variants="no">FM Radio homescreen widget</translation>
-    <extra-loc-layout_id>qtl_list_pri_large_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>fmradio</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>fm</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_fm_radio">
@@ -1487,9 +1387,9 @@
     <source>FM Radio</source>
     <translation variants="no">FM Radio</translation>
     <extra-loc-layout_id>txt_rad_info_connect_wired_headset1</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_light_classical">
@@ -1497,9 +1397,9 @@
     <source>Light classical</source>
     <translation variants="no">Light classical</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_deactivate_loudspeaker">
@@ -1507,9 +1407,9 @@
     <source>Deactivate loudspeaker</source>
     <translation variants="no">Deactivate loudspeaker</translation>
     <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_religious_talk">
@@ -1517,9 +1417,9 @@
     <source>Religious talk</source>
     <translation variants="no">Religious talk</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_travel">
@@ -1527,9 +1427,9 @@
     <source>Travel</source>
     <translation variants="no">Travel</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dpophead_connect_wired_headset">
@@ -1547,9 +1447,9 @@
     <source>Phone In</source>
     <translation variants="no">Phone In</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_oldies_music">
@@ -1557,9 +1457,9 @@
     <source>Oldies Music</source>
     <translation variants="no">Oldies Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_menu_search_from_other_store">
@@ -1577,9 +1477,9 @@
     <source>Public</source>
     <translation variants="no">Public</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz">
@@ -1587,9 +1487,9 @@
     <source>%L1 MHz</source>
     <translation variants="no">%L1 MHz</translation>
     <extra-loc-layout_id>qtl_list_pri_graphic_add</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_list_l1_mhz_small">
@@ -1597,9 +1497,9 @@
     <source>%L1 MHz</source>
     <translation variants="no">%L1 MHz</translation>
     <extra-loc-layout_id>txt_rad_list_l1_mhz_small</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_country_music">
@@ -1607,9 +1507,9 @@
     <source>Country Music</source>
     <translation variants="no">Country Music</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>dblist_val</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_remove_song_from_tagged_songs">
@@ -1627,19 +1527,9 @@
     <source>Classic rock</source>
     <translation variants="no">Classic rock</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_common_opt_activate_loudspeaker">
-    <comment>Options list item. Switches the audio from handset or handsfree to loudspeaker. Only available if audio can be routed to the loudspeaker.</comment>        
-    <source>Activate loudspeaker</source>
-    <translation variants="no">Activate loudspeaker</translation>
-    <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>    
-    <extra-loc-viewid>common</extra-loc-viewid>
-    <extra-loc-positionid>opt</extra-loc-positionid>
-    <extra-loc-feature>co</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_subhead_all_stations">
@@ -1647,9 +1537,9 @@
     <source>All stations</source>
     <translation variants="no">All stations</translation>
     <extra-loc-layout_id>qtl_groupbox_simple_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_02</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_002</extra-loc-viewid>
     <extra-loc-positionid>subhead</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_folk_music">
@@ -1657,9 +1547,9 @@
     <source>Folk Music</source>
     <translation variants="no">Folk Music</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-viewid>FmRadio_001</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-feature>Fm</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 </context>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioapplication/resources/qtg_large_radio.svg	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,308 @@
+<?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="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="60" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="11.647" y2="52.3348">
+<stop offset="0" style="stop-color:#FF7236"/>
+<stop offset="0.7939" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#E8522A"/>
+</linearGradient>
+<path d="M58,50.776c0,0.858-0.697,1.556-1.557,1.556H3.555C2.694,52.332,2,51.635,2,50.776V13.443  c0-0.859,0.694-1.556,1.555-1.556h52.889c0.859,0,1.557,0.696,1.557,1.556V50.776z" fill="url(#SVGID_1_)"/>
+<path d="M56.443,11.888H3.555C2.694,11.888,2,12.584,2,13.443v12.056l56-6.158v-5.897  C58,12.584,57.303,11.888,56.443,11.888z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M56.443,12.666c0.428,0,0.777,0.349,0.777,0.777v37.333c0,0.428-0.35,0.778-0.777,0.778H3.555  c-0.43,0-0.778-0.351-0.778-0.778V13.443c0-0.429,0.349-0.777,0.778-0.777H56.443 M56.443,11.888H3.555  C2.694,11.888,2,12.584,2,13.443v37.333c0,0.858,0.694,1.556,1.555,1.556h52.889c0.859,0,1.557-0.697,1.557-1.556V13.443  C58,12.584,57.303,11.888,56.443,11.888L56.443,11.888z" fill="#D83506"/>
+<path d="M56.443,51.555H3.555C2.694,51.555,2,50.857,2,49.999v0.777c0,0.858,0.694,1.556,1.555,1.556h52.889  c0.859,0,1.557-0.697,1.557-1.556v-0.777C58,50.857,57.303,51.555,56.443,51.555z" fill="#600909"/>
+<path d="M56.443,11.888H3.555C2.694,11.888,2,12.584,2,13.443v0.778c0-0.86,0.694-1.556,1.555-1.556  h52.889c0.859,0,1.557,0.695,1.557,1.556v-0.778C58,12.584,57.303,11.888,56.443,11.888z" fill="#FFFFFF" fill-opacity="0.6" stroke-opacity="0.6"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="45.9424" x2="45.9424" y1="32.6411" y2="20.912">
+<stop offset="0" style="stop-color:#444243"/>
+<stop offset="1" style="stop-color:#231F20"/>
+</linearGradient>
+<circle cx="45.942" cy="26.611" fill="url(#SVGID_2_)" r="6.946"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="45.9424" x2="45.9424" y1="33.9702" y2="28.6358">
+<stop offset="0" style="stop-color:#D9D9D9"/>
+<stop offset="1" style="stop-color:#413F3F"/>
+</linearGradient>
+<path d="M45.943,33.558c-3.754,0-6.803-2.979-6.935-6.698c-0.003,0.084-0.013,0.163-0.013,0.248  c0,3.836,3.109,6.946,6.947,6.946c3.836,0,6.945-3.11,6.945-6.946c0-0.085-0.01-0.164-0.01-0.248  C52.744,30.578,49.695,33.558,45.943,33.558z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="45.9443" x2="45.9443" y1="35.3247" y2="17.436">
+<stop offset="0" style="stop-color:#FF4D00"/>
+<stop offset="1" style="stop-color:#9D1010"/>
+</linearGradient>
+<path d="M45.943,35.609c-4.933,0-8.944-4.013-8.944-8.943c0-4.933,4.012-8.945,8.944-8.945  s8.945,4.013,8.945,8.945C54.889,31.597,50.876,35.609,45.943,35.609L45.943,35.609z M45.943,18.888  c-4.29,0-7.778,3.488-7.778,7.778c0,4.287,3.488,7.776,7.778,7.776c4.287,0,7.779-3.489,7.779-7.776  C53.723,22.376,50.23,18.888,45.943,18.888L45.943,18.888z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="45.9434" x2="45.9434" y1="20.5371" y2="32.7461">
+<stop offset="0" style="stop-color:#CBCBCB"/>
+<stop offset="1" style="stop-color:#4F4F4F"/>
+</linearGradient>
+<circle cx="45.943" cy="26.642" fill="url(#SVGID_5_)" r="6.104"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="45.9434" x2="45.9434" y1="20.9736" y2="32.3105">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.2848" style="stop-color:#FFFFFF"/>
+<stop offset="0.7212" style="stop-color:#7B7B7B"/>
+<stop offset="1" style="stop-color:#A7A7A7"/>
+</linearGradient>
+<circle cx="45.943" cy="26.642" fill="url(#SVGID_6_)" r="5.67"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="45.9434" x2="45.9434" y1="21.4746" y2="31.9404">
+<stop offset="0" style="stop-color:#D9D9D9"/>
+<stop offset="0.8242" style="stop-color:#636363"/>
+<stop offset="1" style="stop-color:#636363"/>
+</linearGradient>
+<path d="M50.705,24.468c0.303,0.662,0.471,1.396,0.471,2.174c0,2.889-2.342,5.233-5.232,5.233  c-2.888,0-5.232-2.345-5.232-5.233s2.345-5.232,5.232-5.232C48.058,21.409,49.879,22.663,50.705,24.468z" fill="url(#SVGID_7_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="45.9434" x2="45.9434" y1="25.4961" y2="22.9348">
+<stop offset="0" style="stop-color:#636363"/>
+<stop offset="1" style="stop-color:#323232"/>
+</linearGradient>
+<polygon fill="url(#SVGID_8_)" points="44.636,25.397 45.943,22.782 47.251,25.397 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="20.2773" x2="20.2773" y1="30.6846" y2="20.667">
+<stop offset="0" style="stop-color:#636363"/>
+<stop offset="0.6667" style="stop-color:#515151"/>
+<stop offset="1" style="stop-color:#323232"/>
+</linearGradient>
+<rect fill="url(#SVGID_9_)" height="10.889" width="28" x="6.277" y="20.055"/>
+<rect fill="#D9D9D9" height="0.777" width="28" x="6.277" y="30.943"/>
+<polygon fill="#A6A8AB" points="31.945,25.499 31.945,27.832 29.609,27.832 29.609,26.276 28.832,26.276 28.832,27.832   26.498,27.832 26.498,26.276 25.723,26.276 25.723,27.832 23.387,27.832 23.387,26.276 22.61,26.276 22.61,27.832 20.277,27.832   20.277,25.499 19.499,25.499 19.499,27.832 17.166,27.832 17.166,26.276 16.388,26.276 16.388,27.832 14.056,27.832 14.056,26.276   13.276,26.276 13.276,27.832 10.944,27.832 10.944,26.276 10.165,26.276 10.165,27.832 8.609,27.832 8.609,25.499 7.833,25.499   7.833,28.609 8.609,28.609 10.165,28.609 10.944,28.609 13.276,28.609 14.056,28.609 16.388,28.609 17.166,28.609 19.499,28.609   20.277,28.609 22.61,28.609 23.387,28.609 25.723,28.609 26.498,28.609 28.832,28.609 29.609,28.609 31.945,28.609 32.721,28.609   32.721,27.832 32.721,25.499 "/>
+<rect fill="#E00000" height="10.889" width="1.556" x="20.301" y="20.055"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="9.127" x2="9.127" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="9.127" cy="41.832" fill="url(#SVGID_10_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="9.126" x2="9.126" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="9.126" cy="41.832" fill="url(#SVGID_11_)" r="1.039"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="13.7295" x2="13.7295" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<path d="M15.285,41.832c0,0.858-0.693,1.556-1.556,1.556c-0.857,0-1.555-0.697-1.555-1.556  c0-0.861,0.697-1.556,1.555-1.556C14.592,40.276,15.285,40.971,15.285,41.832z" fill="url(#SVGID_12_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="13.7295" x2="13.7295" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="13.73" cy="41.832" fill="url(#SVGID_13_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="18.3955" x2="18.3955" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="18.396" cy="41.832" fill="url(#SVGID_14_)" r="1.555"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_15_" x1="18.3955" x2="18.3955" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="18.396" cy="41.832" fill="url(#SVGID_15_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="23.0615" x2="23.0615" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="23.062" cy="41.832" fill="url(#SVGID_16_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="23.0635" x2="23.0635" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="23.063" cy="41.832" fill="url(#SVGID_17_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_18_" x1="27.7295" x2="27.7295" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="27.729" cy="41.832" fill="url(#SVGID_18_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_19_" x1="27.7295" x2="27.7295" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="27.729" cy="41.832" fill="url(#SVGID_19_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_20_" x1="32.3965" x2="32.3965" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="32.396" cy="41.832" fill="url(#SVGID_20_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_21_" x1="32.3965" x2="32.3965" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="32.396" cy="41.832" fill="url(#SVGID_21_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_22_" x1="9.127" x2="9.127" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="9.127" cy="46.499" fill="url(#SVGID_22_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_23_" x1="9.126" x2="9.126" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="9.126" cy="46.499" fill="url(#SVGID_23_)" r="1.039"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_24_" x1="13.7295" x2="13.7295" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<path d="M15.285,46.499c0,0.858-0.693,1.556-1.556,1.556c-0.857,0-1.555-0.697-1.555-1.556  c0-0.861,0.697-1.556,1.555-1.556C14.592,44.943,15.285,45.638,15.285,46.499z" fill="url(#SVGID_24_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_25_" x1="13.7295" x2="13.7295" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="13.73" cy="46.499" fill="url(#SVGID_25_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_26_" x1="18.3955" x2="18.3955" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="18.396" cy="46.499" fill="url(#SVGID_26_)" r="1.555"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_27_" x1="18.3955" x2="18.3955" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="18.396" cy="46.499" fill="url(#SVGID_27_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_28_" x1="23.0615" x2="23.0615" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="23.062" cy="46.499" fill="url(#SVGID_28_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_29_" x1="23.0635" x2="23.0635" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="23.063" cy="46.499" fill="url(#SVGID_29_)" r="1.038"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_30_" x1="27.7295" x2="27.7295" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="27.729" cy="46.499" fill="url(#SVGID_30_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_31_" x1="27.7295" x2="27.7295" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="27.729" cy="46.499" fill="url(#SVGID_31_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_32_" x1="32.3965" x2="32.3965" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="32.396" cy="46.499" fill="url(#SVGID_32_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_33_" x1="32.3965" x2="32.3965" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="32.396" cy="46.499" fill="url(#SVGID_33_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_34_" x1="36.999" x2="36.999" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="36.999" cy="41.832" fill="url(#SVGID_34_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_35_" x1="36.999" x2="36.999" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="36.999" cy="41.832" fill="url(#SVGID_35_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_36_" x1="41.666" x2="41.666" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="41.666" cy="41.832" fill="url(#SVGID_36_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_37_" x1="41.666" x2="41.666" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="41.666" cy="41.832" fill="url(#SVGID_37_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_38_" x1="46.333" x2="46.333" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="46.333" cy="41.832" fill="url(#SVGID_38_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_39_" x1="46.333" x2="46.333" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="46.333" cy="41.832" fill="url(#SVGID_39_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_40_" x1="50.999" x2="50.999" y1="40.2437" y2="43.355">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<path d="M52.553,41.832c0,0.858-0.691,1.556-1.553,1.556c-0.858,0-1.556-0.697-1.556-1.556  c0-0.861,0.697-1.556,1.556-1.556C51.861,40.276,52.553,40.971,52.553,41.832z" fill="url(#SVGID_40_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_41_" x1="50.999" x2="50.999" y1="40.7729" y2="42.8472">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<path d="M52.037,41.832c0,0.573-0.467,1.037-1.037,1.037c-0.573,0-1.039-0.464-1.039-1.037  s0.466-1.037,1.039-1.037C51.57,40.795,52.037,41.259,52.037,41.832z" fill="url(#SVGID_41_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_42_" x1="36.999" x2="36.999" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="36.999" cy="46.499" fill="url(#SVGID_42_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_43_" x1="36.999" x2="36.999" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="36.999" cy="46.499" fill="url(#SVGID_43_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_44_" x1="41.666" x2="41.666" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="41.666" cy="46.499" fill="url(#SVGID_44_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_45_" x1="41.666" x2="41.666" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="41.666" cy="46.499" fill="url(#SVGID_45_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_46_" x1="46.333" x2="46.333" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<circle cx="46.333" cy="46.499" fill="url(#SVGID_46_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_47_" x1="46.333" x2="46.333" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<circle cx="46.333" cy="46.499" fill="url(#SVGID_47_)" r="1.037"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_48_" x1="50.999" x2="50.999" y1="44.9106" y2="48.022">
+<stop offset="0" style="stop-color:#BA1212"/>
+<stop offset="1" style="stop-color:#FF7236"/>
+</linearGradient>
+<path d="M52.553,46.499c0,0.858-0.691,1.556-1.553,1.556c-0.858,0-1.556-0.697-1.556-1.556  c0-0.861,0.697-1.556,1.556-1.556C51.861,44.943,52.553,45.638,52.553,46.499z" fill="url(#SVGID_48_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_49_" x1="50.999" x2="50.999" y1="45.4399" y2="47.5142">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#383838"/>
+</linearGradient>
+<path d="M52.037,46.499c0,0.573-0.467,1.037-1.037,1.037c-0.573,0-1.039-0.464-1.039-1.037  s0.466-1.037,1.039-1.037C51.57,45.462,52.037,45.926,52.037,46.499z" fill="url(#SVGID_49_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_50_" x1="49.833" x2="49.833" y1="11.5854" y2="6.285">
+<stop offset="0" style="stop-color:#CBCBCB"/>
+<stop offset="0.1576" style="stop-color:#808080"/>
+<stop offset="0.6545" style="stop-color:#E5E5E5"/>
+<stop offset="1" style="stop-color:#4F4F4F"/>
+</linearGradient>
+<rect fill="url(#SVGID_50_)" height="5.443" width="6.999" x="46.333" y="6.444"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_51_" x1="37.3877" x2="37.3877" y1="10.1592" y2="7.1295">
+<stop offset="0" style="stop-color:#CBCBCB"/>
+<stop offset="0.1576" style="stop-color:#808080"/>
+<stop offset="0.6545" style="stop-color:#E5E5E5"/>
+<stop offset="1" style="stop-color:#4F4F4F"/>
+</linearGradient>
+<rect fill="url(#SVGID_51_)" height="3.111" width="17.89" x="28.443" y="7.221"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_52_" x1="19.1104" x2="19.1104" y1="9.4683" y2="7.9534">
+<stop offset="0" style="stop-color:#CBCBCB"/>
+<stop offset="0.1576" style="stop-color:#808080"/>
+<stop offset="0.6545" style="stop-color:#E5E5E5"/>
+<stop offset="1" style="stop-color:#4F4F4F"/>
+</linearGradient>
+<rect fill="url(#SVGID_52_)" height="1.556" width="18.666" x="9.777" y="7.999"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_53_" x1="8.6104" x2="8.6104" y1="10.1592" y2="7.1295">
+<stop offset="0" style="stop-color:#CBCBCB"/>
+<stop offset="0.1576" style="stop-color:#808080"/>
+<stop offset="0.6545" style="stop-color:#E5E5E5"/>
+<stop offset="1" style="stop-color:#4F4F4F"/>
+</linearGradient>
+<rect fill="url(#SVGID_53_)" height="3.111" width="2.334" x="7.443" y="7.221"/>
+<path d="M49.832,11.498c-1.285,0-2.333-1.047-2.333-2.332c0-1.288,1.048-2.334,2.333-2.334s2.334,1.046,2.334,2.334  C52.166,10.451,51.117,11.498,49.832,11.498L49.832,11.498z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<circle cx="49.833" cy="9.166" fill-opacity="0.2" r="1.944" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_54_" x1="49.8311" x2="49.8311" y1="8.0317" y2="10.2999">
+<stop offset="0" style="stop-color:#E5E5E5"/>
+<stop offset="0.7576" style="stop-color:#A7A7A7"/>
+<stop offset="1" style="stop-color:#CBCBCB"/>
+</linearGradient>
+<circle cx="49.831" cy="9.166" fill="url(#SVGID_54_)" r="1.556"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_55_" x1="49.8311" x2="49.8311" y1="7.6592" y2="10.6737">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.2848" style="stop-color:#FFFFFF"/>
+<stop offset="0.7212" style="stop-color:#7B7B7B"/>
+<stop offset="1" style="stop-color:#A7A7A7"/>
+</linearGradient>
+<path d="M49.832,7.999C50.475,7.999,51,8.521,51,9.166c0,0.643-0.525,1.166-1.168,1.166  s-1.166-0.523-1.166-1.166C48.666,8.521,49.189,7.999,49.832,7.999 M49.832,7.61c-0.859,0-1.557,0.694-1.557,1.556  c0,0.858,0.697,1.556,1.557,1.556c0.857,0,1.555-0.697,1.555-1.556C51.387,8.305,50.689,7.61,49.832,7.61L49.832,7.61z" fill="url(#SVGID_55_)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+</svg>
--- a/radioapp/radioapplication/src/radioapplication.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioapplication/src/radioapplication.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -19,6 +19,8 @@
 #include <QTimer>
 #include <qsysteminfo.h>
 #include <HbDeviceMessageBox>
+#include <xqserviceutil.h>
+#include <HbSplashScreen>
 
 // User includes
 #include "radioapplication.h"
@@ -53,6 +55,10 @@
     LOG_TIMESTAMP( "Start radio" );
     setApplicationName( hbTrId( "txt_rad_title_fm_radio" ) );
 
+    if ( !XQServiceUtil::isService() ) {
+        HbSplashScreen::start();
+    }
+
     QTimer::singleShot( 0, this, SLOT(init()) );
 }
 
@@ -73,8 +79,7 @@
 void RadioApplication::init()
 {
     // If started as a service, there is no need for offline-check
-    const Hb::ActivationReason reason = activateReason();
-    bool okToStart = reason == Hb::ActivationReasonService;
+    bool okToStart = XQServiceUtil::isService();
     QScopedPointer<QtMobility::QSystemDeviceInfo> deviceInfo( new QtMobility::QSystemDeviceInfo() );
 
     if ( !okToStart ) {
@@ -91,9 +96,10 @@
 
     if ( okToStart ) {
 
-        // MainWindow needs to be alive to be able to show the offline query dialog.
-        // The window is only constructed half-way at this point because we may need to shut down if
-        // offline usage is not allowed
+        // Try to optimize startup time by launching the radio server process as soon as possible.
+        // This way the server and UI are being initialized at the same time and the startup is faster.
+//        RadioUiEngine::launchRadioServer();
+
         mMainWindow.reset( new RadioWindow() );
 
         CREATE_WIN32_TEST_WINDOW
--- a/radioapp/radioapplication/src/testwindow_win32.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioapplication/src/testwindow_win32.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -268,6 +268,7 @@
  */
 void Win32Window::changeTheme( const QString& theme )
 {
+    LOG_FORMAT( "Changing to theme %s", GETSTRING( theme ) );
     QLocalSocket socket;
     socket.connectToServer( "hbthemeserver" );
     if ( socket.waitForConnected( 3000 ) ) {
@@ -342,7 +343,11 @@
         rootDirs << envDir;
     }
 
-    rootDirs << HB_RESOURCES_DIR;
+    QString resourcesDir = HB_RESOURCES_DIR;
+    if ( resourcesDir.isEmpty() ) {
+        resourcesDir = "/hb_dev/src/hbcore/resources";
+    }
+    rootDirs << resourcesDir;
 
     return rootDirs;
 }
--- a/radioapp/radioenginewrapper/src/radioenginewrapper.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -109,11 +109,11 @@
 }
 
 /*!
- * Returns the frequency step size from the selected region
+ * Returns true if frequency is valid, otherwise false
  */
 bool RadioEngineWrapper::isFrequencyValid( uint frequency ) const
 {
-    return frequency >= minFrequency() && frequency <= maxFrequency() && frequency % frequencyStepSize() == 0;
+    return frequency >= minFrequency() && frequency <= maxFrequency();
 }
 
 /*!
--- a/radioapp/radioenginewrapper/stub/radioenginewrapper_stub.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioenginewrapper/stub/radioenginewrapper_stub.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -35,6 +35,7 @@
     INCLUDEPATH += ../../../radioengine/utils/api
     INCLUDEPATH += ../../../radioengine/settings/api
     INCLUDEPATH += ../../../radioengine/engine/api
+    MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/radioapp/radioenginewrapper/tsrc/t_radioenginewrapper.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radioenginewrapper/tsrc/t_radioenginewrapper.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -14,6 +14,7 @@
 symbian: { 
     TARGET.CAPABILITY = CAP_GENERAL_DLL
     TARGET.SID = 0x101FF976  # Tried testUids(0x01000111 and 0x01001005) but failed
+    MMP_RULES += SMPSAFE    
 }
 DEPENDPATH += . \
     inc \
--- a/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -103,11 +103,11 @@
     Q_D( RadioPresetStorage );
     TPreset preset;
     preset.SetFrequency( station.frequency() );
-    TPresetName name( station.name().utf16() );
+    TPresetName name( station.name().left( KPresetNameLength ).utf16() );
     preset.SetName( name );
     preset.SetRenamedByUser( station.isRenamedByUser() );
     preset.SetGenre( station.genre() );
-    TRadioUrl url( station.url().utf16() );
+    TRadioUrl url( station.url().left( KUrlMaxLength ).utf16() );
     preset.SetUrl( url );
     preset.SetPiCode( station.piCode() );
     preset.SetFavorite( station.isFavorite() );
--- a/radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -20,6 +20,7 @@
 symbian: {
     TARGET.CAPABILITY = CAP_GENERAL_DLL
     TARGET.SID = 0x101FF976 # Old visual radio uid
+    MMP_RULES += SMPSAFE
 }
 
 DEPENDPATH += . \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiohistorydatabase.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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 RADIOHISTORYDATABASE_H
+#define RADIOHISTORYDATABASE_H
+
+// System includes
+#include <QScopedPointer>
+
+// User includes
+
+// Forward declarations
+class QSqlDatabase;
+class QSqlQuery;
+
+/*!
+ *
+ */
+class RadioHistoryDatabase
+{
+public:
+
+    RadioHistoryDatabase();
+    ~RadioHistoryDatabase();
+
+    void addItem( const QString& artist, const QString& title,
+                  const QString& stationName, uint frequency, bool fromRds );
+
+    void clearRecent();
+    void clearTagged();
+
+private:
+
+    bool connectToDatabase();
+
+    void commitTransaction( QSqlQuery& query );
+
+private: // data
+
+    QScopedPointer<QSqlDatabase>    mDatabase;
+
+};
+
+#endif // RADIOHISTORYDATABASE_H
--- a/radioapp/radiouiengine/inc/radiostation.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostation.h	Tue Jul 06 14:16:27 2010 +0300
@@ -160,13 +160,23 @@
 
     QString url() const;
 
-    bool hasPiCode() const;
-    bool hasRds() const;
+    int piCode() const;
 
     void setType( RadioStation::Type type );
     void unsetType( RadioStation::Type type );
     bool isType( RadioStation::Type type ) const;
 
+    // Convenience checkers
+
+    inline bool hasPiCode() const       { return piCode() != -1; }
+    inline bool hasName() const         { return !name().isEmpty(); }
+    inline bool hasUrl() const          { return !url().isEmpty(); }
+    inline bool hasRadiotext() const    { return !radioText().isEmpty(); }
+    inline bool hasDynamicPs() const    { return !dynamicPsText().isEmpty(); }
+    inline bool hasGenre() const        { return genre() != -1; }
+    inline bool hasRds() const          { return hasPiCode() || hasGenre() || hasDynamicPs() ||
+                                                 hasRadiotext() || hasUrl() || ( !hasName() && !isRenamed() ); }
+
     // Getters for non-persistent data
 
     PsType psType() const;
--- a/radioapp/radiouiengine/inc/radiouiengine.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine.h	Tue Jul 06 14:16:27 2010 +0300
@@ -41,6 +41,9 @@
 
 typedef QSharedPointer<RadioScannerEngine> RadioScannerEnginePtr;
 
+// Constants
+const uint DEFAULT_MIN_FREQUENCY = 87500000;
+
 class UI_ENGINE_DLL_EXPORT RadioUiEngine : public QObject
 {
     Q_OBJECT
@@ -49,12 +52,24 @@
 
     friend class RadioScannerEngine;
 
-public:
+public: // Static functions that are used before the ui engine is created
+
+    /*!
+     * Gets the last tuned frequency from central repository
+     */
+    static uint lastTunedFrequency( uint defaultFrequency = DEFAULT_MIN_FREQUENCY );
 
-    /**
-     * Static functions that are used before the ui engine is created
+    /*!
+     * Gets the last used volume level
      */
-    static uint lastTunedFrequency();
+    static int lastVolume();
+
+    /*!
+     * Launches the radio server process
+     */
+    static void launchRadioServer();
+
+public:
 
     RadioUiEngine( QObject* parent = 0 );
     ~RadioUiEngine();
--- a/radioapp/radiouiengine/inc/radiouiengine_p.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine_p.h	Tue Jul 06 14:16:27 2010 +0300
@@ -98,7 +98,7 @@
 
     QScopedPointer<RadioMonitorService>     mMonitorService;
 
-    QSharedPointer<RadioScannerEngine>      mScannerEngine;
+    QWeakPointer<RadioScannerEngine>        mScannerEngine;
 
     /**
      * Power off timer
--- a/radioapp/radiouiengine/radiouiengine.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/radiouiengine.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -48,6 +48,7 @@
 HEADERS += radiostationmodel.h
 HEADERS += radiouiengine.h
 HEADERS += radiohistoryitem.h
+HEADERS += radiohistorydatabase.h
 HEADERS += radiohistorymodel.h
 HEADERS += radioscannerengine.h
 HEADERS += radioservicedef.h
@@ -73,6 +74,7 @@
 SOURCES += radiouiengine_p.cpp
 SOURCES += radiohistoryitem.cpp
 SOURCES += radiohistoryitem_p.cpp
+SOURCES += radiohistorydatabase.cpp
 SOURCES += radiohistorymodel.cpp
 SOURCES += radiohistorymodel_p.cpp
 SOURCES += radioscannerengine.cpp
--- a/radioapp/radiouiengine/src/radiocontrolservice.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -34,9 +34,6 @@
     mUiEngine( engine )
 {
     publishAll();
-    if ( XQServiceUtil::isService() ) {
-        XQServiceUtil::toBackground( true );
-    }
 }
 
 /*!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiohistorydatabase.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* 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:
+*
+*/
+
+// System includes
+#include <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlError>
+#include <QStringList>
+#include <QFile>
+#include <QDateTime>
+#include <QVariant>
+//#include <QSqlRecord>
+
+// User includes
+#include "radiohistorydatabase.h"
+#include "radiologger.h"
+
+static const QLatin1String DATABASE_NAME    ( "radioplayhistory.db" );
+static const QLatin1String DATABASE_DRIVER  ( "QSQLITE" );
+static const QLatin1String HISTORY_TABLE    ( "history" );
+static const QLatin1String SQL_CREATE_TABLE ( "CREATE TABLE history ("
+                                                "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+                                                "artist TEXT NOT NULL, "
+                                                "title TEXT NOT NULL, "
+                                                "station TEXT NOT NULL, "
+                                                "frequency INTEGER NOT NULL, "
+                                                "tagged INTEGER NOT NULL DEFAULT 0, "
+                                                "fromRds INTEGER NOT NULL DEFAULT 1, "
+                                                "time INTEGER NOT NULL)" );
+
+static const QLatin1String SQL_ADD_ITEM     ( "INSERT INTO history (artist,title,station,frequency,fromRds,time) "
+                                                "VALUES ( ?,?,?,?,?,? )" );
+
+static const QLatin1String SQL_SELECT_ALL   ( "SELECT * FROM history ORDER BY id DESC" );
+static const QLatin1String SQL_SELECT_TAGGED( "SELECT * FROM history WHERE tagged=1" );// ORDER BY id DESC";
+
+static const QLatin1String SQL_DELETE_ALL   ( "DELETE FROM history" );
+static const QLatin1String SQL_DELETE_RECENT( "DELETE FROM history WHERE tagged=0" );
+//static const QLatin1String SQL_DELETE_TAGGED    = "DELETE FROM history WHERE tagged=1";
+static const QLatin1String SQL_CLEAR_TAGS   ( "UPDATE history SET tagged = 0 WHERE tagged = 1" );
+
+//static static const QLatin1String SQL_FIND_ITEM_BY_ID( "SELECT * FROM history WHERE id = ?" );
+static const QLatin1String SQL_TOGGLE_TAG   ( "UPDATE history SET tagged = ? WHERE id = ?" );
+
+#ifdef LOGGING_ENABLED
+#   define GET_ERR( param ) GETSTRING( param.lastError().text() )
+#   define GET_ERR_PTR( param ) GETSTRING( param->lastError().text() )
+#endif // LOGGING_ENABLED
+
+/*!
+ *
+ */
+RadioHistoryDatabase::RadioHistoryDatabase()
+{
+    connectToDatabase();
+}
+
+/*!
+ *
+ */
+RadioHistoryDatabase::~RadioHistoryDatabase()
+{
+    if ( mDatabase && mDatabase->isOpen() ) {
+        mDatabase->close();
+    }
+}
+
+/*!
+ *
+ */
+void RadioHistoryDatabase::addItem( const QString& artist,
+                                    const QString& title,
+                                    const QString& stationName,
+                                    uint frequency,
+                                    bool fromRds )
+{
+    LOG_FORMAT( "RadioHistoryModelPrivate::addItem. Artist: %s, Title: %s", GETSTRING( artist ), GETSTRING( title ) );
+
+    QSqlQuery query( *mDatabase );
+    mDatabase->transaction();
+
+    query.prepare( SQL_ADD_ITEM );
+    query.addBindValue( artist );
+    query.addBindValue( title );
+    query.addBindValue( stationName );
+    query.addBindValue( static_cast<int>( frequency / 1000 ) );
+    query.addBindValue( fromRds );
+    query.addBindValue( QDateTime::currentDateTime().toTime_t() );
+
+    commitTransaction( query );
+}
+
+/*!
+ *
+ */
+void RadioHistoryDatabase::clearRecent()
+{
+    QSqlQuery query( *mDatabase );
+    mDatabase->transaction();
+
+    query.prepare( SQL_CLEAR_TAGS );
+
+    commitTransaction( query );
+}
+
+/*!
+ *
+ */
+void RadioHistoryDatabase::clearTagged()
+{
+    QSqlQuery query( *mDatabase );
+    mDatabase->transaction();
+
+    query.prepare( SQL_DELETE_ALL );
+
+    commitTransaction( query );
+}
+
+/*!
+ *
+ */
+bool RadioHistoryDatabase::connectToDatabase()
+{
+    LOG_METHOD;
+    QSqlDatabase db = QSqlDatabase::addDatabase( DATABASE_DRIVER );
+    if ( db.isValid() ) {
+        mDatabase.reset( new QSqlDatabase( db ) );
+        mDatabase->setDatabaseName( DATABASE_NAME );
+
+        if ( !mDatabase->open() ) {
+            LOG_FORMAT( "Failed to open database! error = %s", GET_ERR_PTR( mDatabase ) );
+            mDatabase.reset();
+            return false;
+        }
+
+        // Create the table if it does not exist
+        if ( !mDatabase->tables().contains( HISTORY_TABLE ) ) {
+            LOG( "RadioHistoryModelPrivate::connectToDatabase: Creating database tables." );
+            QSqlQuery query;
+            if ( !query.exec( SQL_CREATE_TABLE ) ) {
+                LOG_FORMAT( "Database creation failed! error = %s", GET_ERR( query ) );
+                mDatabase->close();
+                mDatabase.reset();
+                return false;
+            }
+        }
+    } else {
+        LOG_FORMAT( "Invalid database! error = %s", GET_ERR( db ) );
+        return false;
+    }
+
+    return true;
+}
+
+/*!
+ *
+ */
+void RadioHistoryDatabase::commitTransaction( QSqlQuery& query )
+{
+    LOG_METHOD;
+
+    bool success = false;
+    Q_UNUSED( success );
+    if ( query.exec() ) {
+
+        success = mDatabase->commit();
+        LOG_ASSERT( success, LOG_FORMAT( "Commit failed! err: %s", GET_ERR_PTR( mDatabase ) ) );
+
+    } else {
+        LOG_FORMAT( "RadioHistoryModelPrivate::commitTransaction FAILED, rolling back: error = %s", GET_ERR( query ) );
+        success = mDatabase->rollback();
+        LOG_ASSERT( success, LOG_FORMAT( "Rollback failed! err: %s", GET_ERR_PTR( mDatabase ) ) );
+    }
+}
--- a/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -33,33 +33,32 @@
 #include "radiostation.h"
 #include "radiologger.h"
 
-const char* DATABASE_NAME       = "radioplayhistory.db";
-const char* DATABASE_DRIVER     = "QSQLITE";
-const char* HISTORY_TABLE       = "history";
-const char* SQL_CREATE_TABLE    = "CREATE TABLE history ("
-                                  "id INTEGER PRIMARY KEY AUTOINCREMENT, "
-                                  "artist TEXT NOT NULL, "
-                                  "title TEXT NOT NULL, "
-                                  "station TEXT NOT NULL, "
-                                  "frequency INTEGER NOT NULL, "
-                                  "tagged INTEGER NOT NULL DEFAULT 0, "
-                                  "fromRds INTEGER NOT NULL DEFAULT 1, "
-                                  "time INTEGER NOT NULL)";
+static const QLatin1String DATABASE_NAME    ( "radioplayhistory.db" );
+static const QLatin1String DATABASE_DRIVER  ( "QSQLITE" );
+static const QLatin1String HISTORY_TABLE    ( "history" );
+static const QLatin1String SQL_CREATE_TABLE ( "CREATE TABLE history ("
+                                                "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+                                                "artist TEXT NOT NULL, "
+                                                "title TEXT NOT NULL, "
+                                                "station TEXT NOT NULL, "
+                                                "frequency INTEGER NOT NULL, "
+                                                "tagged INTEGER NOT NULL DEFAULT 0, "
+                                                "fromRds INTEGER NOT NULL DEFAULT 1, "
+                                                "time INTEGER NOT NULL)" );
 
-const char* SQL_ADD_ITEM         = "INSERT INTO history (artist,title,station,frequency,fromRds,time) "
-                                            "VALUES ( ?,?,?,?,?,? )";
+static const QLatin1String SQL_ADD_ITEM     ( "INSERT INTO history (artist,title,station,frequency,fromRds,time) "
+                                                "VALUES ( ?,?,?,?,?,? )" );
 
-const char* SQL_SELECT_ALL       = "SELECT * FROM history ORDER BY id DESC";
-const char* SQL_SELECT_TAGGED    = "SELECT * FROM history WHERE tagged=1";// ORDER BY id DESC";
+static const QLatin1String SQL_SELECT_ALL   ( "SELECT * FROM history ORDER BY id DESC" );
+static const QLatin1String SQL_SELECT_TAGGED( "SELECT * FROM history WHERE tagged=1" );// ORDER BY id DESC";
 
-//const char* SQL_DELETE_ALL       = "DELETE FROM history";
-const char* SQL_DELETE_RECENT    = "DELETE FROM history WHERE tagged=0";
-//const char* SQL_DELETE_TAGGED    = "DELETE FROM history WHERE tagged=1";
-const char* SQL_CLEAR_TAGS       = "UPDATE history SET tagged = 0 WHERE tagged = 1";
+static const QLatin1String SQL_DELETE_ALL   ( "DELETE FROM history" );
+static const QLatin1String SQL_DELETE_RECENT( "DELETE FROM history WHERE tagged=0" );
+//static const QLatin1String SQL_DELETE_TAGGED    = "DELETE FROM history WHERE tagged=1";
+static const QLatin1String SQL_CLEAR_TAGS   ( "UPDATE history SET tagged = 0 WHERE tagged = 1" );
 
-//static const char* SQL_FIND_ITEM_BY_ID = "SELECT * FROM history WHERE id = ?";
-const char* SQL_TOGGLE_TAG       = "UPDATE history SET tagged = ? WHERE id = ?";
-
+//static static const QLatin1String SQL_FIND_ITEM_BY_ID( "SELECT * FROM history WHERE id = ?" );
+static const QLatin1String SQL_TOGGLE_TAG   ( "UPDATE history SET tagged = ? WHERE id = ?" );
 
 #ifdef LOGGING_ENABLED
 #   define GET_ERR( param ) GETSTRING( param.lastError().text() )
@@ -207,7 +206,7 @@
                 QDateTime dateTime;
                 dateTime.setTime_t( timeInSecs );
 
-                QString time = dateTime.toString();
+                QString time = dateTime.toString( Qt::SystemLocaleShortDate );
                 LOG_FORMAT( "---time--- %s", GETSTRING( time ) );
 
                 QString name = !station.isEmpty() ? station : parseFrequency( frequency );
@@ -248,7 +247,7 @@
 
     QSqlQuery query = beginTransaction();
 
-    query.prepare( removeTagged ? SQL_CLEAR_TAGS : SQL_DELETE_RECENT );
+    query.prepare( removeTagged ? SQL_CLEAR_TAGS : SQL_DELETE_ALL );
 
     // Commented out because rowsRemoved() seems to crash HbListView
 //    commitTransaction( query, RemoveRows, 0, rowCount() - 1 );
--- a/radioapp/radiouiengine/src/radiostation.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostation.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -25,11 +25,8 @@
 #include "radio_global.h"
 
 // Constants
-const QString TAG_ARTIST = "artist";
-const QString TAG_TITLE = "title";
-const QString HTML_ARTIST = "<a href=\"" + TAG_ARTIST + "\">";
-const QString HTML_TITLE = "<a href=\"" + TAG_TITLE + "\">";
-const QString HTML_CLOSE = "</a>";
+const QLatin1String HTML_TAG_START( "<font color='cyan'><u>" );
+const QLatin1String HTML_TAG_END( "</u></font>" );
 
 const uint LAST_CALLSIGN_CHAR_CODE = 25;
 const uint THREE_LETTER_CALLSIGN_COUNT = 72;
@@ -205,7 +202,8 @@
 
         //TODO: This is a temporary thing to see some URL. Remove this
         if ( !mData->mName.isEmpty() ) {
-            mData->mUrl = "<a href=\"buu\">www." + mData->mName.toLower() + ".fi</a>";
+            QString url = mData->mName.toLower().remove( " " );
+            mData->mUrl = "www." + url + ".fi";
         } else {
             mData->mUrl = "";
         }
@@ -317,13 +315,7 @@
             return;
         }
 
-        QString replacement = "";
-        if ( rtPlusClass == RtPlus::Artist ) {
-            replacement = HTML_ARTIST;
-        } else if ( rtPlusClass == RtPlus::Title ) {
-            replacement = HTML_TITLE;
-        }
-        replacement += rtPlusItem + HTML_CLOSE;
+        const QString replacement = HTML_TAG_START + rtPlusItem + HTML_TAG_END;
 
         mData->mRadioText.replace( rtPlusItem, replacement );
         mData->mChangeFlags |= RadioStation::RadioTextChanged;
@@ -443,21 +435,9 @@
 /*!
  *
  */
-bool RadioStation::hasPiCode() const
+int RadioStation::piCode() const
 {
-    return mData->mPiCode != -1;
-}
-
-/*!
- *
- */
-bool RadioStation::hasRds() const
-{
-    return hasPiCode() ||
-        mData->mGenre != -1 ||
-        !mData->mDynamicPsText.isEmpty() ||
-        !mData->mRadioText.isEmpty() ||
-        ( !mData->mName.isEmpty() && !isRenamed() );
+    return mData->mPiCode;
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -170,7 +170,7 @@
     d->mWrapper = wrapper;
 
     int index = d->mPresetStorage->firstPreset();
-    LOG_FORMAT( "RadioStationModelPrivate::initialize: presetCount: %d, firstIndex: %d",
+    LOG_FORMAT( "RadioStationModel::initialize: presetCount: %d, firstIndex: %d",
                                             d->mPresetStorage->presetCount(), index );
 
     while ( index >= 0 ) {
@@ -178,10 +178,11 @@
 
         RadioStationIf* stationInterface = static_cast<RadioStationIf*>( station.data_ptr() );
         if ( d->mPresetStorage->readPreset( index, *stationInterface ) ) {
-            if ( station.isValid() ) {
+            if ( station.isValid() && d->mWrapper->isFrequencyValid( station.frequency() ) ) {
                 d->mStations.insert( station.frequency(), station );
             } else {
-                LOG( "RadioStationModelPrivate::initialize: Invalid station!" );
+                LOG( "RadioStationModel::initialize: Invalid station!" );
+                LOG_FORMAT( "Invalid station freq: %d", station.frequency() );
             }
         }
 
@@ -448,7 +449,7 @@
 {
     Q_D( RadioStationModel );
     const int newIndex = findUnusedPresetIndex();
-    LOG_FORMAT( "RadioStationModelPrivate::addStation: Adding station to index %d", newIndex );
+    LOG_FORMAT( "RadioStationModel::addStation: Adding station to index %d", newIndex );
 
     RadioStation newStation = station;
     newStation.setPresetIndex( newIndex );
@@ -527,7 +528,7 @@
 {
     Q_D( RadioStationModel );
     if ( d->mWrapper->isFrequencyValid( frequency ) ) {
-        LOG_FORMAT( "RadioStationModelPrivate::setFavoriteByFrequency, frequency: %d", frequency );
+        LOG_FORMAT( "RadioStationModel::setFavoriteByFrequency, frequency: %d", frequency );
         RadioStation station;
         if ( findFrequency( frequency, station ) ) { // Update existing preset
             if ( station.isFavorite() != favorite ) {
@@ -557,7 +558,7 @@
  */
 void RadioStationModel::setFavoriteByPreset( int presetIndex, bool favorite )
 {
-    LOG_FORMAT( "RadioStationModelPrivate::setFavoriteByPreset, presetIndex: %d", presetIndex );
+    LOG_FORMAT( "RadioStationModel::setFavoriteByPreset, presetIndex: %d", presetIndex );
     RadioStation station;
     if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) {
         station.setFavorite( favorite );
@@ -570,7 +571,7 @@
  */
 void RadioStationModel::renameStation( int presetIndex, const QString& name )
 {
-    LOG_FORMAT( "RadioStationModelPrivate::renameStation, presetIndex: %d, name: %s", presetIndex, GETSTRING(name) );
+    LOG_FORMAT( "RadioStationModel::renameStation, presetIndex: %d, name: %s", presetIndex, GETSTRING(name) );
     RadioStation station;
     if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) {
         station.setUserDefinedName( name );
@@ -727,6 +728,6 @@
         // Nothing to do here
     }
 
-    LOG_FORMAT( "RadioStationModelPrivate::findUnusedPresetIndex, index: %d", index );
+    LOG_FORMAT( "RadioStationModel::findUnusedPresetIndex, index: %d", index );
     return index;
 }
--- a/radioapp/radiouiengine/src/radiouiengine.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/src/radiouiengine.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -42,35 +42,43 @@
 #include "radiologger.h"
 
 // Constants
-const uint DEFAULT_MIN_FREQUENCY = 87500000;
 const uint RADIO_CENREP_UID = 0x2002FF52;
 const uint RADIO_CENREP_FREQUENCY_KEY = 0x207;
+const uint RADIO_CENREP_HEADSET_VOLUME = 0x200;
 
+const QLatin1String OVI_STORE_URL( "http://www.music.nokia.co.uk/Touch/Search.aspx?artistsearch=#artist#&titlesearch=#title#" );
 const QLatin1String OTHER_STORE_URL( "http://www.amazon.com/gp/search/ref=sr_adv_m_digital/?search-alias=digital-music&field-author=#artist#&field-title=#title#" );
 const QLatin1String OTHER_STORE_ARTIST_TAG( "#artist#" );
 const QLatin1String OTHER_STORE_TITLE_TAG( "#title#" );
 const char WHITESPACE = ' ';
 const char WHITESPACE_REPLACEMENT = '+';
 
+// Constants used when launching radio server
+const QLatin1String RADIO_SERVER_NAME( "radioserver.exe" );
+const QLatin1String RADIO_RANGE_USEURO( "useuro" );
+const QLatin1String RADIO_RANGE_JAPAN( "japan" );
+
+// ====== STATIC FUNCTIONS ========
+
 /*!
- *
+ * Gets the last tuned frequency from central repository
  */
-uint RadioUiEngine::lastTunedFrequency()
+uint RadioUiEngine::lastTunedFrequency( uint defaultFrequency )
 {
-    uint frequency = DEFAULT_MIN_FREQUENCY;
+    uint frequency = defaultFrequency;
 
 #ifdef BUILD_WIN32
     QScopedPointer<QSettings> settings( new QSettings( "Nokia", "QtFmRadio" ) );
     frequency = settings->value( "CurrentFreq", DEFAULT_MIN_FREQUENCY ).toUInt();
     if ( frequency == 0 ) {
-        frequency = DEFAULT_MIN_FREQUENCY;
+        frequency = defaultFrequency;
     }
 #else
     QScopedPointer<XQSettingsManager> settings( new XQSettingsManager() );
     XQSettingsKey key( XQSettingsKey::TargetCentralRepository, RADIO_CENREP_UID, RADIO_CENREP_FREQUENCY_KEY );
     frequency = settings->readItemValue( key, XQSettingsManager::TypeInt ).toUInt();
     if ( frequency == 0 ) {
-        frequency = DEFAULT_MIN_FREQUENCY;
+        frequency = defaultFrequency;
     }
 #endif
 
@@ -78,6 +86,42 @@
 }
 
 /*!
+ * Gets the last used volume level
+ */
+int RadioUiEngine::lastVolume()
+{
+    int volume = DEFAULT_VOLUME_LEVEL;
+
+#ifndef BUILD_WIN32
+    QScopedPointer<XQSettingsManager> settings( new XQSettingsManager() );
+    XQSettingsKey key( XQSettingsKey::TargetCentralRepository, RADIO_CENREP_UID, RADIO_CENREP_HEADSET_VOLUME );
+    volume = settings->readItemValue( key, XQSettingsManager::TypeInt ).toInt();
+    if ( volume == 0 ) {
+        volume = DEFAULT_VOLUME_LEVEL;
+    }
+#endif
+
+    return volume;
+}
+
+/*!
+ * Launches the radio server process
+ */
+void RadioUiEngine::launchRadioServer()
+{
+    QStringList args;
+    args << RADIO_RANGE_USEURO; //TODO: Determine current region
+    args << QString::number( lastTunedFrequency( 0 ) );
+    args << QString::number( lastVolume() );
+
+    QProcess serverProcess;
+    bool success = serverProcess.startDetached( RADIO_SERVER_NAME, args );
+    LOG_ASSERT( success, LOG( "Failed to start radio server!" ) );
+}
+
+// ====== MEMBER FUNCTIONS ========
+
+/*!
  *
  */
 RadioUiEngine::RadioUiEngine( QObject* parent ) :
@@ -210,10 +254,14 @@
 RadioScannerEnginePtr RadioUiEngine::createScannerEngine()
 {
     Q_D( RadioUiEngine );
-    if ( !d->mScannerEngine ) {
-        d->mScannerEngine = RadioScannerEnginePtr( new RadioScannerEngine( *d ) );
-    }
-    return d->mScannerEngine;
+#if defined BUILD_WIN32 || defined __WINS__
+    Q_ASSERT_X( !d->mScannerEngine, "RadioUiEngine::createScannerEngine", "Previous scanner instance not freed" );
+#endif
+
+    RadioScannerEnginePtr enginePtr( new RadioScannerEngine( *d ) );
+    d->mScannerEngine = enginePtr;
+
+    return enginePtr;
 }
 
 /*!
@@ -376,20 +424,16 @@
  */
 void RadioUiEngine::openMusicStore( const RadioHistoryItem& item, MusicStore store )
 {
-    if ( store == OviStore ) {
-        //TODO: Integrate to music store
-    } else if ( store == OtherStore ) {
-        QString artist = item.artist();
-        artist.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
-        QString title = item.title();
-        title.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
+    QString artist = item.artist();
+    artist.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
+    QString title = item.title();
+    title.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
 
-        QString url( OTHER_STORE_URL );
-        url.replace( OTHER_STORE_ARTIST_TAG, artist );
-        url.replace( OTHER_STORE_TITLE_TAG, title );
+    QString url = store == OviStore ? OVI_STORE_URL : OTHER_STORE_URL;
+    url.replace( OTHER_STORE_ARTIST_TAG, artist );
+    url.replace( OTHER_STORE_TITLE_TAG, title );
 
-        launchBrowser( url );
-    }
+    launchBrowser( url );
 }
 
 /*!
--- a/radioapp/radiouiengine/tsrc/t_radiouiengine.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiouiengine/tsrc/t_radiouiengine.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -22,6 +22,7 @@
 symbian: {
     TARGET.CAPABILITY = CAP_GENERAL_DLL
     TARGET.SID = 0x101FF976 # Old visual radio uid
+    MMP_RULES += SMPSAFE
 }
 
 
--- a/radioapp/radiowidgets/inc/radiocarouselitem.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiocarouselitem.h	Tue Jul 06 14:16:27 2010 +0300
@@ -88,6 +88,8 @@
 
     void createPrimitives();
 
+    void drawOffScreen( QPainter& painter );
+
 public slots:
 
     void updatePrimitives();
@@ -103,6 +105,8 @@
 
     void updateFavoriteIcon( bool isFavorite );
 
+    void updateLayout();
+
 private: // data
 
     RadioCarouselItemObserver&          mObserver;
@@ -114,7 +118,7 @@
     HbTouchArea*                        mFavoriteTouchArea;
     HbTextItem*                         mNameItem;
     HbRichTextItem*                     mRadiotextItem;
-    HbRichTextItem*                     mUrlItem;
+    HbTextItem*                         mUrlItem;
 
     Appearance                          mAppearance;
     bool                                mOwnsCss;
--- a/radioapp/radiowidgets/inc/radiofrequencystrip.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h	Tue Jul 06 14:16:27 2010 +0300
@@ -44,6 +44,7 @@
 class WIDGETS_DLL_EXPORT RadioFrequencyStrip : public RadioStripBase
 {
     Q_OBJECT
+    Q_PROPERTY(int itemHeight READ itemHeight WRITE setItemHeight)
     Q_PROPERTY(uint frequency READ frequency)
 
     friend class RadioFrequencyItem;
@@ -52,6 +53,9 @@
 
     RadioFrequencyStrip();
 
+    void setItemHeight( int itemHeight );
+    int itemHeight() const;
+
     void init( RadioUiEngine* engine, RadioUiLoader& uiLoader );
 
     void setFrequency( const uint frequency, int reason, Scroll::Direction direction = Scroll::Shortest );
@@ -131,6 +135,8 @@
 
     QPixmap drawPixmap( uint frequency, QList<RadioStation> stations, RadioFrequencyItem* item );
 
+    QLineF makeTab( qreal pos, int height );
+
     void emitFrequencyChanged( uint frequency );
 
     int selectorPos() const;
@@ -163,6 +169,8 @@
 
     RadioUiEngine*              mUiEngine;
 
+    int                         mItemHeight;
+
     uint                        mMinFrequency;
 
     uint                        mMaxFrequency;
--- a/radioapp/radiowidgets/inc/radiomainview.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiomainview.h	Tue Jul 06 14:16:27 2010 +0300
@@ -63,6 +63,7 @@
     void updateAudioRoute( bool loudspeaker );
     void setManualSeekMode( bool manualSeekActive );
     void handleFavoriteChange( const RadioStation& station );
+    void saveActivity();
 
     void toggleSkippingMode();  //TODO: Remove. Temporary test code
     void resetFirstTimeCount(); //TODO: Remove. Temporary test code
@@ -71,6 +72,7 @@
 
 // from base class RadioViewBase
 
+    void preLazyLoadInit();
     void init();
     void setOrientation();
     void userAccepted();
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h	Tue Jul 06 14:16:27 2010 +0300
@@ -111,6 +111,8 @@
 
     void setManualSeekMode( bool manualSeekActive );
 
+    void drawOffScreen( QPainter& painter );
+
     void setAlternateSkippingMode( bool alternateSkipping ); //TODO: Remove this! This is test code
 
 signals:
--- a/radioapp/radiowidgets/inc/radiostationsview.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationsview.h	Tue Jul 06 14:16:27 2010 +0300
@@ -65,6 +65,7 @@
     void finishScanning();
     void updateVisibilities();
     void clearList();
+    void play();            // Called from context menu
     void rename();          // Called from context menu
     void toggleFavorite();  // Called from context menu
     void deleteStation();   // Called from context menu
--- a/radioapp/radiowidgets/inc/radiostripbase.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostripbase.h	Tue Jul 06 14:16:27 2010 +0300
@@ -29,7 +29,7 @@
 class RadioStripBase : public HbScrollArea
 {
     Q_OBJECT
-    Q_PROPERTY( int autoScrollTime READ autoScrollTime WRITE setAutoScrollTime )
+    Q_PROPERTY(int autoScrollTime READ autoScrollTime WRITE setAutoScrollTime)
 
 public:
 
--- a/radioapp/radiowidgets/inc/radiouiloader.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiouiloader.h	Tue Jul 06 14:16:27 2010 +0300
@@ -39,7 +39,10 @@
 
     // RadioMainView
     static const QLatin1String MV_NAME_HISTORYVIEW_ACTION       ( "mv:historyview_action" );
+    static const QLatin1String MV_NAME_CAROUSEL_BACKGROUND      ( "mv:carousel_background" );
+    static const QLatin1String MV_NAME_CAROUSEL_OVERLAY         ( "mv:carousel_overlay" );
     static const QLatin1String MV_NAME_STATION_CAROUSEL         ( "mv:station_carousel" );
+    static const QLatin1String MV_NAME_FREQUENCY_BACKGROUND     ( "mv:frequency_background" );
     static const QLatin1String MV_NAME_FREQUENCY_STRIP          ( "mv:frequency_strip" );
     static const QLatin1String MV_NAME_STATIONS_BUTTON          ( "mv:stations_button" );
     static const QLatin1String MV_NAME_FAVORITE_BUTTON          ( "mv:favorite_button" );
@@ -62,6 +65,7 @@
     static const QLatin1String SV_NAME_SCAN_ACTION              ( "sv:scan_action" );
     static const QLatin1String SV_NAME_CLEAR_LIST_ACTION        ( "sv:clear_list_action" );
     static const QLatin1String SV_NAME_SCAN_BUTTON              ( "sv:scan_button" );
+    static const QLatin1String SV_NAME_PLAY_ACTION              ( "sv:play_action" );
     static const QLatin1String SV_NAME_RENAME_ACTION            ( "sv:rename_action" );
     static const QLatin1String SV_NAME_FAVORITE_ACTION          ( "sv:toggle_favorite_action" );
     static const QLatin1String SV_NAME_DELETE_ACTION            ( "sv:delete_action" );
--- a/radioapp/radiowidgets/inc/radioviewbase.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/inc/radioviewbase.h	Tue Jul 06 14:16:27 2010 +0300
@@ -55,6 +55,8 @@
 
     void setMembers( RadioWindow* mainWindow, RadioUiLoader* uiLoader );
 
+    virtual void preLazyLoadInit();
+
     void initialize( QSharedPointer<RadioUiEngine> uiEngine );
 
     bool isInitialized() const;
--- a/radioapp/radiowidgets/res/effects/blink_in_out_in.fxml	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<!-- flip and change opacity -->
-
-<layers> 
- 	<visual>
- 		<param name="opacity" type="anim">
-    		<duration>1.0</duration>
-    		<style>easeinout</style>
-            <keyframe at="0.0">0.3</keyframe>
-	        <keyframe at="1.0">1.0</keyframe>            
-        </param>                
-  	</visual>
-</layers>
--- a/radioapp/radiowidgets/res/fmradioui.qrc	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/fmradioui.qrc	Tue Jul 06 14:16:27 2010 +0300
@@ -9,7 +9,6 @@
     </qresource>
 
     <qresource>
-        <file>effects/blink_in_out_in.fxml</file>
         <file>effects/fade_out.fxml</file>
         <file>effects/fade_in.fxml</file>
         <file>effects/slide_to_left.fxml</file>
@@ -19,24 +18,11 @@
     </qresource>
     
     <qresource>
-        <file>images/stripbackground.png</file>
-        <file>images/setfavoriteicon.png</file>
-        <file>images/nowplayingicon.png</file>
-        <file>images/qtg_mono_previous.svg</file>
-        <file>images/qtg_mono_next.svg</file>
-        <file>images/qtg_mono_radio_stations.svg</file>
-        <file>images/qtg_mono_station_scan.svg</file>        
-        <file>images/qtg_mono_speaker.svg</file>
-        <file>images/qtg_mono_speaker_off.svg</file>        
-        <file>images/pri_small_shazam.svg</file>
-        <file>images/qtg_mono_play_history.svg</file>
         <file>images/pri_small_star.svg</file>
         <file>images/pri_small_star_inactive.svg</file>
         <file>images/qtg_fr_lcd.svg</file>
         <file>images/qtg_fr_lcd_overlay.svg</file>
         <file>images/qtg_fr_tuner.svg</file>
-        <file>images/qtg_mono_tag.svg</file>
-        <file>images/pri_small_tag.svg</file>
     </qresource>
     
 </RCC>
Binary file radioapp/radiowidgets/res/images/nowplayingicon.png has changed
--- a/radioapp/radiowidgets/res/images/pri_small_shazam.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<path opacity="0.6" d="M15,29C7.28,29,1,22.72,1,15C1,7.281,7.28,1,15,1s14,6.281,14,14C29,22.72,22.719,29,15,29L15,29z"/>
-<path d="M15,2c7.18,0,13,5.82,13,13c0,7.179-5.82,13-13,13C7.82,28,2,22.18,2,15C2,7.82,7.82,2,15,2z"/>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="305.8604" y1="367.5547" x2="305.8604" y2="392.4656" gradientTransform="matrix(1 0 0 1 -290.8594 -365.0547)">
-	<stop  offset="0" style="stop-color:#C9C9C9"/>
-	<stop  offset="0.0036" style="stop-color:#C5C5C5"/>
-	<stop  offset="0.1336" style="stop-color:#575757"/>
-	<stop  offset="0.2462" style="stop-color:#252525"/>
-	<stop  offset="0.4022" style="stop-color:#090909"/>
-	<stop  offset="0.5232" style="stop-color:#020202"/>
-	<stop  offset="0.8589" style="stop-color:#000000"/>
-	<stop  offset="0.9455" style="stop-color:#020202"/>
-	<stop  offset="1" style="stop-color:#303030"/>
-</linearGradient>
-<ellipse fill="url(#SVGID_1_)" cx="15" cy="15" rx="12.5" ry="12.5"/>
-<circle fill="#FFFFFF" cx="14.999" cy="15" r="0.693"/>
-<path fill="#FFFFFF" d="M12.267,21.033c1.907,0,3.698-0.736,5.045-2.078l0,0l1.592-1.583c0.329-0.329,0.494-0.754,0.494-1.185l0,0
-	c0-0.426-0.165-0.854-0.497-1.184l0,0c-0.327-0.329-0.755-0.492-1.187-0.493l0,0c-0.434,0.001-0.863,0.165-1.193,0.494l0,0
-	l-1.589,1.582c-0.709,0.702-1.657,1.097-2.657,1.097l0,0V17.68c-0.001,0.004-0.003,0.004-0.005,0.004l0,0h-0.025V17.68
-	c-1.001-0.004-1.941-0.393-2.642-1.094l0,0c-0.71-0.707-1.107-1.651-1.109-2.652l0,0c0.001-1,0.399-1.946,1.108-2.654l0,0
-	l3.941-3.92c0.329-0.33,0.493-0.756,0.493-1.188l0,0c0-0.43-0.164-0.856-0.491-1.184l0,0c-0.33-0.329-0.759-0.492-1.19-0.492l0,0
-	c-0.434,0-0.864,0.164-1.192,0.493l0,0L7.219,8.911c-1.347,1.34-2.09,3.124-2.093,5.024l0,0v0.004c0,1.899,0.746,3.676,2.093,5.014
-	l0,0C8.565,20.295,10.357,21.033,12.267,21.033L12.267,21.033"/>
-<path fill="#FFFFFF" d="M20.406,13.422c0.734,0.73,1.102,1.69,1.102,2.65l0,0c0,0.959-0.367,1.921-1.104,2.652l0,0l-3.942,3.921
-	c-0.33,0.331-0.492,0.758-0.492,1.19l0,0c0,0.43,0.161,0.854,0.492,1.184l0,0c0.328,0.326,0.76,0.488,1.192,0.488l0,0
-	c0.433,0,0.86-0.162,1.188-0.488l0,0l3.946-3.924c1.392-1.387,2.088-3.203,2.088-5.022l0,0c0-1.82-0.694-3.637-2.086-5.021l0,0
-	c-1.351-1.343-3.138-2.08-5.052-2.08l0,0c-1.907,0-3.695,0.738-5.045,2.079l0,0l-1.591,1.584c-0.33,0.329-0.493,0.754-0.493,1.183
-	l0,0c0,0.43,0.163,0.854,0.495,1.184l0,0c0.33,0.329,0.759,0.492,1.188,0.492l0,0c0.434,0,0.862-0.162,1.192-0.49l0,0l1.588-1.582
-	c0.737-0.732,1.705-1.098,2.666-1.098l0,0C18.702,12.325,19.67,12.691,20.406,13.422L20.406,13.422z"/>
-<rect fill="none" width="30" height="30"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/pri_small_tag.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<path opacity="0.6" d="M2,12.731V4.094L4.094,2h8.638l15.683,15.684l-10.731,10.73L2,12.731z M6.904,5.952
-	c-0.525,0-0.952,0.427-0.952,0.952s0.427,0.953,0.952,0.953S7.857,7.43,7.857,6.904S7.43,5.952,6.904,5.952L6.904,5.952z"/>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="14.9995" y1="3" x2="14.9995" y2="27.0005">
-	<stop  offset="0" style="stop-color:#4EDEFF"/>
-	<stop  offset="1" style="stop-color:#048CC6"/>
-</linearGradient>
-<path fill="url(#SVGID_1_)" d="M27,17.684L12.317,3h-7.81L3,4.508v7.81L17.683,27L27,17.684z M6.904,8.857
-	c-1.078,0-1.952-0.875-1.952-1.953s0.874-1.952,1.952-1.952s1.953,0.874,1.953,1.952S7.982,8.857,6.904,8.857z"/>
-<path opacity="0.4" fill="#FFFFFF" d="M6.904,9.857c1.078,0,1.953-0.875,1.953-1.953c0-0.174-0.03-0.34-0.072-0.5
-	C8.563,8.239,7.809,8.857,6.904,8.857S5.247,8.239,5.025,7.404c-0.043,0.16-0.073,0.326-0.073,0.5
-	C4.952,8.982,5.826,9.857,6.904,9.857z"/>
-<polygon opacity="0.4" fill="#FFFFFF" points="12.317,4 26.5,18.184 27,17.684 12.317,3 4.508,3 3,4.508 3,5.508 4.508,4 "/>
-<rect x="10.07" y="12.386" transform="matrix(0.7071 0.7071 -0.7071 0.7071 16.0477 -6.6462)" fill="#FFFFFF" width="11.951" height="7.321"/>
-<polygon opacity="0.4" fill="#FFFFFF" points="17.683,22.859 9.232,14.429 8.662,15 17.683,24 23.43,18.254 22.859,17.684 "/>
-<polygon opacity="0.15" points="14.409,10.373 22.289,18.254 22.859,17.684 14.409,9.232 9.232,14.41 9.803,14.98 "/>
-<rect fill="none" width="30" height="30"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_next.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0.002 30 30" enable-background="new 0 0.002 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<polygon points="20,4 20,15 20,26 24,26 24,4 "/>
-<polygon points="6,26 20,15 6,4 "/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_play_history.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<path d="M22.5,13c0.232,0,0.461,0.019,0.688,0.035L25,12L4,0v24l9.998-5.713C15.555,15.159,18.776,13,22.5,13z"/>
-<path d="M22.5,15c-4.136,0-7.5,3.364-7.5,7.5s3.364,7.5,7.5,7.5s7.5-3.364,7.5-7.5S26.636,15,22.5,15z M22.5,28
-	c-3.033,0-5.5-2.468-5.5-5.5s2.467-5.5,5.5-5.5s5.5,2.468,5.5,5.5S25.533,28,22.5,28z"/>
-<polygon points="23,22 23,18 21,18 21,22 21,24 23,24 27,24 27,22 "/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_previous.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0.002 30 30" enable-background="new 0 0.002 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<polygon points="6,4 6,26 10,26 10,15 10,4 "/>
-<polygon points="10,15 24,26 24,4 "/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_radio_stations.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<rect x="7" y="6" width="2" height="2"/>
-<rect x="7" y="11" width="2" height="2"/>
-<rect x="7" y="16" width="2" height="2"/>
-<rect x="7" y="21" width="2" height="2"/>
-<rect x="10.059" y="6" width="9.942" height="2"/>
-<rect x="10.059" y="11" width="9.942" height="2"/>
-<rect x="10.059" y="21" width="4.941" height="2"/>
-<path d="M15,17c0-0.357,0.103-0.699,0.277-1h-5.219v2H15V17z"/>
-<path d="M11.322,26H5V3h18v10.841c0.23-0.124,0.473-0.216,0.727-0.243c0.101-0.24,0.246-0.461,0.435-0.648l1.362-1.363
-	c0.145-0.144,0.308-0.252,0.478-0.342V0H2v29h9.325c-0.18-0.469-0.296-0.963-0.296-1.486C11.029,26.982,11.135,26.473,11.322,26z"/>
-<path d="M22.579,23.634L23.945,25c0.06-0.055,0.119-0.104,0.179-0.163c2.506-2.506,2.502-6.587-0.006-9.097
-	c-0.058-0.057-0.117-0.104-0.173-0.154l-1.362,1.361c0.058,0.053,0.114,0.101,0.172,0.156c1.757,1.756,1.759,4.613,0.004,6.367
-	C22.7,23.529,22.637,23.578,22.579,23.634z"/>
-<path d="M27.107,13.155c-0.055-0.056-0.112-0.101-0.17-0.155l-1.362,1.363c0.055,0.052,0.114,0.1,0.17,0.155
-	c3.101,3.099,3.104,8.136,0.008,11.231c-0.058,0.058-0.121,0.108-0.183,0.164l1.367,1.366c0.06-0.057,0.123-0.107,0.183-0.166
-	C30.965,23.27,30.961,17.008,27.107,13.155z"/>
-<path d="M22.029,19L17,17v8.305c-0.254-0.152-0.666-0.244-1.107-0.244c-1.583,0-2.864,1.098-2.864,2.453S14.31,30,15.893,30
-	C17.475,30,19,29,19,27.514V21l3.029,1V19L22.029,19z"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_speaker.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<rect x="1" y="9" width="7" height="12"/>
-<polygon points="10,22 21,27 21,3 10,8 "/>
-<path d="M23.889,8.046L22.213,9.14C23.382,10.931,24,12.957,24,15s-0.618,4.069-1.787,5.86l1.676,1.094
-	C25.27,19.836,26,17.432,26,15S25.27,10.164,23.889,8.046z"/>
-<path d="M26.702,5.398l-1.598,1.203C26.999,9.118,28,12.021,28,15s-1.001,5.882-2.896,8.398l1.598,1.203
-	C28.859,21.735,30,18.416,30,15S28.859,8.265,26.702,5.398z"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_speaker_off.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="30" height="30"/>
-<polygon points="4.853,9 1,9 1,21 8,21 8,12.148 "/>
-<polygon points="21,16.852 21,3 11.478,7.328 "/>
-<polygon points="10,14.148 10,22 21,27 21,25.146 "/>
-<rect x="13.74" y="-3.242" transform="matrix(0.7063 -0.7079 0.7079 0.7063 -6.0767 14.6963)" width="1.868" height="35.827"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_station_scan.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<rect x="13" y="8" width="4" height="15"/>
-<rect x="9" y="12" width="2" height="7"/>
-<rect x="5" y="12" width="2" height="7"/>
-<rect x="1" y="12" width="2" height="7"/>
-<rect x="27" y="12" width="2" height="7"/>
-<rect x="23" y="12" width="2" height="7"/>
-<rect x="19" y="12" width="2" height="7"/>
-</svg>
--- a/radioapp/radiowidgets/res/images/qtg_mono_tag.svg	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<defs>
-</defs>
-<g opacity="0.5">
-	<rect fill="none" width="30" height="30"/>
-</g>
-<path d="M12.731,2H4.094L2,4.094v8.638l15.683,15.683l10.731-10.731L12.731,2z M4,11.903V4.922L4.922,4h6.981l13.683,13.683
-	l-7.903,7.903L4,11.903z"/>
-<rect x="12.385" y="10.071" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -6.6464 16.0459)" width="7.321" height="11.95"/>
-<circle cx="7" cy="7" r="2"/>
-</svg>
Binary file radioapp/radiowidgets/res/images/setfavoriteicon.png has changed
Binary file radioapp/radiowidgets/res/images/stripbackground.png has changed
--- a/radioapp/radiowidgets/res/layout/historyview.docml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/historyview.docml	Tue Jul 06 14:16:27 2010 +0300
@@ -14,10 +14,12 @@
     </object>
     <object name="hv:all_songs_button" type="HbAction">
         <bool name="checkable" value="TRUE"/>
+        <icon iconName="qtg_mono_radio_stations" name="icon"/>
         <string locid="txt_rad_button_recently_played_songs" name="text"/>
     </object>
     <object name="hv:tagged_songs_button" type="HbAction">
         <bool name="checkable" value="TRUE"/>
+        <icon iconName="qtg_mono_favourites" name="icon"/>
         <string locid="txt_rad_button_tagged_songs" name="text"/>
     </object>
     <object name="hv:toggle_tag_action" type="HbAction">
@@ -31,8 +33,8 @@
     </object>
 
     <widget name="view" type="HbView">
-        <icon name="nonTaggedIcon" iconName=":/images/qtg_mono_tag.svg" />
-        <icon name="taggedIcon" iconName=":/images/pri_small_tag.svg" />
+        <icon name="nonTaggedIcon" iconName="qtg_mono_tag" />
+        <icon name="taggedIcon" iconName="qtg_small_tag_inactive" />
         <widget name="hv:toolbar" role="HbView:toolBar" type="HbToolBar">
             <enums name="orientation" value="Horizontal"/>
             <ref object="hv:all_songs_button" role="HbToolBar:addAction"/>
--- a/radioapp/radiowidgets/res/layout/mainview.docml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/mainview.docml	Tue Jul 06 14:16:27 2010 +0300
@@ -2,15 +2,15 @@
 <hbdocument context="RadioMainView" version="0.9">
     <widget name="view" type="HbView">
         <widget name="mv:container" role="HbView:widget" type="HbWidget">
-            
+
             <!-- Information area that holds the station carousel -->
             <widget name="mv:info_area" type="HbWidget">
                 <widget name="mv:carousel_background" type="HbLabel">
-                    <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-                    <icon name="icon" iconName=":/images/qtg_fr_lcd.svg" />
+                    <icon name="icon" iconName="qtg_fr_lcd" />
                 </widget>
                 <widget name="mv:info_text" type="HbLabel" >
-                    <contentsmargins bottom="4un" left="4un" right="4un" top="4un" />
+                    <contentsmargins top="var(hb-param-margin-gene-top)" bottom="var(hb-param-margin-gene-bottom)"
+                                     left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" />
                     <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                     <string name="plainText" locid="txt_rad_info_fm_radio" />
                     <fontspec name="fontSpec" role="Title" textheight="8un" />
@@ -20,38 +20,38 @@
                     <stackitem itemname="mv:info_text"/>
                 </layout>
             </widget>
-            
+
             <!-- Frequency area that holds the frequency strip -->
             <widget name="mv:frequency_area" type="HbWidget">
-                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="1"/>
                 <widget name="mv:frequency_background" type="HbLabel">
-                    <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-                    <icon name="icon" iconName=":/images/qtg_fr_tuner.svg"/>
+                    <icon name="icon" iconName="qtg_fr_lcd"/>
                 </widget>
                 <layout type="stacked">
                     <stackitem itemname="mv:frequency_background"/>
                 </layout>
             </widget>
-            
+
             <!-- Control area that holds the three buttons -->
-            <widget name="mv:control_widget" type="HbWidget" >
+            <widget name="mv:control_area" type="HbWidget" >
                 <widget name="mv:stations_button" type="HbPushButton" />
                 <widget name="mv:favorite_button" type="HbPushButton" />
                 <widget name="mv:loudspeaker_button" type="HbPushButton" />
                 <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un" />
+                    <stretchitem stretchfactor="1"/>
                     <linearitem itemname="mv:stations_button"/>
                     <stretchitem stretchfactor="1"/>
                     <linearitem itemname="mv:favorite_button"/>
                     <stretchitem stretchfactor="1"/>
                     <linearitem itemname="mv:loudspeaker_button"/>
+                    <stretchitem stretchfactor="1"/>
                 </layout>
             </widget>
-            
+
         </widget>
         <string name="title" locid="txt_rad_title_fm_radio"/>
     </widget>
-    
+
     <!-- Section to do lazy initialization of the view -->
     <section name="lazy_load">
         <object name="mv:historyview_action" type="HbAction">
@@ -72,11 +72,10 @@
         </widget>
         <widget name="mv:info_area">
             <widget name="mv:carousel_overlay" type="HbLabel">
-                <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-                <icon name="icon" iconName=":/images/qtg_fr_lcd_overlay.svg" />
+                <icon name="icon" iconName="qtg_fr_lcd_overlay" />
             </widget>
             <widget name="mv:station_carousel" plugin="fmradiowidgetsplugin" type="RadioStationCarousel">
-                <icon name="favoriteIcon" iconName=":/images/pri_small_star.svg" />
+                <icon name="favoriteIcon" iconName="qtg_small_favorite" />
                 <icon name="nonFavoriteIcon" iconName=":/images/pri_small_star_inactive.svg" />
                 <integer name="autoScrollTime" value="1000"/>
             </widget>
@@ -94,10 +93,8 @@
             </layout>
         </widget>
         <widget name="mv:frequency_area">
-            <!--
-            <contentsmargins left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" />
-            -->
             <widget name="mv:frequency_strip" plugin="fmradiowidgetsplugin" type="RadioFrequencyStrip">
+                <contentsmargins left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" />
                 <widget name="mv:prev_button" type="HbPushButton">
                     <icon name="icon" iconName="qtg_mono_previous" />
                 </widget>
@@ -105,13 +102,14 @@
                     <icon name="icon" iconName="qtg_mono_next" />
                 </widget>
                 <integer name="autoScrollTime" value="1000"/>
+                <integer name="itemHeight" value="9"/>
             </widget>
             <layout type="stacked">
                 <stackitem itemname="mv:frequency_background"/>
                 <stackitem itemname="mv:frequency_strip"/>
             </layout>
         </widget>
-        
+
         <widget name="mv:stations_button">
             <bool name="stretched" value="TRUE" />
             <string name="text" locid="txt_rad_button_stations" />
@@ -120,51 +118,64 @@
         <widget name="mv:favorite_button">
             <bool name="stretched" value="TRUE" />
             <string name="text" locid="txt_rad_button_add_to_favourites" />
-            <icon name="icon" iconName=":/images/pri_small_star_inactive.svg" />
+            <icon name="icon" iconName="qtg_mono_add_to_favourites" />
         </widget>
         <widget name="mv:loudspeaker_button">
             <bool name="stretched" value="TRUE" />
             <string name="text" locid="txt_rad_button_activate_loudspeaker" />
             <icon name="icon" iconName="qtg_mono_speaker" />
         </widget>
-        
+
     </section>
-    
+
     <!-- Section to orient the view in portrait mode -->
     <section name="portrait">
-        <!--
-        <widget name="mv:control_widget" type="HbWidget" >
-            <contentsmargins top="5un" bottom="5un" />
-        </widget>
-        <widget name="mv:info_area">
-            <contentsmargins top="var(hb-param-margin-gene-top)" bottom="var(hb-param-margin-gene-bottom)" />
+        <widget name="mv:frequency_area">
+            <sizehint height="10un" type="FIXED"/>
         </widget>
-        -->
         <widget name="mv:container">
-            <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
-                <linearitem itemname="mv:info_area" stretchfactor="1"/>
-                <linearitem itemname="mv:frequency_area"/>
-                <linearitem itemname="mv:control_widget" stretchfactor="1"/>
+            <layout type="anchor">
+                <anchoritem src="mv:info_area" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:info_area" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)" />
+                <anchoritem src="mv:info_area" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
+
+                <anchoritem src="mv:frequency_area" srcEdge="CENTERV" dst="" dstEdge="CENTERV" spacing="0" />
+                <anchoritem src="mv:frequency_area" srcEdge="TOP" dst="mv:info_area" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="BOTTOM" dst="mv:control_area" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)" />
+                <anchoritem src="mv:frequency_area" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
+
+                <anchoritem src="mv:control_area" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:control_area" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)" />
+                <anchoritem src="mv:control_area" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
             </layout>
         </widget>
     </section>
-    
+
     <!-- Section to orient the view in landscape mode -->
     <section name="landscape">
-        <!--
-        <widget name="mv:control_widget" type="HbWidget" >
-            <contentsmargins top="var(hb-param-margin-gene-top)" bottom="var(hb-param-margin-gene-bottom)" />
+        <widget name="mv:frequency_area">
+            <sizehint height="8un" type="FIXED"/>
         </widget>
-        -->
         <widget name="mv:container">
-            <layout spacing="var(hb-param-margin-gene-middle-vertical)" type="grid">
-                <griditem column="0" itemname="mv:info_area" row="0"/>
-                <griditem column="1" itemname="mv:control_widget" row="0"/>
-                <griditem column="0" itemname="mv:frequency_area" row="1" column_span="2" />
+            <layout type="anchor">
+                <anchoritem src="mv:info_area" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:info_area" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)" />
+                <anchoritem src="mv:info_area" srcEdge="RIGHT" dst="" dstEdge="CENTERH" spacing="expr(var(hb-param-margin-gene-middle-horizontal)/2)" />
+
+                <anchoritem src="mv:control_area" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:control_area" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
+                <anchoritem src="mv:control_area" srcEdge="LEFT" dst="" dstEdge="CENTERH" spacing="-expr(var(hb-param-margin-gene-middle-horizontal)/2)" />
+
+                <anchoritem src="mv:frequency_area" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="TOP" dst="mv:info_area" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="TOP" dst="mv:control_area" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-vertical)" />
+                <anchoritem src="mv:frequency_area" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-vertical)" />
             </layout>
         </widget>
     </section>
-    
+
     <!-- Scanning layout -->
     <section name="mv:scanning">
         <object name="mv:historyview_action">
@@ -195,7 +206,7 @@
         </widget>
         <widget name="mv:favorite_button">
             <string name="text" locid="txt_rad_button_add_to_favourites" />
-            <icon name="icon" iconName=":/images/pri_small_star_inactive.svg" />
+            <icon name="icon" iconName="qtg_mono_add_to_favourites" />
         </widget>
         <widget name="mv:loudspeaker_button">
             <bool name="visible" value="TRUE"/>
--- a/radioapp/radiowidgets/res/layout/radiocarouselitem.css	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/radiocarouselitem.css	Tue Jul 06 14:16:27 2010 +0300
@@ -7,8 +7,8 @@
 {
     top: -var(hb-param-margin-gene-top);
     left: -var(hb-param-margin-gene-left);
-    pref-width: 6un;
-    pref-height: 6un;
+    pref-width: var(hb-param-graphic-size-primary-medium);
+    pref-height: var(hb-param-graphic-size-primary-medium);
     size-policy-horizontal: fixed;
     size-policy-vertical: fixed;
 }
@@ -17,25 +17,24 @@
 {
     top: -var(hb-param-margin-gene-top);
     left: -var(hb-param-margin-gene-middle-horizontal);
-    right: expr(6un + var(hb-param-margin-gene-middle-horizontal));
-    pref-height: 6un;
+    right: expr(var(hb-param-margin-gene-left) + var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-middle-horizontal));
+    pref-height: var(hb-param-graphic-size-primary-medium);
     size-policy-vertical: fixed;
     size-policy-horizontal: expanding;
 }
 
 RadioCarouselItem::genre_label::text
 {
-    color: var(qtc_lcd_title_normal);
-    text-height: var(hb-param-text-height-primary);
-    font-variant: primary;
-    text-align: center center;
+    color: lightgray; /*var(qtc_lcd_title_normal);*/
+    text-height: var(hb-param-text-height-secondary);
+    font-variant: secondary;
+    text-align: center bottom;
 }
 
 RadioCarouselItem::name_label
 {
     left: -var(hb-param-margin-gene-left);
     right: var(hb-param-margin-gene-right);
-    bottom: var(hb-param-margin-gene-middle-vertical);
     size-policy-vertical: fixed;
     size-policy-horizontal: expanding;
 }
@@ -43,20 +42,21 @@
 RadioCarouselItem[appearance=Full]::name_label
 {
     pref-height: 8un;
-    top: -var(hb-param-margin-gene-middle-vertical);
+    top: 0un;
 }
 
 RadioCarouselItem[appearance!=Full]::name_label
 {
-    pref-height: 12un;
-    top: -4un;
+    pref-height: 14un;
+    top: 1.5un;
 }
 
 RadioCarouselItem::name_label::text
 {
-    color: var(qtc_lcd_title_normal);
-    font-variant: title;
-    text-align: center center;
+    color: white; /*var(qtc_lcd_title_normal);*/
+    font-variant: primary;
+    text-wrap-mode: no-wrap;
+    text-align: center top;
 }
 
 RadioCarouselItem[appearance=Full]::name_label::text
@@ -66,12 +66,12 @@
 
 RadioCarouselItem[appearance!=Full]::name_label::text
 {
-    text-height: 12un;
+    text-height: 14un;
 }
 
 RadioCarouselItem::rt_label
 {
-    top: -var(hb-param-margin-gene-middle-vertical);
+    top: -16un;
     left: -var(hb-param-margin-gene-left);
     right: var(hb-param-margin-gene-right);
     bottom: var(hb-param-margin-middle-vertical);
@@ -83,14 +83,14 @@
     color: var(qtc_lcd_title_normal);
     text-line-count-min: 1;
     font-variant: secondary;
-    text-align: center center;
 }
 
 RadioCarouselItem[appearance=Full]::rt_label::text
 {
     text-line-count-max: 4;
-    text-wrap-mode: word-wrap;
+    text-wrap-mode: word-wrap; /*wrap-anywhere; */
     text-height: var(hb-param-text-height-secondary);
+    text-align: center center;
 }
 
 RadioCarouselItem[appearance!=Full]::rt_label::text
@@ -98,6 +98,7 @@
     text-line-count-max: 1;
     text-wrap-mode: no-wrap;
     text-height: 5un;
+    text-align: center center;
 }
 
 RadioCarouselItem::url_label
@@ -109,10 +110,10 @@
 
 RadioCarouselItem::url_label::text
 {
-    color: var(qtc_lcd_title_normal);
     text-height: var(hb-param-text-height-secondary);
     font-variant: secondary;
     text-align: center center;
+    color:var(qtc_lcd_link_normal);
 }
 
 RadioCarouselItem::favorite_touch_area
--- a/radioapp/radiowidgets/res/layout/radiocarouselitem.widgetml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/radiocarouselitem.widgetml	Tue Jul 06 14:16:27 2010 +0300
@@ -10,8 +10,8 @@
 
         <meshitem src="name_label" srcEdge="LEFT" dst="" dstEdge="LEFT" />
         <meshitem src="name_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-        <meshitem src="name_label" srcEdge="BOTTOM" dst="rt_label" dstEdge="TOP" />
 
+        <meshitem src="rt_label" srcEdge="TOP" dst="" dstEdge="TOP" />
         <meshitem src="rt_label" srcEdge="LEFT" dst="" dstEdge="LEFT" />
         <meshitem src="rt_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
         <meshitem src="rt_label" srcEdge="BOTTOM" dst="url_label" dstEdge="TOP" />
--- a/radioapp/radiowidgets/res/layout/stationsview.docml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/stationsview.docml	Tue Jul 06 14:16:27 2010 +0300
@@ -35,8 +35,8 @@
         <string name="text" locid="txt_rad_button_favourites" />
     </object>
     <widget name="view" type="HbView">
-        <icon name="nowPlayingIcon" iconName=":/images/nowplayingicon.png" />
-        <icon name="favoriteIcon" iconName="qtg_mono_favourites" />
+        <icon name="nowPlayingIcon" iconName="qtg_mono_play" />
+        <icon name="favoriteIcon" iconName="qtg_small_favorite" />
         <widget name="mMenu" role="HbView:menu" type="HbMenu">
             <ref object="sv:scan_action" role="HbMenu:addAction"/>
             <ref object="sv:clear_list_action" role="HbMenu:addAction"/>
--- a/radioapp/radiowidgets/src/radiocarouselitem.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiocarouselitem.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -22,6 +22,7 @@
 #include <HbIconItem>
 #include <HbTouchArea>
 #include <HbTapGesture>
+#include <QPainter>
 
 // User includes
 #include "radiocarouselitem.h"
@@ -110,11 +111,36 @@
     mRadiotextItem = new HbRichTextItem( this );
     HbStyle::setItemName( mRadiotextItem, RT_LABEL );
 
-    mUrlItem = new HbRichTextItem( this );
+    mUrlItem = new HbTextItem( this );
     HbStyle::setItemName( mUrlItem, URL_LABEL );
 
     mFavoriteTouchArea = new HbTouchArea( this );
     HbStyle::setItemName( mFavoriteTouchArea, FAVORITE_TOUCH_AREA );
+
+    // Matti testing needs these
+    mFavoriteItem->setObjectName( ICON_BUTTON );
+    mGenreItem->setObjectName( GENRE_LABEL );
+    mNameItem->setObjectName( NAME_LABEL );
+    mRadiotextItem->setObjectName( RT_LABEL );
+    mUrlItem->setObjectName( URL_LABEL );
+    mFavoriteTouchArea->setObjectName( FAVORITE_TOUCH_AREA );
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::drawOffScreen( QPainter& painter )
+{
+    QStyleOptionGraphicsItem option;
+
+    foreach ( QGraphicsItem* child, childItems() ) {
+        QGraphicsWidget* childWidget = static_cast<QGraphicsWidget*>( child );
+        option.exposedRect = childWidget->rect();
+        painter.save();
+        painter.translate( childWidget->pos() );
+        childWidget->paint( &painter, &option, NULL );
+        painter.restore();
+    }
 }
 
 /*!
@@ -236,6 +262,9 @@
 void RadioCarouselItem::setStation( const RadioStation& station )
 {
     *mStation = station;
+
+    updateLayout();
+
     update();
 }
 
@@ -254,36 +283,34 @@
 {
     if ( station ) {
         *mStation = *station;
+        updateLayout();
     }
 
     if ( mStation->isValid() ) {
         mGenreItem->setText( mObserver.localizeGenre( mStation->genre() ) );
 
-        const bool stationHasName = !mStation->name().isEmpty();
-        const bool stationHasRadiotext = !mStation->radioText().isEmpty();
-        const bool stationHasUrl = !mStation->url().isEmpty();
-        setAppearance( stationHasName || stationHasRadiotext || stationHasUrl ? Full : Default );
-
-        if ( stationHasName ) {
+        const bool hasName = mStation->hasName();
+        if ( hasName ) {
             mNameItem->setText( mStation->name() );
         } else {
             mNameItem->setText( mStation->frequencyString() );
         }
 
-        if ( stationHasRadiotext ) {
+        if ( mStation->hasRadiotext() ) {
             mRadiotextItem->setText( mStation->radioText() );
         } else {
-            if ( !mStation->dynamicPsText().isEmpty() ) {
+            if ( mStation->hasDynamicPs() ) {
                 mRadiotextItem->setText( mStation->dynamicPsText() );
-            } else if ( stationHasName ) {
-                mRadiotextItem->setText( mStation->frequencyString() );
+            } else if ( hasName ) {
+                const QString loc = "%L1 Mhz"; //hbTrId( "txt_rad_list_l1_mhz_small" );
+                mRadiotextItem->setText( loc.arg( mStation->frequencyString() ) );
             } else {
                 mRadiotextItem->setText( "" );
             }
         }
 
         mUrlItem->setText( mStation->url() );
-        if ( stationHasUrl ) {
+        if ( mStation->hasUrl() ) {
             HbStyle::setItemName( mUrlItem, URL_LABEL );
             setFlags( UrlVisible | UrlTouchable );
         } else {
@@ -365,3 +392,12 @@
         mFavoriteItem->setIcon( mObserver.nonFavoriteIcon() );
     }
 }
+
+/*!
+ *
+ */
+void RadioCarouselItem::updateLayout()
+{
+    setAppearance( mStation->hasName() || mStation->hasRadiotext() || mStation->hasUrl() ? Full : Default );
+}
+
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -275,6 +275,8 @@
                 box->open();
             }
         }
+        const uint frequency = model.stationAt( 0 ).frequency();
+        mUiEngine.setFrequency( frequency, TuneReason::StationScanFinalize );
     }
 
     mIsAlive = false;
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -25,6 +25,7 @@
 #include <HbColorScheme>
 #include <HbEvent>
 #include <HbSwipeGesture>
+#include <HbDeviceProfile>
 
 #include "radiofrequencystrip.h"
 #include "radiofrequencyitem.h"
@@ -36,8 +37,8 @@
 #include "radiologger.h"
 
 // Frequency lines
-const int TAB_HEIGHT_SMALL = 10;
-const int TAB_HEIGHT_BIG = 15;
+const int TAB_HEIGHT_SMALL = 12;
+const int TAB_HEIGHT_BIG = 18;
 const int PEN_WIDTH_FAVORITE = 4;
 const qreal INDICATOR_WIDTH = 2.0;
 
@@ -52,7 +53,6 @@
 const qreal PIXMAP_OVERLAP = qreal( ONE_TAB_DISTANCE ) / 2;
 const int ITEM_WIDTH = ONE_TAB_DISTANCE * 5;
 const int PIXMAP_WIDTH = ITEM_WIDTH + (int)PIXMAP_OVERLAP;
-const int STRIP_HEIGHT = 50;
 
 const uint ONE_HUNDRED_KHZ = 100000;
 
@@ -84,17 +84,10 @@
 /*!
  *
  */
-static QLineF makeTab( qreal pos, int height )
-{
-    return QLineF( pos, STRIP_HEIGHT - height, pos, STRIP_HEIGHT );
-}
-
-/*!
- *
- */
 RadioFrequencyStrip::RadioFrequencyStrip() :
     RadioStripBase(),
     mUiEngine( NULL ),
+    mItemHeight( 8 ),
     mMinFrequency( 87500000 ),
     mMaxFrequency( 108000000 ),
     mFrequencyStepSize( 100000 ),
@@ -114,18 +107,24 @@
     RadioUtil::setFrequencyStrip( this );
 
     setScrollingStyle( HbScrollArea::PanWithFollowOn );
-    setItemSize( QSizeF( ITEM_WIDTH + PIXMAP_OVERLAP / 2, STRIP_HEIGHT ) );
+    setItemSize( QSizeF( ITEM_WIDTH + PIXMAP_OVERLAP / 2, mItemHeight ) );
     setOverlap( PIXMAP_OVERLAP / 2 );
-
-    initModel();
+}
 
-    initSelector();
-
-    initEmptyItems();
+/*!
+ * Property
+ */
+void RadioFrequencyStrip::setItemHeight( int itemHeight )
+{
+    mItemHeight = itemHeight;
+}
 
-    initPositions();
-
-    mFrequency = RadioUiEngine::lastTunedFrequency();
+/*!
+ * Property
+ */
+int RadioFrequencyStrip::itemHeight() const
+{
+    return mItemHeight;
 }
 
 /*!
@@ -137,6 +136,14 @@
     mMinFrequency       = mUiEngine->minFrequency();
     mMaxFrequency       = mUiEngine->maxFrequency();
     mFrequencyStepSize  = mUiEngine->frequencyStepSize();
+    mFrequency          = RadioUiEngine::lastTunedFrequency();
+
+    initModel();
+    initEmptyItems();
+    initPositions();
+
+    HbDeviceProfile deviceProfile;
+    mItemHeight = static_cast<int>( mItemHeight * deviceProfile.unitValue() );
 
     mLeftButton = uiLoader.findWidget<HbPushButton>( DOCML::MV_NAME_PREV_BUTTON );
     mRightButton = uiLoader.findWidget<HbPushButton>( DOCML::MV_NAME_NEXT_BUTTON );
@@ -411,6 +418,8 @@
     LOG_METHOD;
     RadioStripBase::resizeEvent( event );
 
+    initSelector();
+
     const qreal height = event->newSize().height();
     const qreal width = event->newSize().width();
 
@@ -545,7 +554,7 @@
  */
 void RadioFrequencyStrip::initSelector()
 {
-    QPixmap selectorPixmap = QPixmap( QSize( SELECTOR_WIDTH, STRIP_HEIGHT ) );
+    QPixmap selectorPixmap = QPixmap( QSize( SELECTOR_WIDTH, (int)size().height() ) );
     selectorPixmap.fill( Qt::red );
     mSelectorImage->setPixmap( selectorPixmap );
     mSelectorImage->setZValue( SELECTOR_Z_POS );
@@ -676,7 +685,7 @@
  */
 QPixmap RadioFrequencyStrip::drawPixmap( uint frequency, QList<RadioStation> stations, RadioFrequencyItem* item )
 {
-    QPixmap pixmap( PIXMAP_WIDTH, STRIP_HEIGHT );
+    QPixmap pixmap( PIXMAP_WIDTH, mItemHeight );
     pixmap.fill( Qt::transparent );
     QPainter painter( &pixmap );
     QPen normalPen = painter.pen();
@@ -685,8 +694,8 @@
     painter.setPen( normalPen );
 
     if ( frequency == 0 ) {
-        painter.drawLine( makeTab( mSeparatorPos - 1 + ROUNDER, STRIP_HEIGHT ) );
-        painter.drawLine( makeTab( mSeparatorPos + ROUNDER, STRIP_HEIGHT ) );
+        painter.drawLine( makeTab( mSeparatorPos - 1 + ROUNDER, mItemHeight ) );
+        painter.drawLine( makeTab( mSeparatorPos + ROUNDER, mItemHeight ) );
         return pixmap;
     }
 
@@ -710,7 +719,11 @@
         if ( frequency % ONE_HERTZ == 0 ) {
 
             // Draw the high frequency tab and the frequency text for the even number
-            painter.drawLine( makeTab( pixels + leftOverlap, TAB_HEIGHT_BIG ) );
+            normalPen.setWidth( 3 );
+            painter.setPen( normalPen );
+            painter.drawLine( makeTab( pixels + leftOverlap - 1, TAB_HEIGHT_BIG ) );
+            normalPen.setWidth( 1 );
+            painter.setPen( normalPen );
 
             // Draw the frequency text and its 00 decimals
             painter.setFont( DECIMAL_FONT );
@@ -736,7 +749,7 @@
     // Draw favorites and local stations
     favoritePen.setColor( Qt::yellow );
 
-    const int markerYPos = STRIP_HEIGHT - 20;
+    const int markerYPos = mItemHeight - 28;
     foreach ( const RadioStation& station, stations ) {
         const uint frequency = station.frequency();
         pixels = qreal( frequency - startFrequency ) / PIXEL_IN_HZ;
@@ -745,7 +758,6 @@
             favoritePen.setWidth( PEN_WIDTH_FAVORITE );
             painter.setPen( favoritePen );
             painter.drawEllipse( int( pixels + leftOverlap - 3 ), markerYPos - 3, 6, 6 );
-//            painter.drawPixmap( pixels - 10, 20, 20, 20, mFavoriteIcon.pixmap() );
         } else if ( station.isType( RadioStation::LocalStation ) ) {
 
             favoritePen.setWidth( 1 );
@@ -760,6 +772,14 @@
 /*!
  *
  */
+QLineF RadioFrequencyStrip::makeTab( qreal pos, int height )
+{
+    return QLineF( pos, mItemHeight - height, pos, mItemHeight );
+}
+
+/*!
+ *
+ */
 void RadioFrequencyStrip::emitFrequencyChanged( uint frequency )
 {
     if ( frequency > 0 && frequency != mFrequency ) {
--- a/radioapp/radiowidgets/src/radiomainview.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiomainview.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -20,7 +20,11 @@
 #include <HbPushButton>
 #include <HbAction>
 #include <HbMenu>
-#include <QApplication>
+#include <HbApplication>
+#include <HbActivityManager>
+#include <QPixmap>
+#include <HbLabel>
+#include <HbFrameItem>          // Temporarily here until docml supports frame items
 
 // User includes
 #include "radiowindow.h"
@@ -35,6 +39,22 @@
 #include "radiofrequencyscanner.h"
 
 // Constants
+const QLatin1String RADIO_MAINVIEW_ACTIVITY_ID( "FMRadioMainView" );
+
+/*!
+ * Temporary convenience function to set frame background until DOCML supports frame items
+ */
+static void initFrameBackground( RadioUiLoader& uiLoader,
+                                 const QString backgroundName,
+                                 HbFrameDrawer::FrameType frameType )
+{
+    if ( HbLabel* backgroundLabel = uiLoader.findObject<HbLabel>( backgroundName ) ) {
+        QString backgroundName = backgroundLabel->icon().iconName();
+        HbFrameItem* frameItem = new HbFrameItem( backgroundName, frameType, backgroundLabel );
+        backgroundLabel->setBackgroundItem( frameItem );
+    }
+}
+
 
 /*!
  *
@@ -68,7 +88,8 @@
         updateFavoriteButton();
         mFrequencyScanner.take();
 
-        const bool firsTimeStart = mUiEngine->isFirstTimeStart();
+//        const bool firsTimeStart = mUiEngine->isFirstTimeStart();
+        const bool firsTimeStart = false; // TODO! RadioServer terminates. Fix available in NCP 25 or 27.
         const int rowCount = mUiEngine->stationModel().rowCount();
         if ( firsTimeStart && rowCount != 0 ) {
             mUiEngine->setFirstTimeStartPerformed( true );
@@ -80,10 +101,23 @@
  * \reimp
  *
  */
+void RadioMainView::preLazyLoadInit()
+{
+    initFrameBackground( *mUiLoader, DOCML::MV_NAME_FREQUENCY_BACKGROUND, HbFrameDrawer::NinePieces );
+
+    initFrameBackground( *mUiLoader, DOCML::MV_NAME_CAROUSEL_BACKGROUND, HbFrameDrawer::NinePieces );
+}
+
+/*!
+ * \reimp
+ *
+ */
 void RadioMainView::init()
 {
     LOG_METHOD;
     loadSection( DOCML::FILE_MAINVIEW, DOCML::SECTION_LAZY_LOAD );
+    initFrameBackground( *mUiLoader, DOCML::MV_NAME_CAROUSEL_OVERLAY, HbFrameDrawer::NinePieces );
+
     mCarousel = mUiLoader->findObject<RadioStationCarousel>( DOCML::MV_NAME_STATION_CAROUSEL );
     mCarousel->init( *mUiLoader, mUiEngine.data() );
 
@@ -155,12 +189,16 @@
 #endif // BUILD_WIN32
     setNavigationAction( backAction );
 
-    const bool firsTimeStart = mUiEngine->isFirstTimeStart();
+//    const bool firsTimeStart = mUiEngine->isFirstTimeStart();
+    const bool firsTimeStart = false; // TODO! RadioServer terminates. Fix available in NCP 25 or 27.
     const int rowCount = mUiEngine->stationModel().rowCount();
     if ( firsTimeStart && rowCount == 0 ){
         QTimer::singleShot( 100, this, SLOT(toggleScanning()) );
     }
 
+    Radio::connect( static_cast<HbApplication*>( qApp ),    SIGNAL(aboutToQuit()),
+                    this,                                   SLOT(saveActivity()) );
+
     emit applicationReady();
 }
 
@@ -389,6 +427,42 @@
 /*!
  * Private slot
  */
+void RadioMainView::saveActivity()
+{
+    HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+
+    // Get a screenshot for saving to the activity manager
+    QSize screenShotSize = mCarousel->size().toSize();
+    QPixmap screenShot( screenShotSize );
+    QPainter painter( &screenShot );
+
+    // Draw the background and overlay
+    HbLabel* backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_BACKGROUND );
+    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
+    backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_OVERLAY );
+    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
+
+    mCarousel->drawOffScreen( painter );
+
+    QVariantHash metadata;
+    metadata.insert( "screenshot", screenShot );
+
+    #ifdef __WINS__
+        screenShot.save( "c:\\radio.bmp" );
+    #elif defined BUILD_WIN32
+        screenShot.save( "radio.bmp" );
+    #endif
+
+    // Update the activity to the activity manager
+    bool ok = activityManager->removeActivity( RADIO_MAINVIEW_ACTIVITY_ID );
+    LOG_ASSERT( ok, LOG( "Failed to remove old activity from Activity Manager!" ) );
+    ok = activityManager->addActivity( RADIO_MAINVIEW_ACTIVITY_ID, QVariant(), metadata );
+    LOG_ASSERT( ok, LOG( "Failed to update activity to Activity Manager!" ) );
+}
+
+/*!
+ * Private slot
+ */
 void RadioMainView::toggleSkippingMode()
 {
     if ( !mSkippingAction ) {
@@ -422,11 +496,10 @@
     model.findFrequency( mUiEngine->currentFrequency(), station );
     HbPushButton* favoriteButton = mUiLoader->findWidget<HbPushButton>( DOCML::MV_NAME_FAVORITE_BUTTON );
     if ( station.isFavorite() ) {
-        //TODO: Get localized text
-        favoriteButton->setText( "Remove from favourites" );
-//        favoriteButton->setIcon( HbIcon( ":/images/pri_small_star_inactive.svg" ) );
+        favoriteButton->setText( hbTrId( "txt_fmradio_button_remove_from_favourites" ) );
+        favoriteButton->setIcon( HbIcon( "qtg_mono_favourites_remove" ) );
     } else {
         favoriteButton->setText( hbTrId( "txt_rad_button_add_to_favourites" ) );
-//        favoriteButton->setIcon( HbIcon( ":/images/pri_small_star.svg" ) );
+        favoriteButton->setIcon( HbIcon( "qtg_mono_add_to_favourites" ) );
     }
 }
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -23,6 +23,7 @@
 #include <HbSwipeGesture>
 #include <HbFontSpec>
 #include <HbMenu>
+#include <QPainter>
 
 // User includes
 #include "radiostationcarousel.h"
@@ -44,6 +45,11 @@
 const int FAVORITE_HINT_SHOW_DELAY = 1000;
 const int FAVORITE_HINT_HIDE_DELAY = 2000;
 
+// Matti testing constants
+const QLatin1String LEFT_ITEM_NAME      ( "carousel_left" );
+const QLatin1String CENTER_ITEM_NAME    ( "carousel_center" );
+const QLatin1String RIGHT_ITEM_NAME     ( "carousel_right" );
+
 #ifdef BUILD_WIN32
 #   define SCROLLBAR_POLICY ScrollBarAlwaysOn
 #else
@@ -148,6 +154,11 @@
     mItems[LeftItem] = new RadioCarouselItem( *this, this );
     mItems[RightItem] = new RadioCarouselItem( *this, this );
 
+    // Matti testing needs the objects to have names
+    mItems[LeftItem]->setObjectName( LEFT_ITEM_NAME );
+    mItems[CenterItem]->setObjectName( CENTER_ITEM_NAME );
+    mItems[RightItem]->setObjectName( RIGHT_ITEM_NAME );
+
     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout( Qt::Horizontal );
     layout->setContentsMargins( 0, 0, 0, 0 );
     layout->setSpacing( 0 );
@@ -422,6 +433,14 @@
 }
 
 /*!
+ *
+ */
+void RadioStationCarousel::drawOffScreen( QPainter& painter )
+{
+    mItems[CenterItem]->drawOffScreen( painter );
+}
+
+/*!
  * TODO: Remove this! This is test code
  */
 void RadioStationCarousel::setAlternateSkippingMode( bool alternateSkipping )
--- a/radioapp/radiowidgets/src/radiostationsview.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationsview.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -119,12 +119,21 @@
     *mSelectedStation = mFilterModel->data( item->modelIndex(), RadioRole::RadioStationRole ).value<RadioStation>();
 
     HbAction* favoriteAction = mUiLoader->findObject<HbAction>( DOCML::NAME_CONTEXT_FAVORITE );
+
     if ( mSelectedStation->isFavorite() ) {
         favoriteAction->setText( hbTrId( "txt_rad_menu_remove_favourite" ) );
     } else {
         favoriteAction->setText( hbTrId( "txt_rad_menu_add_to_favourites" ) );
     }
 
+    HbAction* playAction = mUiLoader->findObject<HbAction>( DOCML::SV_NAME_PLAY_ACTION );
+
+    if ( mSelectedStation->frequency() == mUiEngine->currentFrequency() ) {
+        playAction->setVisible( false );
+    } else {
+        playAction->setVisible( true );
+    }
+
     menu->setPreferredPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
     menu->show();
 }
@@ -224,6 +233,16 @@
  * Private slot
  *
  */
+void RadioStationsView::play()
+{
+    LOG("Play from context menu");
+    mUiEngine->setFrequency( mSelectedStation->frequency(), TuneReason::StationsList );
+}
+
+/*!
+ * Private slot
+ *
+ */
 void RadioStationsView::rename()
 {
     HbInputDialog* nameQuery = new HbInputDialog();
@@ -315,6 +334,8 @@
                        this,                            SLOT(startScanning()) );
 
     // Context menu actions
+    connectXmlElement( DOCML::SV_NAME_PLAY_ACTION,      SIGNAL(triggered()),
+                       this,                            SLOT(play()) );
     connectXmlElement( DOCML::SV_NAME_RENAME_ACTION,    SIGNAL(triggered()),
                        this,                            SLOT(rename()) );
     connectXmlElement( DOCML::SV_NAME_FAVORITE_ACTION,  SIGNAL(triggered()),
--- a/radioapp/radiowidgets/src/radioviewbase.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radioviewbase.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -63,6 +63,14 @@
 /*!
  *
  */
+void RadioViewBase::preLazyLoadInit()
+{
+    // Default implementation does nothing
+}
+
+/*!
+ *
+ */
 void RadioViewBase::initialize( QSharedPointer<RadioUiEngine> uiEngine )
 {
     mUiEngine = uiEngine;
--- a/radioapp/radiowidgets/src/radiowindow.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioapp/radiowidgets/src/radiowindow.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -272,6 +272,7 @@
         }
 
         aMember->setMembers( this, uiLoader.take() );
+        aMember->preLazyLoadInit();
 
         addView( aMember );
     }
--- a/radioengine/engine/group/radioengine.mmp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/engine/group/radioengine.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -30,6 +30,7 @@
 VENDORID                VID_DEFAULT
 
 PAGED
+SMPSAFE
 
 SOURCEPATH              ../src
 SOURCE                  cradioengine.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/engine/stub/bwins/fmradioengine_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+	??1CRadioEngine@@UAE@XZ @ 1 NONAME ; CRadioEngine::~CRadioEngine(void)
+	?NewL@CRadioEngine@@SAPAV1@AAVMRadioEngineInitializer@@@Z @ 2 NONAME ; class CRadioEngine * CRadioEngine::NewL(class MRadioEngineInitializer &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/engine/stub/eabi/fmradioengine_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,6 @@
+EXPORTS
+	_ZN12CRadioEngine4NewLER23MRadioEngineInitializer @ 1 NONAME
+	_ZN12CRadioEngineD0Ev @ 2 NONAME
+	_ZN12CRadioEngineD1Ev @ 3 NONAME
+	_ZN12CRadioEngineD2Ev @ 4 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/engine/stub/group/bld.inf	Tue Jul 06 14:16:27 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 "../../../group/buildflags.hrh"
+
+#ifdef COMPILE_IN_WK48_ENV
+#   include <domain/osextensions/platform_paths.hrh>
+#else
+#   include <platform_paths.hrh>
+#endif // COMPILE_IN_WK48_ENV
+
+PRJ_PLATFORMS
+WINSCW ARMV5
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+radioengine_stub.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/engine/stub/group/radioengine_stub.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* 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 "../../../group/buildflags.hrh"
+
+#ifdef COMPILE_IN_IVALO
+#   include <domain/osextensions/platform_paths.hrh>
+#else
+#   include <platform_paths.hrh>
+#endif // COMPILE_IN_IVALO
+
+#include <data_caging_paths.hrh>
+
+TARGET                  fmradioengine_stub.dll
+TARGETTYPE              DLL
+UID                     0x1000008D 0x01000011
+VERSION                 11.0
+
+CAPABILITY              CAP_GENERAL_DLL
+VENDORID                VID_DEFAULT
+
+PAGED
+SMPSAFE
+
+SOURCEPATH              ../../src
+SOURCE                  cradioengine.cpp
+SOURCE                  cradioengineimp.cpp
+SOURCE                  cradiordsreceiver.cpp
+SOURCE                  cradiordsreceiverbase.cpp
+SOURCE                  cradionetworkinfolistener.cpp
+
+USERINCLUDE             ../../api
+USERINCLUDE             ../../inc
+USERINCLUDE             ../../../utils/api
+USERINCLUDE             ../../../settings/api
+USERINCLUDE             ../../../group
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY                 fmradioengineutils_stub.lib
+LIBRARY                 fmradioenginesettings_stub.lib
+
+LIBRARY                 audiooutputrouting.lib
+LIBRARY                 euser.lib
+LIBRARY                 efsrv.lib
+LIBRARY                 radio_utility_stub.lib
+LIBRARY                 cone.lib
+LIBRARY                 etel3rdparty.lib            // For CTelephony
+LIBRARY                 etel.lib                    // For RTelServer
+LIBRARY                 etelmm.lib                  // For RMobilePhone
+LIBRARY                 commsdat.lib                // For CommsDat
+LIBRARY                 timezonelocalization.lib    // For CTzLocalizer
+LIBRARY                 bafl.lib                    // For CDesCArray
+LIBRARY                 centralrepository.lib
--- a/radioengine/group/bld.inf	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/group/bld.inf	Tue Jul 06 14:16:27 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+PRJ_MMPFILES
 #include "../utils/group/bld.inf"
 #include "../settings/group/bld.inf"
 #include "../engine/group/bld.inf"
--- a/radioengine/settings/api/cradioregion.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/api/cradioregion.h	Tue Jul 06 14:16:27 2010 +0300
@@ -84,18 +84,6 @@
     */
     IMPORT_C const RRadioCountryCodeArray& CountryCodes();
 
-    /**
-    * Name Get the name of region
-    * @return Name of region
-    */
-    IMPORT_C const TDesC16& Name() const;
-
-    /**
-    * SettingItemName Get the name of region for setting item
-    * @return Name of region
-    */
-    IMPORT_C const TDesC16& SettingItemName() const;
-
 private:
 
     CRadioRegion();
@@ -107,7 +95,7 @@
     /** Id of the region*/
     TRadioRegion            iId;
     /** Step interval*/
-    TUint16                 iStepSize;
+    TUint32                 iStepSize;
     /** Min frequency */
     TUint32                 iMinFreq;
     /** Max frequency */
@@ -116,10 +104,6 @@
     TInt                    iDecimalCount;
     /** Country code*/
     RRadioCountryCodeArray  iCountryCodes;
-    /** Region name*/
-    HBufC*                  iName;
-    /** Region name for setting item*/
-    HBufC*                  iSettingName;
 
     };
 
--- a/radioengine/settings/bwins/fmradioenginesettingsu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/bwins/fmradioenginesettingsu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -1,12 +1,10 @@
 EXPORTS
-	?Name@CRadioRegion@@QBEABVTDesC16@@XZ @ 1 NONAME ; class TDesC16 const & CRadioRegion::Name(void) const
-	?SettingItemName@CRadioRegion@@QBEABVTDesC16@@XZ @ 2 NONAME ; class TDesC16 const & CRadioRegion::SettingItemName(void) const
-	?Id@CRadioRegion@@QBE?AW4TRadioRegion@@XZ @ 3 NONAME ; enum TRadioRegion CRadioRegion::Id(void) const
+	?Id@CRadioRegion@@QBE?AW4TRadioRegion@@XZ @ 1 NONAME ; enum TRadioRegion CRadioRegion::Id(void) const
+	?NewL@CRadioSettings@@SAPAV1@XZ @ 2 NONAME ; class CRadioSettings * CRadioSettings::NewL(void)
+	?StepSize@CRadioRegion@@QBEKXZ @ 3 NONAME ; unsigned long CRadioRegion::StepSize(void) const
 	?MaxFrequency@CRadioRegion@@QBEKXZ @ 4 NONAME ; unsigned long CRadioRegion::MaxFrequency(void) const
 	?DecimalCount@CRadioRegion@@QBEHXZ @ 5 NONAME ; int CRadioRegion::DecimalCount(void) const
 	??1CRadioSettings@@UAE@XZ @ 6 NONAME ; CRadioSettings::~CRadioSettings(void)
-	?NewL@CRadioSettings@@SAPAV1@XZ @ 7 NONAME ; class CRadioSettings * CRadioSettings::NewL(void)
-	?StepSize@CRadioRegion@@QBEKXZ @ 8 NONAME ; unsigned long CRadioRegion::StepSize(void) const
-	?CountryCodes@CRadioRegion@@QAEABV?$RPointerArray@VHBufC16@@@@XZ @ 9 NONAME ; class RPointerArray<class HBufC16> const & CRadioRegion::CountryCodes(void)
-	?MinFrequency@CRadioRegion@@QBEKXZ @ 10 NONAME ; unsigned long CRadioRegion::MinFrequency(void) const
+	?MinFrequency@CRadioRegion@@QBEKXZ @ 7 NONAME ; unsigned long CRadioRegion::MinFrequency(void) const
+	?CountryCodes@CRadioRegion@@QAEABV?$RPointerArray@VHBufC16@@@@XZ @ 8 NONAME ; class RPointerArray<class HBufC16> const & CRadioRegion::CountryCodes(void)
 
Binary file radioengine/settings/cenrep/2002FF52.txt has changed
Binary file radioengine/settings/cenrep/radio.confml has changed
--- a/radioengine/settings/data/fmradioenginesettings.rss	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/data/fmradioenginesettings.rss	Tue Jul 06 14:16:27 2010 +0300
@@ -21,8 +21,6 @@
 // System includes
 #include <uikon.rh>
 
-#include "radiosettings.rh"
-#include "radiopreset.hrh"
 #include "radioengine.hrh"
 
 // Resource definitions
@@ -34,33 +32,6 @@
 
 RESOURCE RSS_SIGNATURE { }
 
-// Non-operator customisable settings
-
-// ---------------------------------------------------------
-//    r_qrad_empty_name_preset
-//    TBUF16 stores the string name for the empty "Empty"
-// ---------------------------------------------------------
-//
-RESOURCE TBUF256 r_qrad_empty_name_preset
-{
-    buf = qtn_radio_ch_empty;
-}
-
-// ---------------------------------------------------------
-//    r_qrad_predefined_presets
-//    Predefined presets list. No need to include empty presets -- they'll get autogenerated!
-// ---------------------------------------------------------
-//
-// The following array must coexist as the VERY LAST Resource IN THIS FILE, to maintain BC!
-RESOURCE RADIOPRESET r_qrad_empty_presets
-{
-    name = "";
-    freq_kHz = 0;
-    serviceid = "";
-    radio_preset_type = ERadioPresetItemEmpty;
-    radio_preset_location = "";
-}
-
 // ---------------------------------------------------------
 //
 // ---------------------------------------------------------
@@ -68,13 +39,11 @@
 STRUCT RADIO_REGION
     {
     WORD id;
-    WORD stepsize;
+    LONG stepsize;
     LONG minfrequency;
     LONG maxfrequency;
     WORD decimalcount;
     LTEXT countrycodes[] = {""};
-    LTEXT regionname;
-    LTEXT regionsettingname;
     }
 
 // ---------------------------------------------------------
@@ -120,8 +89,6 @@
         "440",
         "441"
         };
-    regionname = qtn_vr_reg_japan;
-    regionsettingname = qtn_vr_set_reg_japan;
     }
 
 // ---------------------------------------------------------
@@ -180,8 +147,6 @@
         "746",  // Suriname
         "748"   // Uruguay
         };
-    regionname = qtn_vr_reg_america;
-    regionsettingname = qtn_vr_set_reg_america;
     }
 
 // ---------------------------------------------------------
@@ -192,21 +157,8 @@
 RESOURCE RADIO_REGION r_qrad_region_default
     {
     id = ERadioRegionDefault;
-    stepsize = 50;
+    stepsize = 100;
     minfrequency = 87500;
     maxfrequency = 108000;
     decimalcount = 2;
-    regionname = qtn_vr_reg_other;
-    regionsettingname = qtn_vr_set_reg_other;
     }
-
-// ---------------------------------------------------------
-//    r_qtn_qrad_folder_radio_presets
-//    TBUF32 stores the string for presets folder name
-//    String lenght must be 30 characters
-// ---------------------------------------------------------
-//
-RESOURCE TBUF32 r_qtn_qrad_folder_radio_presets
-    {
-    buf = qtn_vr_folder_radio_presets;
-    }
--- a/radioengine/settings/eabi/fmradioenginesettingsu.def	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/eabi/fmradioenginesettingsu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -7,8 +7,6 @@
 	_ZNK12CRadioRegion12DecimalCountEv @ 6 NONAME
 	_ZNK12CRadioRegion12MaxFrequencyEv @ 7 NONAME
 	_ZNK12CRadioRegion12MinFrequencyEv @ 8 NONAME
-	_ZNK12CRadioRegion15SettingItemNameEv @ 9 NONAME
-	_ZNK12CRadioRegion2IdEv @ 10 NONAME
-	_ZNK12CRadioRegion4NameEv @ 11 NONAME
-	_ZNK12CRadioRegion8StepSizeEv @ 12 NONAME
+	_ZNK12CRadioRegion2IdEv @ 9 NONAME
+	_ZNK12CRadioRegion8StepSizeEv @ 10 NONAME
 
--- a/radioengine/settings/group/radioenginesettings.mmp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/group/radioenginesettings.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -32,7 +32,7 @@
 CAPABILITY              CAP_GENERAL_DLL
 VENDORID                VID_DEFAULT
 PAGED
-//LANGUAGE_IDS
+SMPSAFE
 LANG SC
 
 SOURCEPATH              ../data
--- a/radioengine/settings/inc/radiopreset.hrh	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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 RADIOPRESET_HRH
-#define RADIOPRESET_HRH
-
-#define KVRDefaultPresetFolder 0
-
-/**
- * Preset types.
- */
-enum TRadioPresetType
-    {
-    ERadioPresetItemEmpty = 0,                       /**< The preset item is empty, i.e. not initialized yet. */
-    ERadioPresetItemRadioContentEnabled = 1,         /**< The preset item has radio frequency. */
-    ERadioPresetItemVisualRadioContentEnabled = 2    /**< The preset item has visual content enabled. */
-    };
-
-#endif // RADIOPRESET_HRH
--- a/radioengine/settings/inc/radiosettings.rh	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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 RADIOSETTINGS_RH
-#define RADIOSETTINGS_RH
-
-// System includes
-#include <uikon.rh>
-
-STRUCT RADIOPRESET
-{
-    LTEXT name;                     // Name of a Radio Station preset
-    LONG  freq_kHz;                 // Frequency of the radio, in kHz. 108.0 MHz == 108000 kHz
-    LTEXT serviceid;                // Visual Radio Service Id for Content server
-    BYTE  radio_preset_type;        // Indicates whether this is a visual radio -enabled preset. 0 indicates false, otherwise true.
-    LTEXT radio_preset_location;    // Location of the preset
-}
-
-#endif // RADIOSETTINGS_RH
--- a/radioengine/settings/src/cradioenginesettings.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/src/cradioenginesettings.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -607,13 +607,14 @@
     GetRepositoryValue( KRadioCRDefaultMinVolumeLevel, temp, temp );
     iDefaultMinVolume = temp;
 
-    temp = ERadioRegionNone;
+    temp = ERadioRegionDefault;
     GetRepositoryValue( KRadioCRDefaultRegion, temp, temp );
     iDefaultRegion = static_cast<TRadioRegion>( temp );
 
-    temp = ERadioRegionNone;
+    temp = iDefaultRegion;
     GetRepositoryValue( KRadioCRCurrentRegion, temp, temp );
     iRegionId = static_cast<TRadioRegion>( temp );
+    UpdateCurrentRegionIdx( iRegionId );
 
     temp = MinFrequency();
     GetRepositoryValue( KRadioCRTunedFrequency, temp, temp );
@@ -755,11 +756,11 @@
     if ( ERadioRegionJapan == aRegionId )
         {
         TInt err = iRepository->Get( KRadioCRRegionAllowedJapan, regionAllowed );
-        if ( KErrNone != err )
+        if ( err != KErrNone )
             {
             // In case the key is not found or otherwise unsuccessfully read,
-            // Japan region is not allowed by default.
-            regionAllowed = EFalse;
+            // Japan region is allowed by default.
+            regionAllowed = ETrue;
             }
         }
 
--- a/radioengine/settings/src/cradioregion.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/settings/src/cradioregion.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -44,7 +44,7 @@
     {
     LEVEL3( LOG_METHOD_AUTO );
     iId = static_cast<TRadioRegion>( aRr.ReadUint16());
-    iStepSize = static_cast<TUint16>( aRr.ReadUint16() ) * KRadioThousand;
+    iStepSize =  aRr.ReadUint32() * KRadioThousand;
     iMinFreq = aRr.ReadUint32() * KRadioThousand;
     iMaxFreq = aRr.ReadUint32() * KRadioThousand;
     iDecimalCount = aRr.ReadInt16();
@@ -56,9 +56,6 @@
         code.Set( aRr.ReadTPtrC());
         User::LeaveIfError( iCountryCodes.Append( code.AllocL()));
         }
-
-    iName = aRr.ReadHBufC16L();
-    iSettingName = aRr.ReadHBufC16L();
     }
 
 // ---------------------------------------------------------------------------
@@ -87,8 +84,6 @@
     LEVEL3( LOG_METHOD_AUTO );
     iCountryCodes.ResetAndDestroy();
     iCountryCodes.Close();
-    delete iName;
-    delete iSettingName;
     }
 
 // ---------------------------------------------------------
@@ -150,23 +145,3 @@
     LEVEL3( LOG_METHOD_AUTO );
     return iCountryCodes;
     }
-
-// ---------------------------------------------------------
-// Get the name of region
-// ---------------------------------------------------------
-//
-EXPORT_C const TDesC16& CRadioRegion::Name() const
-    {
-    LEVEL3( LOG_METHOD_AUTO );
-    return *iName;
-    }
-
-// ---------------------------------------------------------
-// Get the name of region
-// ---------------------------------------------------------
-//
-EXPORT_C const TDesC16& CRadioRegion::SettingItemName() const
-    {
-    LEVEL3( LOG_METHOD_AUTO );
-    return *iSettingName;
-    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/stub/bwins/fmradioenginesettings_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,10 @@
+EXPORTS
+	?Id@CRadioRegion@@QBE?AW4TRadioRegion@@XZ @ 1 NONAME ; enum TRadioRegion CRadioRegion::Id(void) const
+	?NewL@CRadioSettings@@SAPAV1@XZ @ 2 NONAME ; class CRadioSettings * CRadioSettings::NewL(void)
+	?StepSize@CRadioRegion@@QBEKXZ @ 3 NONAME ; unsigned long CRadioRegion::StepSize(void) const
+	?MaxFrequency@CRadioRegion@@QBEKXZ @ 4 NONAME ; unsigned long CRadioRegion::MaxFrequency(void) const
+	?DecimalCount@CRadioRegion@@QBEHXZ @ 5 NONAME ; int CRadioRegion::DecimalCount(void) const
+	??1CRadioSettings@@UAE@XZ @ 6 NONAME ; CRadioSettings::~CRadioSettings(void)
+	?MinFrequency@CRadioRegion@@QBEKXZ @ 7 NONAME ; unsigned long CRadioRegion::MinFrequency(void) const
+	?CountryCodes@CRadioRegion@@QAEABV?$RPointerArray@VHBufC16@@@@XZ @ 8 NONAME ; class RPointerArray<class HBufC16> const & CRadioRegion::CountryCodes(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/stub/eabi/fmradioenginesettings_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	_ZN12CRadioRegion12CountryCodesEv @ 1 NONAME
+	_ZN14CRadioSettings4NewLEv @ 2 NONAME
+	_ZN14CRadioSettingsD0Ev @ 3 NONAME
+	_ZN14CRadioSettingsD1Ev @ 4 NONAME
+	_ZN14CRadioSettingsD2Ev @ 5 NONAME
+	_ZNK12CRadioRegion12DecimalCountEv @ 6 NONAME
+	_ZNK12CRadioRegion12MaxFrequencyEv @ 7 NONAME
+	_ZNK12CRadioRegion12MinFrequencyEv @ 8 NONAME
+	_ZNK12CRadioRegion2IdEv @ 9 NONAME
+	_ZNK12CRadioRegion8StepSizeEv @ 10 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/stub/group/bld.inf	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 "../../../group/buildflags.hrh"
+
+#ifdef COMPILE_IN_WK48_ENV
+#   include <domain/osextensions/platform_paths.hrh>
+#else
+#   include <platform_paths.hrh>
+#endif // COMPILE_IN_WK48_ENV
+
+PRJ_PLATFORMS
+WINSCW ARMV5
+
+PRJ_EXPORTS
+//../../include/vrinternalpskeys.h internal/vrinternalpskeys.h
+//../../include/vrinternalcrkeys.h internal/vrinternalcrkeys.h
+
+//../../sis/visualradiostub.sis /epoc32/data/z/system/install/visualradio.sis
+../../group/backup_registration.xml /epoc32/data/z/private/101ff976/backup_registration.xml
+
+../../cenrep/2002FF52.txt  /epoc32/data/z/private/10202be9/2002FF52.txt
+../../cenrep/2002FF52.txt  /epoc32/RELEASE/winscw/UDEB/Z/private/10202be9/2002FF52.txt
+../../cenrep/2002FF52.txt  /epoc32/RELEASE/winscw/UREL/Z/private/10202be9/2002FF52.txt
+
+PRJ_MMPFILES
+radioenginesettings_stub.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/stub/group/radioenginesettings_stub.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies 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 "../../../group/buildflags.hrh"
+
+#ifdef COMPILE_IN_WK48_ENV
+#   include <domain/osextensions/platform_paths.hrh>
+#else
+#   include <platform_paths.hrh>
+#endif // COMPILE_IN_WK48_ENV
+
+#include <data_caging_paths.hrh>
+
+#include                <data_caging_paths.hrh>
+
+TARGET                  fmradioenginesettings_stub.dll
+TARGETTYPE              DLL
+UID                     0x1000008D 0x01000012
+VERSION                 10.0
+
+CAPABILITY              CAP_GENERAL_DLL
+VENDORID                VID_DEFAULT
+PAGED
+SMPSAFE
+LANG SC
+
+SOURCEPATH              ../../data
+START RESOURCE          fmradioenginesettings.rss
+HEADER
+TARGETPATH              RESOURCE_FILES_DIR
+END // RESOURCE
+
+USERINCLUDE             ../../api
+USERINCLUDE             ../../inc
+USERINCLUDE             ../../../utils/api
+USERINCLUDE             ../../../utils/inc
+USERINCLUDE             /sf/mw/mmmw/mmserv/radioutility/radio_utility/stub/src
+USERINCLUDE             /sf/mw/mmmw/mmserv/radioutility/radio_utility/src
+USERINCLUDE             /sf/mw/mmmw/mmserv/radioutility/inc
+USERINCLUDE             /sf/mw/mmmw/mmserv/inc
+USERINCLUDE             /sf/mw/mmmw/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE           /epoc32/include/internal
+
+SOURCEPATH              ../../src
+SOURCE                  cradioregion.cpp
+SOURCE                  cradiosettings.cpp
+SOURCE                  cradiosettingsimp.cpp
+SOURCE                  cradioenginesettings.cpp
+SOURCE                  cradioapplicationsettings.cpp
+
+LIBRARY                 fmradioengineutils_stub.lib
+LIBRARY                 bafl.lib
+LIBRARY                 commonengine.lib
+LIBRARY                 cone.lib
+LIBRARY                 efsrv.lib
+LIBRARY                 estor.lib
+LIBRARY                 euser.lib
+LIBRARY                 flogger.lib 
+LIBRARY                 RadioSession_Stub.lib // SRadioStubManager functions
+LIBRARY                 centralrepository.lib
+MACRO STUB_CONSTELLATION
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/bwins/SettingsTestModuleu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &)
+
Binary file radioengine/settings/tsrc/cenrep/2002FF52.txt has changed
Binary file radioengine/settings/tsrc/cenrep/2002FF52_orig.txt has changed
Binary file radioengine/settings/tsrc/cenrep/radio.confml has changed
Binary file radioengine/settings/tsrc/cenrep/radio_2002FF52.crml has changed
Binary file radioengine/settings/tsrc/conf/2002FF52.txt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/conf/SettingsTestModule.cfg	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,340 @@
+[Define]
+ChannelFrequencyNull 0
+ChannelFrequency0 104000000
+ChannelFrequency1 97500000
+ChannelFrequency2 91300000
+ChannelFrequency3 11300000
+CBelowMinimumFrequency 34500000
+AboveMaximumFrequency 23400000
+
+Operator_A_MusicStoreName "Operator_A_MusicStore"
+Operator_A_MusicStoreUrl   "Operator.A.MusicStore.fi"
+NetworkId_0                 "Network_Id_1"
+CountryCode_0               "12345"
+
+ERadioHeadset               0
+ERadioSpeaker               1
+ERadioStereo                0
+ERadioMono                  1
+
+KErrNotFound				-1
+KErrGeneral                 -2
+KErrArgument				-6
+KErrDiskFull				-26
+KErrBadTestParameter		-1000
+KErrEventPending			-2000
+KErrCallbackErrorCode		-2001
+KErrUnexpectedValue			-2002
+KExpectedFrequencyChange	-2003
+KErrTimeoutController		-2007
+[Enddefine]
+
+[Test]
+title Example
+create SettingsTestModule Settings
+Settings Example pa ra me ters
+delete Settings
+[Endtest] 
+
+// Settings API functions' tests
+
+[Test]
+title 1.1 Create Settings
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.2 OOM for creation of Settings
+create SettingsTestModule Settings
+oomignorefailure ON
+loop 106
+oomheapfailnext LOOP_COUNTER
+Settings CreateSettingsL Preset
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.2a Read configurable keys
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings ReadConfigurableKeysL
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.3 First time Start performed or not
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings tstResetStartCount
+Settings IsFirstTimeStart 1
+Settings SetFirstTimeStartPerformed 1
+Settings IsFirstTimeStart 0
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.4 Set UI Flags
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetUiFlags 123456789
+Settings UiFlags 123456789
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.5 Set Headset Volume
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetHeadsetVolume 5
+Settings HeadsetVolume 5
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.6 Set Speaker Volume
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetSpeakerVolume 6
+Settings SpeakerVolume 6
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.7 Set Volume
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetVolume 7
+Settings Volume 7
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.8 Output Mode
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetOutputMode ERadioStereo
+Settings OutputMode ERadioStereo
+Settings SetOutputMode ERadioMono
+Settings OutputMode ERadioMono
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.9 Audio Route
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetAudioRoute ERadioHeadset
+Settings AudioRoute ERadioHeadset
+Settings SetAudioRoute ERadioHeadset
+Settings AudioRoute ERadioHeadset
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.10 Headset Mute Status
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetHeadsetVolMuted 0
+Settings IsHeadsetVolMuted 0
+Settings SetHeadsetVolMuted 1
+Settings IsHeadsetVolMuted 1
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.11 Speaker Mute Status
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetSpeakerVolMuted 0
+Settings IsSpeakerVolMuted 0
+Settings SetSpeakerVolMuted 1
+Settings IsSpeakerVolMuted 1
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.12 Mute Status
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetVolMuted 0
+Settings IsVolMuted 0
+Settings SetVolMuted 1
+Settings IsVolMuted 1
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.13 Power On Status
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetPowerOn 0
+Settings IsPowerOn 0
+Settings SetPowerOn 1
+Settings IsPowerOn 1
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.14 Tuned Frequency
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetTunedFrequency ChannelFrequency1
+Settings TunedFrequency ChannelFrequency1
+Settings SetTunedFrequency ChannelFrequency3
+Settings TunedFrequency ChannelFrequency3
+Settings SetTunedFrequency BelowMinimumFrequency
+Settings SetTunedFrequency AboveMaximumFrequency
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.15 Default Minimum Volume Level
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings DefaultMinVolumeLevel
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.16 Regions' Count
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings CountRegions
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.17 Region
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings Region
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.18 Region's Identification
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetRegionId 2
+Settings RegionId 2
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.19 Frequency Step Size
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings FrequencyStepSize
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.20  Minimum Frequency
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings MinFrequency
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.21 Maximum Frequency
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings MaxFrequency
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.22 Decimal Count
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings DecimalCount
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.23 Default Region
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings DefaultRegion
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.24 Network Id
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetNetworkId NetworkId_0
+Settings NetworkId NetworkId_0
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.25 Country Code
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetCountryCode CountryCode_0
+Settings CountryCode CountryCode_0
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.26 Is Region Allowed
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings IsRegionAllowed
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.27 Resolve Drive 
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings ResolveDriveL
+Settings DestroySettingsL
+delete Settings
+[Endtest]
+
+[Test]
+title 1.28 Change of Region  
+create SettingsTestModule Settings
+Settings CreateSettingsL Preset
+Settings SetRegionId 0
+pause 10000
+Settings RegionId 0
+Settings DestroySettingsL
+delete Settings
+[Endtest]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/conf/atsconf.txt	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,34 @@
+;Run \vado\videoplayer\tsrc\testing\tools\genATSdrop.pl from 
+;the tsrc folder to create ATS3 drop.
+[DROP]
+NAME Radio - engine - settings
+DEVICE Vasco
+LONGREBOOT
+FLASH W:\output\release_flash_images\vasco\rnd\core\RM-596_2010.22_79.01.2010.22_rnd.core.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\langpack\langpack_01\RM-596_2010.22_01.01_Euro_1_79.01.2010.22_rnd.rofs2.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\customer\custvariant_01_tools\RM-596_2010.22_01.01_tools_79.01.2010.22_rnd.rofs3.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\uda\RM-596_2010.22_79.01.2010.22_rnd.udaerase.fpsx
+PKG group\SettingsTestModule.pkg
+BOOT
+INI init\TestFramework.ini 600
+EMAIL jouni.vallo@nokia.com
+RUN
+[ENDDROP]
+
+;
+; ats3tools synergyyn vai verkkolevylle ja manuaalisesti kopioida sieltä?
+; 
+; TODO
+; oikeuksien haku Tampereen ATS3
+; imagen luonti, imaker vasco_ui default
+; Testframework.ini täytyy olla init hakemistossa
+; cenrep täytyy HW:sta, .cre tiedosto ja lisätä custom/prerun_custom.xml tiedostoon 
+; 
+; STEPIT:
+; säädä conf/atsconf.txt asetukset kohdalleen
+; komentorivillä tsrc hakemistoon ja aja:
+; perl \ats3tools\genATSdrop.pl -f conf\atsconf.txt -u käyttäjä -p salasana
+; 
+;
+;
+;
Binary file radioengine/settings/tsrc/conf/radio.confml has changed
Binary file radioengine/settings/tsrc/conf/radio_2002FF52.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/custom/postrun_custom.xml	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,32 @@
+<step name="Fetch Test module Report" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\*"/>
+       </params>
+</step>
+<step name="Fetch TestScripter logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\TestScripter\*"/>
+       </params>
+</step>
+<step name="Fetch Testengine logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\Testengine\*"/>
+       </params>
+</step>
+<step name="Fetch Testserver logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\Testserver\*"/>
+       </params>
+</step>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/custom/prerun_custom.xml	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,34 @@
+<step name="Create log directory for testmodule" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework"/>
+    	</params>
+</step>
+<step name="Create directory for TestScripter logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\TestScripter"/>
+    	</params>
+</step>
+<step name="Create directory for Testengine logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\Testengine"/>
+    	</params>
+</step>
+<step name="Create directory for Testserver logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\Testserver"/>
+    	</params>
+</step>
+<!---
+<step name="Install IAP file" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>install</command>
+       <reboot target-alias="*" when="after" />
+       <params>
+       <param src="cccccc00.cre"/>
+       <param dst="c:\private\10202be9\persists\cccccc00.cre"/>
+       </params>
+</step>
+-->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/eabi/SettingsTestModuleu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/Bld.inf	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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>
+
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// defaults to WINS MARM so you can ignore this if you just build these
+	
+	DEFAULT
+
+PRJ_TESTEXPORTS
+// NOTE: If using ARS requirements all export operations should be done under this.
+// 'abld test export'
+
+PRJ_EXPORTS
+// Specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in /epoc32/include
+// Example: 
+/*
+/agnmodel/inc/AGMCOMON.H
+*/
+../rom/settingstestmodule.iby             CORE_APP_LAYER_IBY_EXPORT_PATH(settingstestmodule.iby)
+
+PRJ_TESTMMPFILES
+
+	SettingsTestModule.mmp
+
+PRJ_MMPFILES
+
+	SettingsTestModule_nrm.mmp
+
+// Specify the .mmp files required for building the important component
+// releasables.
+//
+// Specify "tidy" if the component you need to build doesn't need to be
+// released. Specify "ignore" if the MMP file exists but should be
+// ignored.
+// Example:
+/*
+/agnmodel/group/agnmodel.mmp
+#if defined(MARM)
+/agnmodel/group/agsvexe.mmp
+#endif
+*/
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/RestoreOrigCenrep.cmd	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,9 @@
+@echo Original environment restoration by settingstestmodule...
+del \epoc32\winscw\c\TestFramework\SettingsTestModule.cfg
+del \epoc32\wins\c\TestFramework\TestFramework.ini
+del \epoc32\winscw\c\TestFramework\TestFramework.ini
+copy ..\cenrep\2002FF52.txt  \epoc32\data\z\private\10202be9\2002FF52.txt
+copy ..\cenrep\2002FF52.txt  \epoc32\RELEASE\winscw\UDEB\Z\private\10202be9\2002FF52.txt
+copy ..\cenrep\2002FF52.txt  \epoc32\RELEASE\winscw\UREL\Z\private\10202be9\2002FF52.txt
+del \epoc32\winscw\c\private\10202BE9\persists\2002FF52.cre
+@echo Original environment restoration by settingstestmodule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/SettingsTestModule.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,84 @@
+/*TYPE TESTCLASS*/
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          SettingsTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         SettingsTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../api
+USERINCLUDE     ../../../utils/api
+USERINCLUDE     ../../../utils/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE           /epoc32/include/internal
+
+SOURCEPATH      ../src
+
+SOURCE          SettingsTestModule.cpp
+SOURCE          SettingsTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY			fmradioenginesettings.lib
+LIBRARY			fmradioengineutils.lib
+LIBRARY         centralrepository.lib
+
+LANG            SC
+SMPSAFE
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/SettingsTestModule.pkg	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,62 @@
+;
+; 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:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\SettingsTestModule.dll"   -   "!:\Sys\Bin\SettingsTestModule.dll"
+"conf\SettingsTestModule.cfg"   -   "c:\testframework\SettingsTestModule.cfg"
+
+  
+; Embedded SIS 
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/SettingsTestModule_DoxyFile.txt	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,239 @@
+#
+# 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:
+#
+#
+
+# Doxyfile 1.4.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = SettingsTestModule
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = C:\Symbian\Carbide\workspace\SettingsTestModule\
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = YES
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = C:\Symbian\Carbide\workspace\SettingsTestModule\
+FILE_PATTERNS          = *.h \
+                         *.rh \
+                         *.hrh
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = NO
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = YES
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = Doc
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = NONSHARABLE_CLASS
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/SettingsTestModule_nrm.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,84 @@
+/*TYPE TESTCLASS*/
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          SettingsTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         SettingsTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../api
+USERINCLUDE     ../../../utils/api
+USERINCLUDE     ../../../utils/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE           /epoc32/include/internal
+
+SOURCEPATH      ../src
+
+SOURCE          SettingsTestModule.cpp
+SOURCE          SettingsTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         euser.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY         fmradioenginesettings.lib
+LIBRARY         fmradioengineutils.lib
+LIBRARY         centralrepository.lib
+
+LANG            SC
+SMPSAFE
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/group/TestEnvInit.cmd	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,12 @@
+@echo Initializing test environment for settingstestmodule...
+copy ..\conf\SettingsTestModule.cfg \epoc32\wins\c\TestFramework\SettingsTestModule.cfg
+copy ..\conf\SettingsTestModule.cfg \epoc32\winscw\c\TestFramework\SettingsTestModule.cfg
+copy ..\conf\SettingsTestModule.cfg \epoc32\data\z\system\data\SettingsTestModule.cfg
+copy ..\init\TestFramework.ini \epoc32\wins\c\TestFramework\TestFramework.ini
+copy ..\init\TestFramework.ini \epoc32\winscw\c\TestFramework\TestFramework.ini
+copy ..\init\TestFramework.ini \epoc32\data\z\system\data\TestFramework.ini
+copy ..\conf\2002FF52.txt \epoc32\data\z\private\10202be9\2002FF52.txt
+copy ..\conf\2002FF52.txt \epoc32\release\winscw\udeb\z\private\10202be9\2002FF52.txt
+copy ..\conf\2002FF52.txt \epoc32\release\winscw\urel\z\private\10202be9\2002FF52.txt
+del \epoc32\winscw\c\private\10202be9\persists\2002FF52.cre
+@echo Test environment initialization for settingstestmodule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/inc/SettingsTestModule.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,286 @@
+/*
+* 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: STIF testclass declaration
+*
+*/
+
+#ifndef SettingsTestMODULE_H
+#define SettingsTestMODULE_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+//INTERNAL INCLUDES
+#include "cradiosettings.h"
+#include "mradiosettingsobserver.h"
+#include "trace.h"
+
+
+// CONSTANTS
+const TInt KErrBadTestParameter= -1000;         // Error on configuration file
+
+const TInt KErrEventPending =-2000;             // Timeout and not callback 
+const TInt KErrCallbackErrorCode = -2001;       // Callback return error code
+const TInt KErrUnexpectedValue =-2002;          // Unexpected value at setting    
+const TInt KExpectedFrequencyChange = -2003;        // Is not finding more than one station
+const TInt KErrTimeoutController = -2007;       // Unexpected notification
+
+// MACROS
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 1
+#define TEST_CLASS_VERSION_MINOR 1
+#define TEST_CLASS_VERSION_BUILD 1
+
+// Logging path
+_LIT( KSettingsTestModuleLogPath, "\\logs\\testframework\\SettingsTestModule\\" ); 
+// Log file
+_LIT( KSettingsTestModuleLogFile, "SettingsTestModule.txt" ); 
+_LIT( KSettingsTestModuleLogFileWithTitle, "SettingsTestModule_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+//class CSettingsTestModule;
+
+// DATA TYPES
+//enum ?declaration
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+*  CSettingsTestModule test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CSettingsTestModule) : public CScriptBase, public MRadioSettingsObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CSettingsTestModule* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CSettingsTestModule();
+
+    public: // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+        // MRadioSettingsObserver
+        
+        /**
+        * From MRadioSettingsObserver.
+         * Notifies of the change in RDS alternate frequency setting
+         *
+         * @param aEnabled ETrue if AF search is enabled, otherwise EFalse
+         */
+        virtual void RdsAfSearchSettingChangedL( TBool aEnabled );
+
+        /**
+        * From MRadioSettingsObserver.
+         * Notifies of the change in region setting when it is changed
+         * outside of the particular radio settings instance
+         *
+         * @param aRegion The new region ID
+         */
+        virtual void RegionSettingChangedL( TInt aRegion );
+        
+    protected:  // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+        // Test case functions
+        TInt CreateSettingsL( CStifItemParser& aItem );
+        TInt DestroySettingsL( CStifItemParser& aItem );
+        
+        TInt IsRegionAllowed( CStifItemParser& aItem );
+        
+        TInt ResolveDriveL( CStifItemParser& aItem );
+        
+        // Application Settings functions
+        
+        TInt SetFirstTimeStartPerformed( CStifItemParser& aItem );
+        TInt IsFirstTimeStart( CStifItemParser& aItem );
+        
+        TInt SetUiFlags( CStifItemParser& aItem );
+        
+        TInt UiFlags( CStifItemParser& aItem );
+               
+        // Settings functions
+        
+        TInt HeadsetVolume ( CStifItemParser& aItem );
+        TInt SpeakerVolume ( CStifItemParser& aItem );
+        TInt Volume ( CStifItemParser& aItem );
+        TInt OutputMode ( CStifItemParser& aItem );
+        TInt AudioRoute ( CStifItemParser& aItem );
+        TInt IsHeadsetVolMuted ( CStifItemParser& aItem );
+        TInt IsSpeakerVolMuted ( CStifItemParser& aItem );
+        TInt IsVolMuted ( CStifItemParser& aItem );
+        TInt IsPowerOn ( CStifItemParser& aItem );
+        TInt TunedFrequency ( CStifItemParser& aItem );
+        TInt DefaultMinVolumeLevel ( CStifItemParser& aItem );
+        TInt CountRegions ( CStifItemParser& aItem );
+        TInt Region ( CStifItemParser& aItem );
+        TInt RegionId ( CStifItemParser& aItem );
+        TInt FrequencyStepSize ( CStifItemParser& aItem );
+        TInt MaxFrequency ( CStifItemParser& aItem );
+        TInt MinFrequency ( CStifItemParser& aItem );
+        TInt DecimalCount ( CStifItemParser& aItem );
+        TInt DefaultRegion ( CStifItemParser& aItem );
+        TInt NetworkId ( CStifItemParser& aItem );
+        TInt CountryCode ( CStifItemParser& aItem );
+        TInt OperatorMusicStoreURL ( CStifItemParser& aItem );
+        TInt OperatorMusicStoreName ( CStifItemParser& aItem );
+
+        // Setter functions
+        
+        TInt SetHeadsetVolume ( CStifItemParser& aItem );
+        TInt SetSpeakerVolume ( CStifItemParser& aItem );
+        TInt SetVolume ( CStifItemParser& aItem );
+        TInt SetOutputMode ( CStifItemParser& aItem );
+        TInt SetAudioRoute ( CStifItemParser& aItem );
+        TInt SetHeadsetVolMuted ( CStifItemParser& aItem );
+        TInt SetSpeakerVolMuted ( CStifItemParser& aItem );
+        TInt SetVolMuted ( CStifItemParser& aItem );
+        TInt SetPowerOn ( CStifItemParser& aItem );
+        TInt SetTunedFrequency ( CStifItemParser& aItem );
+        TInt SetRegionId ( CStifItemParser& aItem );
+        TInt SetNetworkId ( CStifItemParser& aItem );
+        TInt SetCountryCode ( CStifItemParser& aItem );
+        TInt SetOperatorMusicStoreURL ( CStifItemParser& aItem );
+        TInt SetOperatorMusicStoreName ( CStifItemParser& aItem );
+        
+        // Tst functions
+        TInt ReadConfigurableKeysL ( CStifItemParser& aItem );
+        TInt tstSetRegionIdL ( CStifItemParser& aItem );
+        TInt tstIsRegionSettingChangeNotified ( CStifItemParser& aItem );
+        TInt tstResetStartCount ( CStifItemParser& aItem );
+        
+    protected:  // Functions from base classes
+
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CSettingsTestModule( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+        //ADD NEW METHOD DEC HERE
+        //[TestMethods] - Do not remove
+
+    public:     // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    protected:  // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    private:    // Data
+        
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+        // Reserved pointer for future extension
+        //TAny* iReserved;
+
+        /** Radio Settings */
+        CRadioSettings* iSettings;
+        
+        TBool iRegionSettingChangeNotified;
+
+        
+    public:     // Friend classes
+        //?friend_class_declaration;
+    protected:  // Friend classes
+        //?friend_class_declaration;
+    private:    // Friend classes
+        //?friend_class_declaration;
+
+    };
+
+#endif      // SettingsTestMODULE_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/inc/trace.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,596 @@
+/*
+* 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 the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Trace macro definitions.
+*
+*/
+
+#ifndef TRACE_H
+#define TRACE_H
+
+#include <e32base.h> // TCleanupItem
+#include "traceconfiguration.hrh"
+
+#ifdef TRACE_INTO_FILE
+#include <flogger.h> // RFileLogger
+#else
+#include <e32debug.h> // RDebug
+#endif
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+//
+
+// NOTE!
+// Replace all COMPONENT_NAME occurnaces with your own component / module name.
+
+/**
+* Prefix trace macro to complete tracing with component name.
+* Returns TDesC which can be used directly with RDebug or RFileLogger.
+*/
+#define _PREFIX_TRACE( aMsg ) TPtrC( (const TText*)L"[Settings]: " L##aMsg )
+
+/**
+* Prefix error trace
+*/
+#define _PREFIX_ERROR( aMsg ) _PREFIX_TRACE( "[ERROR: %d]: " L##aMsg )
+
+/**
+* Prefix info trace.
+*/
+#define _PREFIX_INFO( aMsg ) _PREFIX_TRACE( "[INFO]: " L##aMsg )
+
+/**
+* Prefix macro for strings
+*/
+#define _PREFIX_CHAR( aMsg ) (const char*)"[Settings]: " ##aMsg
+
+/**
+* Define needed directories if TRACE_INTO_FILE macro in use
+*/
+#ifdef TRACE_INTO_FILE
+
+    _LIT( KDir, "settings" );
+    _LIT( KFile, "settings.txt" );
+    _LIT( KFullPath, "c:\\logs\\settings\\" );
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Error trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef ERROR_TRACE
+
+    /**
+    * Error trace definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+            
+    #else//TRACE_INTO_FILE not defined
+    
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5, aP6 );\
+                }\
+            }
+    
+    #endif//TRACE_INTO_FILE
+
+    #define ERROR_GEN( aMsg ) ERROR( KErrGeneral, aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 ) ERROR_1( KErrGeneral, aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 ) ERROR_2( KErrGeneral, aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 ) ERROR_3( KErrGeneral, aMsg, aP1, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 ) ERROR_4( KErrGeneral, aMsg, aP1, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 ) ERROR_5( KErrGeneral, aMsg, aP1, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 ) ERROR_6( KErrGeneral, aMsg, aP1, aP3, aP4, aP5, aP6 )
+
+#else//ERROR_TRACE not defined
+
+    #define ERROR( aErr, aMsg )
+    #define ERROR_1( aErr, aMsg, aP1 )
+    #define ERROR_2( aErr, aMsg, aP1, aP2 )
+    #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )
+    #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+    #define ERROR_GEN( aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//ERROR_TRACE
+
+//-----------------------------------------------------------------------------
+// TRAP and trace with error macro
+//-----------------------------------------------------------------------------
+//
+#define TRAP_ERROR( aErr, aFunction )\
+    {\
+    TRAP( aErr, aFunction );\
+    TPtrC8 file( ( TText8* )__FILE__ );\
+    ERROR_2( aErr, "Trapped leave in '%S' line %d", &file, __LINE__);\
+    }
+
+//-----------------------------------------------------------------------------
+// Info trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef INFO_TRACE
+
+    /**
+    * Info log message definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define INFO( aMsg )\
+            {\
+            RFileLogger::Write( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define INFO( aMsg )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+        
+#else//INFO_TRACE not defined
+
+    #define INFO( aMsg )
+    #define INFO_1( aMsg, aP1 )
+    #define INFO_2( aMsg, aP1, aP2 )
+    #define INFO_3( aMsg, aP1, aP2, aP3 )
+    #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//INFO_TRACE
+
+//-----------------------------------------------------------------------------
+// Trace current client thread name and process id
+//-----------------------------------------------------------------------------
+//
+#ifdef CLIENT_TRACE
+
+    #define CLIENT_PROCESS\
+        {\
+        CLIENT_PROCESS_PREFIX( "" );\
+        }        
+
+    #define CLIENT_PROCESS_PREFIX( aPrefix )\
+        {\
+        RProcess process;\
+        TPtrC name( process.Name() );\
+        TSecureId sid( process.SecureId() );\
+        TPtrC prefix( _S( aPrefix ) );\
+        if( prefix.Length() )\
+            {\
+            INFO_3( "%S: CLIENT - Name: [%S], Sid: [0x%x]", &prefix, &name, sid.iId );\
+            }\
+        else\
+            {\
+            INFO_2( "CLIENT - Name: [%S], Sid: [0x%x]", &name, sid.iId );\
+            }\
+        process.Close();\
+        }        
+
+    #define CLIENT_MESSAGE( aMsg )\
+        {\
+        CLIENT_MESSAGE_PREFIX( "", aMsg );\
+        }
+
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )\
+        {\
+        RThread thread;\
+        TInt err = aMsg.Client( thread );\
+        if( err == KErrNone )\
+            {\
+            RProcess process;\
+            err = thread.Process( process );\
+            if( err == KErrNone )\
+                {\
+                TPtrC threadName( thread.Name() );\
+                TUid processUid( process.SecureId() );\
+                TPtrC prefix( _S( aPrefix ) );\
+                if( prefix.Length() )\
+                    {\
+                    INFO_4( "%S: MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &prefix,\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                else\
+                    {\
+                    INFO_3( "MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                }\
+            process.Close();\
+            }\
+        thread.Close();\
+        }
+
+#else
+
+    #define CLIENT_PROCESS
+    #define CLIENT_PROCESS_PREFIX( aPrefix )
+    #define CLIENT_MESSAGE( aMsg )
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Function trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef FUNC_TRACE
+
+    /**
+    * Function logging definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            TPtrC8 trace( _S8( aMsg ) );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, trace, aP1 );\
+            }\
+    
+    #else//TRACE_INTO_FILE not defined
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            RDebug::Printf( aMsg, aP1 );\
+            }\
+    
+    #endif//TRACE_INTO_FILE
+        
+    /**
+    * Function trace helper class.
+    * 
+    * NOTE:
+    * LC -methods cannot be trapped. Therefore if LC -method leaves
+    * END trace is used instead of LEAVE trace.
+    * If you have an idea how to round this problem please tell.
+    */
+    _LIT8( KFuncNameTerminator, "(" );
+    _LIT8( KFuncLeavePatternL, "L" );
+    class TFuncLog
+        {
+        public:
+            static void Cleanup( TAny* aPtr )
+                {
+                TFuncLog* self = static_cast< TFuncLog* >( aPtr );
+                self->iLeft = ETrue;
+                FUNC( _PREFIX_CHAR("%S-LEAVE"), &self->iFunc ); // Leave detected
+                }
+            inline TFuncLog( const char* aFunc ) :
+                    iFunc( aFunc ? _S8( aFunc ) : _S8("") ),
+                    iLeft( EFalse ),
+                    iCleanupItem( Cleanup, this ),
+                    iCanLeave( EFalse )
+                {
+                TInt pos( iFunc.Find( KFuncNameTerminator ) );
+                if( pos != KErrNotFound )
+                    {
+                    iFunc.Set( iFunc.Left( pos ) );
+                    iCanLeave = !iFunc.Right( KFuncLeavePatternL().Length() ).Compare( KFuncLeavePatternL );
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::PushL( iCleanupItem ); // Ignore warnings
+                        }
+                    }
+                FUNC( _PREFIX_CHAR("%S-START"), &iFunc );
+                }
+
+            inline ~TFuncLog()
+                {
+                if ( !iLeft )
+                    {
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::Pop( this ); // Pop the cleanup item
+                        }
+                    FUNC( _PREFIX_CHAR("%S-END"), &iFunc ); // Normally finished
+                    }
+                }
+
+        private: // Data
+            TPtrC8 iFunc;
+            TBool iLeft;
+            TCleanupItem iCleanupItem;
+            TBool iCanLeave;
+        };
+    #define FUNC_LOG TFuncLog _fl( __PRETTY_FUNCTION__ );
+    
+#else//FUNC_TRACE not defined
+
+    #define FUNC_LOG
+
+#endif//FUNC_TRACE
+
+//-----------------------------------------------------------------------------
+// Timestamp trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef TIMESTAMP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend,\
+                _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                    &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RDebug::Print( _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//TIMESTAMP_TRACE not defined
+
+    #define TIMESTAMP( aCaption )
+
+#endif//TIMESTAMP_TRACE
+
+#ifdef HEAP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//HEAP_TRACE not defined
+
+    #define HEAP( aMsg )
+    #define HEAP_1( aMsg, aP1 )
+    #define HEAP_2( aMsg, aP1, aP2 )
+    #define HEAP_3( aMsg, aP1, aP2, aP3 )
+    #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )
+
+#endif//HEAP_TRACE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/inc/traceconfiguration.hrh	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (C) 2009 Nokia Corporation And/Or Its Subsidiary(-Ies).
+* All Rights Reserved.
+* This Component And The Accompanying Materials Are Made Available
+* Under The Terms Of The License "Symbian Foundation License V1.0"
+* Which Accompanies This Distribution, And Is Available
+* At The Url "Http://Www.Symbianfoundation.Org/Legal/Sfl-V10.Html".
+*
+* Initial Contributors:
+* Nokia Corporation - Initial Contribution.
+*
+* Contributors:
+*
+* Description:
+* Trace Macro Configurations.
+*
+*/
+
+#ifndef TRACECONFIGURATION_HRH
+#define TRACECONFIGURATION_HRH
+
+//-----------------------------------------------------------------------------
+// Trace definitions
+//-----------------------------------------------------------------------------
+//
+
+/**
+* Error trace enabled
+*/
+#ifdef _DEBUG
+    #define ERROR_TRACE
+#else
+    #undef ERROR_TRACE
+#endif
+
+/**
+* Info trace enabled
+*/
+#ifdef _DEBUG
+    #define INFO_TRACE
+#else
+    #undef INFO_TRACE
+#endif
+
+/**
+* Timestamp tracing on
+*/
+#ifdef _DEBUG
+    #define TIMESTAMP_TRACE
+#else
+    #undef TIMESTAMP_TRACE
+#endif
+
+/**
+* Tracing current client process and thread
+*/
+#ifdef _DEBUG
+    #define CLIENT_TRACE
+#else
+    #undef CLIENT_TRACE
+#endif
+
+/**
+* Function trace enabled
+*/
+#ifdef _DEBUG
+    #define FUNC_TRACE
+#else
+    #undef FUNC_TRACE
+#endif
+
+/**
+* Tracing into file enabled, default RDebug
+*/
+#undef TRACE_INTO_FILE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/init/TestFramework.ini	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,197 @@
+#
+# 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.
+#
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if 
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module. 
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment', 'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= c:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone	# Possible values are:
+						# 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+					  	# 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+					  	# 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+					  	# 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= XXXXXXXXX
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= c:\testframework\SettingsTestModule.cfg
+[End_Module]
+
+# Load testmoduleXXX, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleXXX used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleXXX used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\LOGS\Module\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number 
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' 
+#NOTE: TestEngine and TestServer logging settings cannot change here 
+
+#CreateLogDirectories= YES		# Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML			# Possible values: TXT or HTML
+#EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/rom/settingstestmodule.iby	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,13 @@
+
+#ifndef __SETTINGSTESTMODULE_IBY__
+#define __SETTINGSTESTMODULE_IBY__
+
+// Use standard macros
+#include <data_caging_paths_for_iby.hrh>
+
+
+file=ABI_DIR\BUILD_DIR\settingstestmodule.dll         SHARED_LIB_DIR\settingstestmodule.dll	PAGED
+
+#endif
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/src/SettingsTestModule.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* 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 file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include <SettingServerClient.h>
+#include "SettingsTestModule.h"
+#include "trace.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSettingTestModule::CPresetUtilityTestModule
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CSettingsTestModule::CSettingsTestModule( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CSettingsTestModule::ConstructL()
+    {
+    FUNC_LOG;
+    
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KSettingsTestModuleLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KSettingsTestModuleLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KSettingsTestModuleLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSettingsTestModule* CSettingsTestModule::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    FUNC_LOG;
+    CSettingsTestModule* self = new (ELeave) CSettingsTestModule( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+CSettingsTestModule::~CSettingsTestModule()
+    { 
+    FUNC_LOG;
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// CSettingsTestModule::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CSettingsTestModule::SendTestClassVersion()
+	{
+	FUNC_LOG;
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("SettingsTestModule.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+    FUNC_LOG;
+
+    return ( CScriptBase* ) CSettingsTestModule::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/tsrc/src/SettingsTestModuleBlocks.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,1203 @@
+/*
+* 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 file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <e32cmn.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <data_caging_path_literals.hrh>
+#include <centralrepository.h>
+
+#include "SettingsTestModule.h"
+#include "cradiosettings.h"
+#include "cradiosettingsimp.h"
+#include "mradiosettingssetter.h"
+#include "mradioapplicationsettings.h"
+#include "mradioenginesettings.h"
+#include "radiointernalcrkeys.h"
+#include "radioengineutils.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+//_LIT( KStifScriptEmptyString, "EMPTYSTRING" );
+//_LIT( KEmptyString, "" );
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CSettingsTestModule::Delete() 
+    {
+    FUNC_LOG;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsTestModule::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    FUNC_LOG;
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", CSettingsTestModule::ExampleL ),
+        // [test cases entries] - Do not remove
+        ENTRY( "CreateSettingsL", CSettingsTestModule::CreateSettingsL ),
+        ENTRY( "DestroySettingsL", CSettingsTestModule::DestroySettingsL ),
+        ENTRY( "IsRegionAllowed", CSettingsTestModule::IsRegionAllowed ),
+        ENTRY( "ResolveDriveL", CSettingsTestModule::ResolveDriveL ),
+        ENTRY( "SetFirstTimeStartPerformed", CSettingsTestModule::SetFirstTimeStartPerformed ),
+        ENTRY( "IsFirstTimeStart", CSettingsTestModule::IsFirstTimeStart ),
+        ENTRY( "SetUiFlags", CSettingsTestModule::SetUiFlags ),
+        ENTRY( "UiFlags", CSettingsTestModule::UiFlags ),
+        ENTRY( "HeadsetVolume", CSettingsTestModule::HeadsetVolume ),
+        ENTRY( "SpeakerVolume", CSettingsTestModule::SpeakerVolume ),
+        ENTRY( "Volume", CSettingsTestModule::Volume ),
+        ENTRY( "OutputMode", CSettingsTestModule::OutputMode ),
+        ENTRY( "AudioRoute", CSettingsTestModule::AudioRoute ),
+        ENTRY( "IsHeadsetVolMuted", CSettingsTestModule::IsHeadsetVolMuted ),
+        ENTRY( "IsSpeakerVolMuted", CSettingsTestModule::IsSpeakerVolMuted ),
+        ENTRY( "IsVolMuted", CSettingsTestModule::IsVolMuted ),
+        ENTRY( "IsPowerOn", CSettingsTestModule::IsPowerOn ),
+        ENTRY( "TunedFrequency", CSettingsTestModule::TunedFrequency ),
+        ENTRY( "DefaultMinVolumeLevel", CSettingsTestModule::DefaultMinVolumeLevel ),
+        ENTRY( "CountRegions", CSettingsTestModule::CountRegions ),
+        ENTRY( "Region", CSettingsTestModule::Region ),
+        ENTRY( "RegionId", CSettingsTestModule::RegionId ),
+        ENTRY( "FrequencyStepSize", CSettingsTestModule::FrequencyStepSize ),
+        ENTRY( "MaxFrequency", CSettingsTestModule::MaxFrequency ),
+        ENTRY( "MinFrequency", CSettingsTestModule::MinFrequency ),
+        ENTRY( "DecimalCount", CSettingsTestModule::DecimalCount ),
+        ENTRY( "DefaultRegion", CSettingsTestModule::DefaultRegion ),
+        ENTRY( "NetworkId", CSettingsTestModule::NetworkId ),
+        ENTRY( "CountryCode", CSettingsTestModule::CountryCode ),
+        ENTRY( "SetHeadsetVolume", CSettingsTestModule::SetHeadsetVolume ),
+        ENTRY( "SetSpeakerVolume", CSettingsTestModule::SetSpeakerVolume ),
+        ENTRY( "SetVolume", CSettingsTestModule::SetVolume ),
+        ENTRY( "SetOutputMode", CSettingsTestModule::SetOutputMode ),
+        ENTRY( "SetAudioRoute", CSettingsTestModule::SetAudioRoute ),
+        ENTRY( "SetHeadsetVolMuted", CSettingsTestModule::SetHeadsetVolMuted ),
+        ENTRY( "SetSpeakerVolMuted", CSettingsTestModule::SetSpeakerVolMuted ),
+        ENTRY( "SetVolMuted", CSettingsTestModule::SetVolMuted ),
+        ENTRY( "SetPowerOn", CSettingsTestModule::SetPowerOn ),
+        ENTRY( "SetTunedFrequency", CSettingsTestModule::SetTunedFrequency ),
+        ENTRY( "SetRegionId", CSettingsTestModule::SetRegionId ),
+        ENTRY( "SetCountryCode", CSettingsTestModule::SetCountryCode ),
+        ENTRY( "SetNetworkId", CSettingsTestModule::SetNetworkId ),
+        ENTRY( "tstSetRegionIdL", CSettingsTestModule::tstSetRegionIdL ),
+        ENTRY( "tstResetStartCount", CSettingsTestModule::tstResetStartCount ),
+        ENTRY( "ReadConfigurableKeysL", CSettingsTestModule::ReadConfigurableKeysL )
+        //ADD NEW ENTRY HERE
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsTestModule::ExampleL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+
+    // Print to UI
+    _LIT( KSettingsTestModule, "SettingsTestModule" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KSettingsTestModule, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KSettingsTestModule, 
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreateSettingsL
+//-----------------------------------------------------------------------------
+TInt CSettingsTestModule::CreateSettingsL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+    
+    TInt err = KErrNone;
+    if( !iSettings )
+        {
+        RadioEngineUtils::InitializeL();
+        TRAPD( err, iSettings = CRadioSettings::NewL() );
+        if ( KErrNone == err )
+            {
+            iSettings->RadioSetter().SetObserver( this );            
+            }
+        else
+            {
+            RadioEngineUtils::Release();
+            INFO_1( "CRadioSettings::NewL() failed err = %i", err )
+            User::Leave(err );
+            }
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+
+    return err;
+    }
+
+
+//-----------------------------------------------------------------------------
+// CSettingsTestModule::DestroyiSettingsL
+//-----------------------------------------------------------------------------
+TInt CSettingsTestModule::DestroySettingsL(
+    CStifItemParser& /*aItem*/ )
+    {
+    FUNC_LOG;
+
+    delete iSettings;    
+    iSettings = NULL;
+    RadioEngineUtils::Release();
+    return KErrNone;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::ResolveDriveL()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::ResolveDriveL( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;    
+    TFileName resourceFileName;
+    resourceFileName.Append( KRadioSettingsResourceFile );
+    iSettings->ResolveDriveL( resourceFileName, KDC_RESOURCE_FILES_DIR );
+    return KErrNone;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsRegionAllowed()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsRegionAllowed( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TRadioRegion regionId( iSettings->EngineSettings().RegionId() );
+    TUint currentAllowedStatus( iSettings->IsRegionAllowed( regionId ) );
+    TInt err( KErrNone);
+    INFO_1( "Failed: currentAllowedStatus=%i", currentAllowedStatus  );
+    return err;
+
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsFirstTimeStart()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsFirstTimeStart( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone);
+    TBool expectedFirstTimeStartStatus( EFalse );
+    // read parameters
+    if ( aItem.GetNextInt(expectedFirstTimeStartStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedFirstTimeStartStatus." );
+    }        
+    TBool firstTimeStartStatus( iSettings->ApplicationSettings().IsFirstTimeStart() );
+    if ( expectedFirstTimeStartStatus != firstTimeStartStatus )
+        {
+        INFO_2( "Failed: firstTimeStartStatus=%i, expectedFirstTimeStartStatus=%i.", firstTimeStartStatus, expectedFirstTimeStartStatus  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetFirstTimeStart()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetFirstTimeStartPerformed( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TBool firstTimeStartPerformed( EFalse );
+    // read parameters
+    if ( aItem.GetNextInt( firstTimeStartPerformed ) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: firstTimeStartPerformed." );
+    }
+    
+    iSettings->ApplicationSettings().SetFirstTimeStartPerformed( firstTimeStartPerformed );
+    return err;
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetUiFlags()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetUiFlags( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint uiFlags( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(uiFlags) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: uiFlags." );
+    }
+    err = iSettings->ApplicationSettings().SetUiFlags( uiFlags );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::UiFlags()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::UiFlags( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedUiFlags( 0 );
+    TUint currentUiFlags( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedUiFlags) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedUiFlags." );
+    }
+    currentUiFlags = iSettings->ApplicationSettings().UiFlags();
+    if ( expectedUiFlags != currentUiFlags )
+        {
+        INFO_2( "Failed: currentUiFlags=%i, expectedUiFlags=%i.", currentUiFlags, expectedUiFlags  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::HeadsetVolume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::HeadsetVolume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedVolume( 0 );
+    TUint currentVolume( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedVolume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedVolume." );
+    }
+    currentVolume = iSettings->EngineSettings().HeadsetVolume();
+    if ( expectedVolume != currentVolume )
+        {
+        INFO_2( "Failed: currentVolume=%i, expectedVolume=%i.", currentVolume, expectedVolume  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetHeadsetVolume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetHeadsetVolume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint volume( 0 );
+    TInt err( KErrNone );
+    // read parameters
+    if ( aItem.GetNextInt(volume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: volume." );
+    }
+    err = iSettings->RadioSetter().SetHeadsetVolume( volume );
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SpeakerVolume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SpeakerVolume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedVolume( 0 );
+    TUint currentVolume( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedVolume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedVolume." );
+    }
+    currentVolume = iSettings->EngineSettings().SpeakerVolume();
+    if ( expectedVolume != currentVolume )
+        {
+        INFO_2( "Failed: currentVolume=%i, expectedVolume=%i.", currentVolume, expectedVolume  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetSpeakerVolume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetSpeakerVolume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint volume( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(volume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: volume." );
+    }
+    err = iSettings->RadioSetter().SetSpeakerVolume( volume );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::Volume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::Volume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedVolume( 0 );
+    TUint currentVolume( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedVolume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedVolume." );
+    }
+    currentVolume = iSettings->EngineSettings().Volume();
+    if ( expectedVolume != currentVolume )
+        {
+        INFO_2( "Failed: currentVolume=%i, expectedVolume=%i.", currentVolume, expectedVolume  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetVolume()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetVolume( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint volume( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(volume) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: volume." );
+    }
+    err = iSettings->RadioSetter().SetVolume( volume );
+    return err;
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::OutputMode()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::OutputMode( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedMode( 0 );
+    TUint currentMode( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedMode) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedMode." );
+    }
+    currentMode = iSettings->EngineSettings().OutputMode();
+    if ( expectedMode != currentMode )
+        {
+        INFO_2( "Failed: currentMode=%i, expectedMode=%i.", currentMode, expectedMode  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetOutputMode()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetOutputMode( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint mode( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(mode) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: mode." );
+    }
+    err = iSettings->RadioSetter().SetOutputMode( mode );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::AudioRoute()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::AudioRoute( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint expectedRoute( 0 );
+    TUint currentRoute( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedRoute) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedRoute." );
+    }
+    currentRoute = iSettings->EngineSettings().AudioRoute();
+    if ( expectedRoute != currentRoute )
+        {
+        INFO_2( "Failed: currentMode=%i, expectedRoute=%i.", currentRoute, expectedRoute  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetAudioRoute()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetAudioRoute( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint route( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(route) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: route." );
+    }
+    err = iSettings->RadioSetter().SetAudioRoute( route );
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsHeadsetVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsHeadsetVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint expectedMuteStatus( 0 );
+    TUint currentMuteStatus( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedMuteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedMuteStatus." );
+    }
+    currentMuteStatus = iSettings->EngineSettings().IsHeadsetVolMuted();
+    if ( currentMuteStatus != expectedMuteStatus )
+        {
+        INFO_2( "Failed: currentMuteStatus=%i, expectedMuteStatus=%i.", currentMuteStatus, expectedMuteStatus  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetHeadsetVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetHeadsetVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint muteStatus( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(muteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: muteStatus." );
+    }
+    err = iSettings->RadioSetter().SetHeadsetVolMuted( muteStatus );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsSpeakerVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsSpeakerVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint expectedMuteStatus( 0 );
+    TUint currentMuteStatus( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedMuteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedMuteStatus." );
+    }
+    currentMuteStatus = iSettings->EngineSettings().IsSpeakerVolMuted();
+    if ( currentMuteStatus != expectedMuteStatus )
+        {
+        INFO_2( "Failed: currentMuteStatus=%i, expectedMuteStatus=%i.", currentMuteStatus, expectedMuteStatus  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetSpeakerVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetSpeakerVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint muteStatus( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(muteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: muteStatus." );
+    }
+    err = iSettings->RadioSetter().SetSpeakerVolMuted( muteStatus );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint expectedMuteStatus( 0 );
+    TUint currentMuteStatus( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedMuteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedMuteStatus." );
+    }
+    currentMuteStatus = iSettings->EngineSettings().IsVolMuted();
+    if ( currentMuteStatus != expectedMuteStatus )
+        {
+        INFO_2( "Failed: currentMuteStatus=%i, expectedMuteStatus=%i.", currentMuteStatus, expectedMuteStatus  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetVolMuted()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetVolMuted( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint muteStatus( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(muteStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: muteStatus." );
+    }
+    err = iSettings->RadioSetter().SetVolMuted( muteStatus );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::IsPowerOn()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::IsPowerOn( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint expectedPowerStatus( 0 );
+    TUint currentPowerStatus( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedPowerStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedPowerStatus." );
+    }
+    currentPowerStatus = iSettings->EngineSettings().IsPowerOn();
+    if ( currentPowerStatus != expectedPowerStatus )
+        {
+        INFO_2( "Failed: currentPowerStatus=%i, expectedPowerStatus=%i.", currentPowerStatus, expectedPowerStatus  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetPowerOn()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetPowerOn( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint powerStatus( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt(powerStatus) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: powerStatus." );
+    }
+    err = iSettings->RadioSetter().SetPowerOn( powerStatus );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::TunedFrequency()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::TunedFrequency( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint expectedTunedFrequency( 0 );
+    TUint currentTunedFrequency( 0 );
+    
+    // read parameters
+    if ( aItem.GetNextInt(expectedTunedFrequency) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedTunedFrequency." );
+    }
+    currentTunedFrequency = iSettings->EngineSettings().TunedFrequency();
+    if ( currentTunedFrequency != expectedTunedFrequency )
+        {
+        INFO_2( "Failed: currentTunedFrequency=%i, expectedTunedFrequency=%i.", currentTunedFrequency, expectedTunedFrequency  );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetTunedFrequency()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetTunedFrequency( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TUint tunedFrequency( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt( tunedFrequency ) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: tunedFrequency." );
+    }
+    err = iSettings->RadioSetter().SetTunedFrequency( tunedFrequency );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::DefaultMinVolumeLevel()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::DefaultMinVolumeLevel( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint currentDefaultMinVolumeLevel( iSettings->EngineSettings().DefaultMinVolumeLevel() );
+    INFO_1( "OK currentDefaultMinVolumeLevel=%i", currentDefaultMinVolumeLevel );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::CountRegions()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::CountRegions( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+     TUint currentRegionCount( iSettings->EngineSettings().CountRegions() );
+    INFO_1( "OK currentRegionCount=%i", currentRegionCount );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::Region()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::Region( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt regionIndex( iSettings->EngineSettings().RegionId() );
+    //CRadioRegion& radioRegion( iSettings->EngineSettings().RegionIndexForId( regionIndex ) );
+    // 17.5.2010: Region handling has to be reimplemented anyways, so don't make any detailed tets
+    // Above won't work because called function RegionIndexForId() is private one.
+    
+    return err;
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::RegionId()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::RegionId( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt expectedRegionIndex( 0 );
+    TInt currentRegionIndex( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt( expectedRegionIndex ) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedRegionIndex." );
+    }
+    currentRegionIndex = iSettings->EngineSettings().RegionId();
+    if ( currentRegionIndex != expectedRegionIndex )
+        {
+        INFO_2( "Failed: currentRegionIndex=%i, expectedRegionIndex=%i.", currentRegionIndex, expectedRegionIndex );
+        err = KErrUnexpectedValue;
+        }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetRegionId()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetRegionId( CStifItemParser& aItem )
+{
+    FUNC_LOG;    
+    TInt regionId( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt( regionId ) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: regionId." );
+    }
+    err = iSettings->RadioSetter().SetRegionId( regionId );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::FrequencyStepSize()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::FrequencyStepSize( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint32 currentFrequencyStepSize( iSettings->EngineSettings().FrequencyStepSize() );
+    INFO_1( "OK currentFrequencyStepSize=%i", currentFrequencyStepSize );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::MaxFrequency()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::MaxFrequency( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint32 currentMaxFrequency( iSettings->EngineSettings().MaxFrequency() );
+    INFO_1( "OK currentMaxFrequency=%i", currentMaxFrequency );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::MinFrequency()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::MinFrequency( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TUint32 currentMinFrequency( iSettings->EngineSettings().MinFrequency() );
+    INFO_1( "OK currentMinFrequency=%i", currentMinFrequency );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::DecimalCount()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::DecimalCount( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt currentDecimalCount( iSettings->EngineSettings().DecimalCount() );
+    INFO_1( "OK currentDecimalCount=%i", currentDecimalCount );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::DefaultRegion()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::DefaultRegion( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TRadioRegion defaultRegion( iSettings->EngineSettings().DefaultRegion() );
+    INFO_1( "OK defaultRegion=%i", defaultRegion );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::NetworkId()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::NetworkId( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TPtrC expectedNetworkId;
+    if ( aItem.GetNextString(expectedNetworkId) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedNetworkId." );
+    }
+    INFO_1( "expectedNetworkId=%S.", &expectedNetworkId  );
+    TPtrC actualNetworkId( iSettings->EngineSettings().NetworkId() );
+    if ( !actualNetworkId.Compare( expectedNetworkId ) )
+    {
+        INFO_2( "Failed: actualNetworkId=%S, expectedNetworkId=%S.", &actualNetworkId, &expectedNetworkId  );
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::CountryCode()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::CountryCode( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TPtrC expectedCountryCode;
+    if ( aItem.GetNextString(expectedCountryCode) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: expectedCountryCode." );
+    }
+    INFO_1( "expectedCountryCode=%S.", &expectedCountryCode  );
+    TPtrC actualCountryCode( iSettings->EngineSettings().CountryCode() );
+    if ( !actualCountryCode.Compare( expectedCountryCode ) )
+    {
+        INFO_2( "Failed: actualCountryCode=%S, expectedCountryCode=%S.", &actualCountryCode, &expectedCountryCode  );
+        err = KErrUnexpectedValue;
+    }
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetNetworkId()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetNetworkId( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TPtrC networkId;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(networkId) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: networkId." );
+    }
+    err = iSettings->RadioSetter().SetNetworkId( networkId );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::SetCountryCode()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::SetCountryCode( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TPtrC countryCode;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    if ( aItem.GetNextString(countryCode) )
+    {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: countryCode." );
+    }
+    err = iSettings->RadioSetter().SetCountryCode( countryCode );
+    return err;
+}
+
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::ReadConfigurableKeysL()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::ReadConfigurableKeysL( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt regionAllowed( EFalse );
+    CRepository* cr( CRepository::NewL(KRadioCRUid) );
+    if ( cr )
+        {
+        cr->Get( KRadioCRRegionAllowedJapan, regionAllowed );
+        delete cr;
+        }
+    INFO_1( "KRadioCRRegionAllowedJapan status = %i", regionAllowed  );
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::RdsAfSearchSettingChangedL()
+// Returns: None.
+// -----------------------------------------------------------------------------
+void CSettingsTestModule::RdsAfSearchSettingChangedL( TBool /*aEnabled*/ )
+{
+    FUNC_LOG;    
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::RegionSettingChangedL()
+// Returns: None.
+// -----------------------------------------------------------------------------
+void CSettingsTestModule::RegionSettingChangedL( TInt /*aRegion*/ )
+{
+    FUNC_LOG;
+    iRegionSettingChangeNotified = ETrue;   
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::tstSetRegionIdL()
+// Returns: errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::tstSetRegionIdL( CStifItemParser& aItem )
+{
+    FUNC_LOG;
+    TInt regionId( 0 );
+    TInt err( KErrNone );
+    
+    // read parameters
+    if ( aItem.GetNextInt( regionId ) )
+        {
+        err = KErrBadTestParameter;
+        ERROR( err, "Missing Parameter: regionId." );
+        }
+    CRepository* cr( CRepository::NewLC(KRadioCRUid) );
+    User::LeaveIfError( cr->Set( KRadioCRCurrentRegion,  regionId ) );
+    CleanupStack::Pop(cr);
+    delete cr;
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModule::tstResetStartCount()
+// Returns: errors.
+// -----------------------------------------------------------------------------
+TInt CSettingsTestModule::tstResetStartCount( CStifItemParser& /*aItem*/ )
+{
+    FUNC_LOG;
+    TInt countResetValue( 0 );
+    TInt err( KErrNone );
+    
+    CRepository* cr( CRepository::NewLC(KRadioCRUid) );
+    User::LeaveIfError( cr->Set( KRadioCRLaunchCount,  countResetValue ) );
+    CleanupStack::Pop(cr);
+    delete cr;
+    return err;
+}
+
+// -----------------------------------------------------------------------------
+// CSettingsTestModuleModule::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CSettingsTestModule::?member_function(
+   CItemParser& aItem )
+   {
+   FUNC_LOG;
+
+   ?code
+
+   }
+*/
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove
--- a/radioengine/utils/group/radioengineutils.mmp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/utils/group/radioengineutils.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -29,6 +29,7 @@
 CAPABILITY              CAP_GENERAL_DLL
 VENDORID                VID_DEFAULT
 PAGED
+SMPSAFE
 
 USERINCLUDE             ../api
 USERINCLUDE             ../inc
--- a/radioengine/utils/src/cradioaccessoryobserver.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radioengine/utils/src/cradioaccessoryobserver.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -24,8 +24,18 @@
 #include "cradioenginelogger.h"
 
 #ifdef ASW_CORE_AUDIO_PLATFORM_VERSION // Nokia specific adaptation
-#include <internal/accpolpropgenericid.h>
+#include <accpolpropgenericid.h>
+
+#ifndef __WINS__
+
 const TUint KPhysicalConnectionBitmask = KPCNokiaAV | KPCWired;
+
+#else
+
+const TUint KPhysicalConnectionBitmask = 0x20000 | 0x1;
+
+#endif // __WINS__
+
 #else
 const TUint KPhysicalConnectionBitmask = KPCWired;
 #endif // ASW_CORE_AUDIO_PLATFORM_VERSION
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/bwins/fmradioengineutils_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,32 @@
+EXPORTS
+	?ValueDes8@CRadioPropertyObserver@@QBEABVTDesC8@@XZ @ 1 NONAME ; class TDesC8 const & CRadioPropertyObserver::ValueDes8(void) const
+	?SetAudioRouteL@CRadioRoutableAudio@@QAEXW4TRadioAudioRoute@RadioEngine@@@Z @ 2 NONAME ; void CRadioRoutableAudio::SetAudioRouteL(enum RadioEngine::TRadioAudioRoute)
+	??0CRadioRoutableAudio@@QAE@PAVCRadioAudioRouter@@@Z @ 3 NONAME ; CRadioRoutableAudio::CRadioRoutableAudio(class CRadioAudioRouter *)
+	?InitializeL@RadioEngineUtils@@SAXXZ @ 4 NONAME ; void RadioEngineUtils::InitializeL(void)
+	?NewL@CRadioRemConTarget@@SAPAV1@XZ @ 5 NONAME ; class CRadioRemConTarget * CRadioRemConTarget::NewL(void)
+	??1CRadioRepositoryEntityBase@@UAE@XZ @ 6 NONAME ; CRadioRepositoryEntityBase::~CRadioRepositoryEntityBase(void)
+	??1TRadioMethodLogger@@QAE@XZ @ 7 NONAME ; TRadioMethodLogger::~TRadioMethodLogger(void)
+	??1CRadioRoutableAudio@@UAE@XZ @ 8 NONAME ; CRadioRoutableAudio::~CRadioRoutableAudio(void)
+	?SetAudioOutput@CRadioRoutableAudio@@IAEXPAVCAudioOutput@@@Z @ 9 NONAME ; void CRadioRoutableAudio::SetAudioOutput(class CAudioOutput *)
+	?RegisterRoutableAudio@CRadioAudioRouter@@QAEXPAVCRadioRoutableAudio@@@Z @ 10 NONAME ; void CRadioAudioRouter::RegisterRoutableAudio(class CRadioRoutableAudio *)
+	?ReadFrequencyStringLC@RadioEngineUtils@@SAPAVHBufC16@@KHH@Z @ 11 NONAME ; class HBufC16 * RadioEngineUtils::ReadFrequencyStringLC(unsigned long, int, int)
+	?ValueDes@CRadioPropertyObserver@@QBEABVTDesC16@@XZ @ 12 NONAME ; class TDesC16 const & CRadioPropertyObserver::ValueDes(void) const
+	??0CRadioRepositoryEntityBase@@IAE@ABVTUid@@KAAVMRadioRepositoryEntityObserver@@W4TPriority@CActive@@@Z @ 13 NONAME ; CRadioRepositoryEntityBase::CRadioRepositoryEntityBase(class TUid const &, unsigned long, class MRadioRepositoryEntityObserver &, enum CActive::TPriority)
+	??1CRadioSystemEventCollector@@UAE@XZ @ 14 NONAME ; CRadioSystemEventCollector::~CRadioSystemEventCollector(void)
+	??1CRadioAudioRouter@@UAE@XZ @ 15 NONAME ; CRadioAudioRouter::~CRadioAudioRouter(void)
+	?ActivateL@CRadioPropertyObserver@@QAEXXZ @ 16 NONAME ; void CRadioPropertyObserver::ActivateL(void)
+	?Logger@RadioEngineUtils@@SAPAVMRadioEngineLogger@@XZ @ 17 NONAME ; class MRadioEngineLogger * RadioEngineUtils::Logger(void)
+	?NewL@CRadioSystemEventCollector@@SAPAV1@XZ @ 18 NONAME ; class CRadioSystemEventCollector * CRadioSystemEventCollector::NewL(void)
+	?Logger@MRadioEngineLogger@@SAPAV1@XZ @ 19 NONAME ; class MRadioEngineLogger * MRadioEngineLogger::Logger(void)
+	?Release@RadioEngineUtils@@SAXXZ @ 20 NONAME ; void RadioEngineUtils::Release(void)
+	?DeleteAudioOutput@CRadioRoutableAudio@@IAEXXZ @ 21 NONAME ; void CRadioRoutableAudio::DeleteAudioOutput(void)
+	?FormatFrequencyString@RadioEngineUtils@@SAXAAVTDes16@@KHAAVTDesC16@@@Z @ 22 NONAME ; void RadioEngineUtils::FormatFrequencyString(class TDes16 &, unsigned long, int, class TDesC16 &)
+	?ValueInt@CRadioPropertyObserver@@QBEHXZ @ 23 NONAME ; int CRadioPropertyObserver::ValueInt(void) const
+	?SetAudioRouteL@CRadioAudioRouter@@QAEXW4TRadioAudioRoute@RadioEngine@@@Z @ 24 NONAME ; void CRadioAudioRouter::SetAudioRouteL(enum RadioEngine::TRadioAudioRoute)
+	?NewL@CRadioAudioRouter@@SAPAV1@AAVMRadioAudioRoutingObserver@@@Z @ 25 NONAME ; class CRadioAudioRouter * CRadioAudioRouter::NewL(class MRadioAudioRoutingObserver &)
+	?FsSession@RadioEngineUtils@@SAAAVRFs@@XZ @ 26 NONAME ; class RFs & RadioEngineUtils::FsSession(void)
+	?UnRegisterRoutableAudio@CRadioAudioRouter@@QAEXPAVCRadioRoutableAudio@@@Z @ 27 NONAME ; void CRadioAudioRouter::UnRegisterRoutableAudio(class CRadioRoutableAudio *)
+	?AudioRoutingSupported@CRadioRoutableAudio@@QBEHXZ @ 28 NONAME ; int CRadioRoutableAudio::AudioRoutingSupported(void) const
+	?NewL@CRadioPropertyObserver@@SAPAV1@AAVMRadioPropertyChangeObserver@@ABVTUid@@IW4TRadioPropertyType@1@@Z @ 29 NONAME ; class CRadioPropertyObserver * CRadioPropertyObserver::NewL(class MRadioPropertyChangeObserver &, class TUid const &, unsigned int, enum CRadioPropertyObserver::TRadioPropertyType)
+	??0TRadioMethodLogger@@QAE@PBG0@Z @ 30 NONAME ; TRadioMethodLogger::TRadioMethodLogger(unsigned short const *, unsigned short const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/eabi/fmradioengineutils_stubu.def	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,49 @@
+EXPORTS
+	_ZN16RadioEngineUtils11InitializeLEv @ 1 NONAME
+	_ZN16RadioEngineUtils21FormatFrequencyStringER6TDes16miR7TDesC16 @ 2 NONAME
+	_ZN16RadioEngineUtils21ReadFrequencyStringLCEmii @ 3 NONAME
+	_ZN16RadioEngineUtils6LoggerEv @ 4 NONAME
+	_ZN16RadioEngineUtils7ReleaseEv @ 5 NONAME
+	_ZN16RadioEngineUtils9FsSessionEv @ 6 NONAME
+	_ZN17CRadioAudioRouter14SetAudioRouteLEN11RadioEngine16TRadioAudioRouteE @ 7 NONAME
+	_ZN17CRadioAudioRouter21RegisterRoutableAudioEP19CRadioRoutableAudio @ 8 NONAME
+	_ZN17CRadioAudioRouter23UnRegisterRoutableAudioEP19CRadioRoutableAudio @ 9 NONAME
+	_ZN17CRadioAudioRouter4NewLER26MRadioAudioRoutingObserver @ 10 NONAME
+	_ZN17CRadioAudioRouterD0Ev @ 11 NONAME
+	_ZN17CRadioAudioRouterD1Ev @ 12 NONAME
+	_ZN17CRadioAudioRouterD2Ev @ 13 NONAME
+	_ZN18CRadioRemConTarget4NewLEv @ 14 NONAME
+	_ZN18MRadioEngineLogger6LoggerEv @ 15 NONAME
+	_ZN18TRadioMethodLoggerC1EPKtS1_ @ 16 NONAME
+	_ZN18TRadioMethodLoggerC2EPKtS1_ @ 17 NONAME
+	_ZN18TRadioMethodLoggerD1Ev @ 18 NONAME
+	_ZN18TRadioMethodLoggerD2Ev @ 19 NONAME
+	_ZN19CRadioRoutableAudio14SetAudioOutputEP12CAudioOutput @ 20 NONAME
+	_ZN19CRadioRoutableAudio14SetAudioRouteLEN11RadioEngine16TRadioAudioRouteE @ 21 NONAME
+	_ZN19CRadioRoutableAudio17DeleteAudioOutputEv @ 22 NONAME
+	_ZN19CRadioRoutableAudioC1EP17CRadioAudioRouter @ 23 NONAME
+	_ZN19CRadioRoutableAudioC2EP17CRadioAudioRouter @ 24 NONAME
+	_ZN19CRadioRoutableAudioD0Ev @ 25 NONAME
+	_ZN19CRadioRoutableAudioD1Ev @ 26 NONAME
+	_ZN19CRadioRoutableAudioD2Ev @ 27 NONAME
+	_ZN22CRadioPropertyObserver4NewLER28MRadioPropertyChangeObserverRK4TUidjNS_18TRadioPropertyTypeE @ 28 NONAME
+	_ZN22CRadioPropertyObserver9ActivateLEv @ 29 NONAME
+	_ZN26CRadioRepositoryEntityBaseC2ERK4TUidmR30MRadioRepositoryEntityObserverN7CActive9TPriorityE @ 30 NONAME
+	_ZN26CRadioRepositoryEntityBaseD0Ev @ 31 NONAME
+	_ZN26CRadioRepositoryEntityBaseD1Ev @ 32 NONAME
+	_ZN26CRadioRepositoryEntityBaseD2Ev @ 33 NONAME
+	_ZN26CRadioSystemEventCollector4NewLEv @ 34 NONAME
+	_ZN26CRadioSystemEventCollectorD0Ev @ 35 NONAME
+	_ZN26CRadioSystemEventCollectorD1Ev @ 36 NONAME
+	_ZN26CRadioSystemEventCollectorD2Ev @ 37 NONAME
+	_ZNK19CRadioRoutableAudio21AudioRoutingSupportedEv @ 38 NONAME
+	_ZNK22CRadioPropertyObserver8ValueDesEv @ 39 NONAME
+	_ZNK22CRadioPropertyObserver8ValueIntEv @ 40 NONAME
+	_ZNK22CRadioPropertyObserver9ValueDes8Ev @ 41 NONAME
+	_ZTI15CRadioEngineTls @ 42 NONAME
+	_ZTI19CRadioRoutableAudio @ 43 NONAME
+	_ZTI26CRadioRepositoryEntityBase @ 44 NONAME
+	_ZTV15CRadioEngineTls @ 45 NONAME
+	_ZTV19CRadioRoutableAudio @ 46 NONAME
+	_ZTV26CRadioRepositoryEntityBase @ 47 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/group/bld.inf	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 "../../../group/buildflags.hrh"
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+WINSCW ARMV5
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+radioengineutils_stub.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/group/radioengineutils_stub.mmp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 "../../../group/buildflags.hrh"
+
+#include <platform_paths.hrh>
+
+#include <data_caging_paths.hrh>
+
+TARGET                  fmradioengineutils_stub.dll
+TARGETTYPE              DLL
+UID                     0x1000008D 0x01000002
+VERSION                 10.0
+
+CAPABILITY              CAP_GENERAL_DLL
+VENDORID                VID_DEFAULT
+PAGED
+SMPSAFE
+
+USERINCLUDE             ../inc
+USERINCLUDE             ../../api
+USERINCLUDE             ../../inc
+USERINCLUDE             /sf/mw/mmmw/mmserv/radioutility/inc
+USERINCLUDE             /sf/mw/mmmw/mmserv/inc
+USERINCLUDE             /sf/mw/mmmw/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE           /epoc32/include/remcon
+SYSTEMINCLUDE           /epoc32/include/internal
+SYSTEMINCLUDE           /epoc32/include/mmf/common
+SYSTEMINCLUDE           /epoc32/include/platform/mw
+
+SOURCEPATH              ../../src
+SOURCE                  radioengineutils.cpp
+SOURCE                  cradioenginetls.cpp
+SOURCE                  cradioroutableaudio.cpp
+SOURCE                  cradioaudiorouter.cpp
+SOURCE                  cradiopropertyobserver.cpp
+SOURCE                  cradioremcontarget.cpp
+SOURCE                  cradiorepositoryentitybase.cpp
+SOURCE                  cradiosystemeventcollector.cpp
+SOURCE                  cradiosystemeventcollectorimp.cpp
+SOURCE                  cradiosystemeventdetector.cpp
+SOURCE                  cradioenginelogger.cpp
+
+SOURCEPATH              ../src
+SOURCE                  cradioaccessoryobserver_stub.cpp
+SOURCE                  cradioremcontargetimp_stub.cpp
+ 
+LIBRARY                 bafl.lib
+LIBRARY                 accclient.lib
+LIBRARY                 accpolicy.lib
+LIBRARY                 centralrepository.lib
+LIBRARY                 commonengine.lib
+LIBRARY                 efsrv.lib
+LIBRARY                 euser.lib
+LIBRARY                 cone.lib
+LIBRARY                 remconcoreapi.lib
+LIBRARY                 remconextensionapi.lib
+LIBRARY                 remconinterfacebase.lib
+LIBRARY                 featmgr.lib
+LIBRARY                 flogger.lib 
+LIBRARY                 Radio_Utility_Stub.lib
+LIBRARY                 RadioSession_Stub.lib // SRadioStubManager functions
+
+MACRO STUB_CONSTELLATION
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 CRADIOACCESSORYOBSERVERSTUB_H
+#define CRADIOACCESSORYOBSERVERSTUB_H
+
+#include <AccessoryServer.h>
+#include <AccessoryConnection.h>
+#include <AccPolSubblockNameArray.h>
+#include <RadioStubManager.h>
+
+class MRadioHeadsetEventObserver;
+
+/**
+ *  Observer of accessory states.
+ *
+ *  Instance of this class observes notifications of headset state changes.
+ *  In its turn it sends notifications to its observer of those changes.
+ *
+ */
+NONSHARABLE_CLASS( CRadioAccessoryObserver ): public CBase
+{
+public:
+
+    /**
+     * C++ default constructor.
+     */
+    CRadioAccessoryObserver();
+
+    /**
+     * Static constructor.
+     */
+    static CRadioAccessoryObserver* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CRadioAccessoryObserver();
+
+    /**
+     * Sets observer. The observer will be notified when headset has been
+     * pressed or headset is connected/disconnected.
+      *
+     * @param aObserver Observer
+     */
+    void SetObserver( MRadioHeadsetEventObserver* aObserver );
+
+    /**
+     * Tells if there is a headset connected.
+     *
+     * @return <code>ETrue </code> if headset accessory is connected,
+     * <code>EFalse</code> otherwise
+     */
+    TBool IsHeadsetConnectedL() const;
+
+private:
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     *
+     * @param aAccessoryServer Existing session for The Accessory Server.
+     */
+    void ConstructL();
+
+
+private: // data
+
+    // RadioStubManager pointer points inside RadioStubManagerChunk
+    SRadioStubManager* iRadioStubManager;
+    
+    // RadioStubManagerChunk handle
+    RChunk iRadioStubManagerChunk;
+
+};
+
+#endif // CRADIOACCESSORYOBSERVERSTUB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/inc/cradioremcontargetimp_stub.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* 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 CRADIOREMCONTARGETIMP_H
+#define CRADIOREMCONTARGETIMP_H
+
+// System includes
+#include <RemConCallHandlingTargetObserver.h>
+#include <remconcoreapitargetobserver.h>
+#include <RadioStubManager.h>
+
+// User includes
+#include "cradioremcontarget.h"
+
+// Forward declarations
+class CRemConCallHandlingTarget;
+class CRemConCoreApiTarget;
+class CRemConInterfaceSelector;
+
+// Class declaration
+
+/**
+ * Media key listener
+ */
+NONSHARABLE_CLASS( CRadioRemConTargetImp ) : public CRadioRemConTarget
+                                           , public MRemConCoreApiTargetObserver
+                                           , public MRemConCallHandlingTargetObserver
+    {
+public:
+
+    static CRadioRemConTargetImp* NewL();
+
+    virtual ~CRadioRemConTargetImp();
+
+private:
+
+// from base class CRadioRemConTarget
+
+    void SetControlEventObserver( MRadioControlEventObserver* aControlEventObserver );
+
+// from base class MRemConCoreApiTargetObserver
+
+    void MrccatoCommand( TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction aButtonAct );
+    void MrccatoPlay( TRemConCoreApiPlaybackSpeed aSpeed, TRemConCoreApiButtonAction aButtonAct );
+    void MrccatoTuneFunction( TBool aTwoPart, TUint aMajorChannel, TUint aMinorChannel, TRemConCoreApiButtonAction aButtonAct );
+    void MrccatoSelectDiskFunction( TUint aDisk, TRemConCoreApiButtonAction aButtonAct );
+    void MrccatoSelectAvInputFunction( TUint8 aAvInputSignalNumber, TRemConCoreApiButtonAction aButtonAct );
+    void MrccatoSelectAudioInputFunction( TUint8 aAudioInputSignalNumber, TRemConCoreApiButtonAction aButtonAct );
+
+// from base class MRemConCallHandlingTargetObserver
+
+    void AnswerCall();
+    void AnswerEndCall();
+    void DialCall( const TDesC8& aTelNumber );
+    void EndCall();
+    void GenerateDTMF( const TChar aChar );
+    void LastNumberRedial();
+    void MultipartyCalling( const TDesC8& aData );
+    void SpeedDial( const TInt aIndex );
+    void VoiceDial( const TBool aActivate );
+
+private:
+
+    CRadioRemConTargetImp();
+
+    void ConstructL();
+
+    /**
+     * Callback for repeat timer.
+     * @param aPtr Pointer to this class.
+     */
+    static TInt RepeatTimerCallback( TAny* aPtr );
+
+private: // data
+
+    /** Pointer to observer in UI side, can be NULL. Not owned. */
+    MRadioControlEventObserver* iObserver;
+
+    /** RemCon interface selector. */
+    CRemConInterfaceSelector*   iInterfaceSelector;
+
+    /** RemCon Core API target class. */
+    CRemConCoreApiTarget*       iCoreTarget;
+
+    /** RemCon Call API target class. */
+    CRemConCallHandlingTarget*  iCallTarget;
+
+    /** Timer for generating repeat events. */
+    CPeriodic*                  iRepeatTimer;
+
+    /** Operation id to repeat. */
+    TRemConCoreApiOperationId   iRepeatId;
+
+		// RadioStubManager pointer points inside RadioStubManagerChunk
+		SRadioStubManager* iRadioStubManager;
+		
+		// RadioStubManagerChunk handle
+		RChunk iRadioStubManagerChunk;
+
+    };
+
+#endif // CRADIOREMCONTARGETIMP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies 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 "cradioenginelogger.h"
+
+#include "cradioaccessoryobserver_stub.h"
+#include "mradioheadseteventobserver.h"
+
+#define STUB  iRadioStubManager->iAccessoryObserver
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioAccessoryObserver::CRadioAccessoryObserver()
+    {
+    LOG_METHOD_AUTO;
+    }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::ConstructL()
+    {
+    LOG_METHOD_AUTO;
+    // Open chunk for test configuration/control data
+    TInt err = iRadioStubManagerChunk.OpenGlobal(
+            KRadioStubManagerLocalChunkName,
+            EFalse, // == Read | Write
+            EOwnerThread );
+    User::LeaveIfError( err );
+    if ( sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize() )
+        {
+        User::Leave( KErrTooBig );
+        }
+    TUint8* basePtr = iRadioStubManagerChunk.Base();
+    User::LeaveIfNull( basePtr );    
+    iRadioStubManager = (SRadioStubManager*)basePtr;
+    if ( STUB.iLeaveNewL.iError )
+        {
+        User::Leave( STUB.iLeaveNewL.iError );
+        }
+    if ( STUB.iLeaveConstructL.iError )
+        {
+        User::Leave( STUB.iLeaveConstructL.iError );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioAccessoryObserver* CRadioAccessoryObserver::NewL()
+    {
+    LOG_METHOD_AUTO;
+    CRadioAccessoryObserver* self = new( ELeave ) CRadioAccessoryObserver;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioAccessoryObserver::~CRadioAccessoryObserver()
+    {
+    LOG_METHOD_AUTO;
+    iRadioStubManagerChunk.Close();
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CRadioAccessoryObserver::IsHeadsetConnectedL() const
+    {
+    LOG_METHOD_AUTO;
+    if ( STUB.iLeaveIsHeadsetConnectedL.iError )
+        {
+        User::Leave( STUB.iLeaveIsHeadsetConnectedL.iError );
+        }
+    return STUB.iHeadsetConnected;
+    }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::SetObserver( MRadioHeadsetEventObserver* aObserver )
+    {
+    LOG_METHOD_AUTO;
+    STUB.iObserver = aObserver;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,460 @@
+/*
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+// System includes
+#include <RemConCallHandlingTarget.h>
+#include <remconcoreapitarget.h>
+#include <remconinterfaceselector.h>
+
+// User includes
+#include "cradioenginelogger.h"
+#include "cradioremcontargetimp_stub.h"
+#include "mradiocontroleventobserver.h"
+#include "radioengineutils.h"
+
+#define STUB  iRadioStubManager->iRemConTarget
+
+// Constants
+const TInt KVRVolumeTimerInitialDelay = 0; // Initial timer for headset volume up/down press event should expire immediately
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioRemConTargetImp::CRadioRemConTargetImp()
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::ConstructL()
+    {
+    LOG_METHOD_AUTO;;
+    // Open chunk for test configuration/control data
+    TInt err = iRadioStubManagerChunk.OpenGlobal(
+            KRadioStubManagerLocalChunkName,
+            EFalse, // == Read | Write
+            EOwnerThread );
+    User::LeaveIfError( err );
+    if ( sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize() )
+        {
+        User::Leave( KErrTooBig );
+        }
+    TUint8* basePtr = iRadioStubManagerChunk.Base();
+    User::LeaveIfNull( basePtr );
+    iRadioStubManager = (SRadioStubManager*)basePtr;
+    if ( STUB.iLeaveNewL.iError )
+        {
+        User::Leave( STUB.iLeaveNewL.iError );
+        }
+    if ( STUB.iLeaveConstructL.iError )
+        {
+        User::Leave( STUB.iLeaveConstructL.iError );
+        }
+    STUB.iRemConCoreApiTargetObserver = this;
+    STUB.iRemConCallHandlingTargetObserver = this;
+    RadioEngineUtils::InitializeL();
+    // Create interface selector.
+        //iInterfaceSelector = CRemConInterfaceSelector::NewL();
+    // Create a new CRemConCoreApiTarget, owned by the interface selector.
+        //iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this );
+    // Create a new CRemConCallHandlingTarget, owned by the interface selector.
+        //iCallTarget = CRemConCallHandlingTarget::NewL( *iInterfaceSelector, *this );
+    // Start being a target.
+        //iInterfaceSelector->OpenTargetL();
+    // Create repeat timer.
+    iRepeatTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioRemConTargetImp* CRadioRemConTargetImp::NewL()
+    {
+    LOG_METHOD_AUTO;;
+    CRadioRemConTargetImp* self = new ( ELeave ) CRadioRemConTargetImp();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CRadioRemConTargetImp::~CRadioRemConTargetImp()
+    {
+    LOG_METHOD_AUTO;;
+    if ( iRepeatTimer )
+        {
+        iRepeatTimer->Cancel();
+        }
+    delete iRepeatTimer;
+    //delete iInterfaceSelector; //deletes also iCallTarget and iCoreTarget
+    //iCoreTarget = NULL;
+    //iCallTarget = NULL;
+    RadioEngineUtils::Release();
+    iRadioStubManagerChunk.Close();
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::SetControlEventObserver( MRadioControlEventObserver* aControlEventObserver )
+    {
+    LOG_METHOD_AUTO;;
+    iObserver = aControlEventObserver;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoCommand( TRemConCoreApiOperationId aOperationId,
+                                         TRemConCoreApiButtonAction aButtonAct )
+    {
+    LOG_FORMAT( "aOperationId = %d, aButtonAct = %d", aOperationId, aButtonAct );
+    LOG_METHOD_AUTO;
+    //TODO: Refactor
+    if ( iObserver )
+        {
+        switch ( aOperationId )
+            {
+            case ERemConCoreApiChannelUp:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelUpL( ETrue ); iObserver->ChannelUpL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelUpL( ETrue ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelUpL( EFalse ))
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiChannelDown:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelDownL( ETrue ); iObserver->ChannelDownL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelDownL( ETrue ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    TRAP_IGNORE( iObserver->ChannelDownL( EFalse ))
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiVolumeUp:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->VolumeUpL( ETrue ); iObserver->VolumeUpL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    iRepeatTimer->Cancel();
+                    iRepeatId = ERemConCoreApiVolumeUp;
+//                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
+                    iRepeatTimer->Start( KVRVolumeTimerInitialDelay, 1000000, TCallBack( RepeatTimerCallback, this ));
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    iRepeatTimer->Cancel();
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiVolumeDown:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->VolumeDownL( ETrue ); iObserver->VolumeDownL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    iRepeatTimer->Cancel();
+                    iRepeatId = ERemConCoreApiVolumeDown;
+//                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
+                    iRepeatTimer->Start( KVRVolumeTimerInitialDelay, 1000000, TCallBack( RepeatTimerCallback, this ));
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    iRepeatTimer->Cancel();
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiStop:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->StopL( ETrue ); iObserver->StopL( EFalse ))
+                    }
+                break;
+                }
+            case ERemConCoreApiBackward:
+            case ERemConCoreApiRewind:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    TRAP_IGNORE( iObserver->RewindL( ETrue ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    TRAP_IGNORE( iObserver->RewindL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->BackwardL( ETrue ); iObserver->BackwardL( EFalse ))
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiForward:
+            case ERemConCoreApiFastForward:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonPress )
+                    {
+                    TRAP_IGNORE( iObserver->FastForwardL( ETrue ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                    {
+                    TRAP_IGNORE( iObserver->FastForwardL( EFalse ))
+                    }
+                else if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->ForwardL( ETrue ); iObserver->ForwardL( EFalse ))
+                    }
+                else {}
+                break;
+                }
+            case ERemConCoreApiPlay:
+            case ERemConCoreApiPause:
+            case ERemConCoreApiPausePlayFunction:
+                {
+                if ( aButtonAct == ERemConCoreApiButtonClick )
+                    {
+                    TRAP_IGNORE( iObserver->PausePlayL( ETrue ); iObserver->PausePlayL( EFalse ))
+                    }
+                break;
+                }
+            default:
+                {
+                break;
+                }
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoPlay( TRemConCoreApiPlaybackSpeed /*aSpeed*/,
+                                      TRemConCoreApiButtonAction aButtonAct )
+    {
+    LOG_METHOD_AUTO;
+    if ( iObserver )
+        {
+        if ( aButtonAct == ERemConCoreApiButtonClick )
+            {
+            TRAP_IGNORE( iObserver->PlayL( ETrue ); iObserver->PlayL( EFalse ))
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoTuneFunction( TBool /*aTwoPart*/,
+                                              TUint /*aMajorChannel*/,
+                                              TUint /*aMinorChannel*/,
+                                              TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoSelectDiskFunction( TUint /*aDisk*/,
+                                                    TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoSelectAvInputFunction( TUint8 /*aAvInputSignalNumber*/,
+                                                       TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MrccatoSelectAudioInputFunction( TUint8 /*aAudioInputSignalNumber*/,
+                                                          TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CRadioRemConTargetImp::RepeatTimerCallback( TAny* aPtr )
+    {
+    LOG_METHOD_AUTO;
+
+    CRadioRemConTargetImp* self = reinterpret_cast<CRadioRemConTargetImp*>( aPtr );
+
+    if ( self )
+        {
+        if ( self->iObserver )
+            {
+            switch ( self->iRepeatId )
+                {
+                case ERemConCoreApiVolumeUp:
+                    {
+                    TRAP_IGNORE( self->iObserver->VolumeUpL( ETrue ); self->iObserver->VolumeUpL( EFalse ))
+                    break;
+                    }
+                case ERemConCoreApiVolumeDown:
+                    {
+                    TRAP_IGNORE( self->iObserver->VolumeDownL( ETrue ); self->iObserver->VolumeDownL( EFalse ))
+                    break;
+                    }
+                default:
+                    {
+                    break;
+                    }
+                }
+            }
+        }
+
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::AnswerCall()
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::AnswerEndCall()
+    {
+    LOG_METHOD_AUTO;
+    if ( iObserver )
+        {
+        TRAP_IGNORE( iObserver->AnswerEndCallL())
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::DialCall( const TDesC8& /*aTelNumber*/ )
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::EndCall()
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::GenerateDTMF( const TChar /*aChar*/ )
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::LastNumberRedial()
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::MultipartyCalling( const TDesC8& /*aData*/ )
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::SpeedDial( const TInt /*aIndex*/ )
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CRadioRemConTargetImp::VoiceDial( const TBool /*aActivate*/ )
+    {
+    LOG_METHOD_AUTO;
+    }
--- a/radiohswidget/inc/radiohswidget.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/inc/radiohswidget.h	Tue Jul 06 14:16:27 2010 +0300
@@ -24,7 +24,6 @@
 // Forward declarations
 class HbLabel;
 class HbPushButton;
-class HbMarqueeItem;
 class XQSettingsManager;
 class XQSettingsKey;
 class RadioHsWidgetProfileReader;
@@ -44,8 +43,6 @@
         StateNotRunning,
         StateStarting,
         StateRunning,
-        //StateControllingAudio, // TODO: Remove, this is not needed anymore.
-        //StateNotControllingAudio,// TODO: Remove, this is not needed anymore.
         StateSeeking,
         StateAntennaNotConnected,
         StateClosing
--- a/radiohswidget/inc/radiohswidgetprofilereader.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/inc/radiohswidgetprofilereader.h	Tue Jul 06 14:16:27 2010 +0300
@@ -39,17 +39,10 @@
     
     bool isCurrentProfileOffline();
 
-signals:
-    //void profileChanged(int profile);
-    //void radioRunning(const QVariant &state);
-
 public slots:
     void handleDeletedItem(const XQSettingsKey &key);
     void handleChanges(const XQSettingsKey &key, const QVariant &value);
     
-private slots:
-    //void currentProfileStatus(const QVariant &value);
-
 private:
     void radioRunningStatus(const QVariant &value);
     
--- a/radiohswidget/inc/radiohswidgetradioserviceclient.h	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/inc/radiohswidgetradioserviceclient.h	Tue Jul 06 14:16:27 2010 +0300
@@ -20,7 +20,6 @@
 
 // System includes
 #include <QObject>
-#include <xqservicerequest.h>
 #include <xqappmgr.h>
 
 // User includes
@@ -40,6 +39,7 @@
     void startMonitoring(
         const FmRadio::VisibiltyAfterRequest visibility);
     void stopMonitoring();
+    QVariant createRadioNotificationData(int type, const QVariant& data);
 
 private slots:
     void handleError(const int errorCode, const QString &errorMessage);
--- a/radiohswidget/locales/compile_ts.bat	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/locales/compile_ts.bat	Tue Jul 06 14:16:27 2010 +0300
@@ -16,11 +16,11 @@
 
 @echo off
 
-set QM_FILE=radiohswidget.qm
-set QM_FILE_EN_US=radiohswidget_en_us.qm
+set QM_FILE=fmradiohswidget.qm
+set QM_FILE_EN_US=fmradiohswidget_en_us.qm
 set QM_LOCATION=./
 
 
 ECHO Creating QM file
-call lrelease -idbased radiohswidget.ts -qm %QM_LOCATION%%QM_FILE%
-REM call lrelease -idbased radiohswidget_en_us.ts -qm %QM_LOCATION%%QM_FILE_EN_US%
+call lrelease -idbased fmradiohswidget.ts -qm %QM_LOCATION%%QM_FILE%
+REM call lrelease -idbased fmradiohswidget_en_us.ts -qm %QM_LOCATION%%QM_FILE_EN_US%
Binary file radiohswidget/locales/fmradiohswidget.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/locales/fmradiohswidget.ts	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_rad_info_country_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Country Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_social_affairs_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Social Affairs</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_weather_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Weather</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_personality_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Personality</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_rhythm_and_blues_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Rhythm and blues</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_information_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Information</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_phone_in_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Phone In</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_current_affairs_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Current affairs</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_alarm_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Alarm</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_leisure_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Leisure</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_childrens_programmes_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Children’s programmes</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_light_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Light classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_alarm_test_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Alarm Test</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religious_talk_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religious talk</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_list_fm_radio">
+    <comment>Text in a home screen widget information area. Displayed when no station is tuned.</comment>        
+    <source>FM Radio</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_list_fm_radio</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_news_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area. Custom layout parent string.</comment>        
+    <source>News</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_easy_listening_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Easy Listening</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_top_40_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Top 40</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_public_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Public</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_varied_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Varied</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_nostalgia_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Nostalgia</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_national_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>National Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_science_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Science</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_jazz_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Jazz Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religious_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religious music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_other_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Other Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_folk_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Folk Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religion_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religion</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_rock_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft rock</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_adult_hits_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Adult hits</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_drama_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Drama</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_rock_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Rock Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_serious_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Serious classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_college_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>College</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_connect_wired_headset">
+    <comment>Notification text which is displayed in home screen widget, when the headset antenna is not connected.</comment>        
+    <source>Connect wired headset.</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_oldies_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Oldies Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_documentary_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Documentary</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_education_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Education</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_sport_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Sport</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_pop_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Pop Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_language_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Language</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_classic_rock_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Classic rock</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_list_l1_mhz">
+    <comment>Text in a home screen widget information area. %L1 is the radio station&apos;s frequency.</comment>        
+    <source>%L1 Mhz</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_list_l1_mhz</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_rhythm_and_blues_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft rhythm and blues</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_culture_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Culture</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_talk_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Talk</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_finance_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Finance</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_activate_radio_in_offline_mode_hs">
+    <comment>Confirmation query which is displayed when the FM Radio is launched from the FM Radio home screen widget while the device is in offline mode. (Note that same text is also in FM radio textmap.)</comment>        
+    <source>Activate Fm Radio in off-line mode?</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_travel_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Travel</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file radiohswidget/locales/radiohswidget.qm has changed
--- a/radiohswidget/locales/radiohswidget.ts	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,516 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="txt_rad_info_country_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Country Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_social_affairs_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Social Affairs</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_weather_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Weather</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_personality_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Personality</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_rhythm_and_blues_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Rhythm and blues</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_information_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Information</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_phone_in_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Phone In</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_current_affairs_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Current affairs</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_alarm_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Alarm</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_leisure_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Leisure</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_childrens_programmes_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Children’s programmes</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_light_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Light classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_alarm_test_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Alarm Test</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religious_talk_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religious talk</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_list_fm_radio">
-    <comment>Text in a home screen widget information area. Displayed when no station is tuned.</comment>        
-    <source>FM Radio</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_list_fm_radio</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_news_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area. Custom layout parent string.</comment>        
-    <source>News</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_easy_listening_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Easy Listening</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_top_40_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Top 40</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_public_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Public</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_varied_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Varied</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_nostalgia_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Nostalgia</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_national_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>National Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_science_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Science</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_jazz_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Jazz Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religious_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religious music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_other_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Other Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_folk_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Folk Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religion_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religion</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_rock_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft rock</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_adult_hits_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Adult hits</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_drama_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Drama</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_rock_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Rock Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_serious_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Serious classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_college_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>College</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_connect_wired_headset">
-    <comment>Notification text which is displayed in home screen widget, when the headset antenna is not connected.</comment>        
-    <source>Connect wired headset.</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_oldies_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Oldies Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_documentary_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Documentary</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_education_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Education</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_sport_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Sport</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_pop_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Pop Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_language_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Language</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_classic_rock_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Classic rock</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_list_l1_mhz">
-    <comment>Text in a home screen widget information area. %L1 is the radio station&apos;s frequency.</comment>        
-    <source>%L1 Mhz</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_list_l1_mhz</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_rhythm_and_blues_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft rhythm and blues</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_culture_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Culture</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_talk_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Talk</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_finance_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Finance</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_activate_radio_in_offline_mode_hs">
-    <comment>Confirmation query which is displayed when the FM Radio is launched from the FM Radio home screen widget while the device is in offline mode. (Note that same text is also in FM radio textmap.)</comment>        
-    <source>Activate Fm Radio in off-line mode?</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_travel_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Travel</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin	Tue Jul 06 14:16:27 2010 +0300
@@ -1,1 +1,1 @@
-This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-06-07T15:03:27
+This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-06-22T09:54:17
--- a/radiohswidget/radiohswidget.pro	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/radiohswidget.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -22,8 +22,6 @@
 CONFIG += hb
 CONFIG += mobility
 MOBILITY = serviceframework
-# Traslations is waiting for the widget specific ts
-#TRANSLATIONS += $${TARGET}.ts
 
 LIBS += -lxqsettingsmanager
 LIBS += -lxqservice
@@ -39,7 +37,6 @@
 UID = 2002E6D6
 
 RESOURCES = resources.qrc
-#exportResources(./resource/$${TARGET}_icon*.png, $$PLUGIN_SUBDIR)
 
 symbian: {
 
@@ -56,8 +53,6 @@
     widgetResources.path = $${DESTDIR}
     widgetResources.sources += resource/$${TARGET}.xml
     widgetResources.sources += resource/$${TARGET}.manifest
-    # icon is now removed to be able to unistall the widget more easily.
-    #widgetResources.sources += resource/$${TARGET}_icon*.png
 	
     localisedFiles.path = /resource/qt/translations
     localisedFiles.sources += ./locales/*.qm
@@ -66,6 +61,8 @@
     DEPLOYMENT += widgetResources
     DEPLOYMENT += localisedFiles
     
+    MMP_RULES += SMPSAFE
+    
     include(radiohswidget_exports_to_rom.pri)
 }
 
@@ -82,7 +79,7 @@
     DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
 
     manifest.path = $${DESTDIR}
-    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.css #./resource/*.png
+    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.css
     
     widgetLocalisation.path = $$PWD/../../../../../bin/$${SUBDIRPART}/resource/qt/translations
     widgetLocalisation.files += ./locales/*.qm
--- a/radiohswidget/resource/fmradiohswidget.docml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/resource/fmradiohswidget.docml	Tue Jul 06 14:16:27 2010 +0300
@@ -104,9 +104,9 @@
         </widget>
         <widget name="background" type="HbLabel">
             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-            <icon iconName=":/ui/resource/qtg_graf_hsradio_bg.png" name="icon"/>
             <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
             <sizehint height="26.5un" type="FIXED" width="37un"/>
+            <icon iconName="qtg_graf_hsradio_bg" name="icon"/>
         </widget>
         <real name="z" value="1"/>
         <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
--- a/radiohswidget/resource/fmradiohswidget.manifest	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/resource/fmradiohswidget.manifest	Tue Jul 06 14:16:27 2010 +0300
@@ -3,7 +3,7 @@
     <uri>fmradiohswidget</uri>
     <title>txt_fmradiohswidget_list_fm_radio_homescreen_widget</title>
     <description>txt_fmradiohswidget_list_quick_access_for_fm_radio_in_your</description>
-    <icon>radiohswidget.png</icon>
+    <icon>qtg_large_radio</icon>
     <hidden>false</hidden>
-    <servicexml>radiohswidget.xml</servicexml>
+    <servicexml>fmradiohswidget.xml</servicexml>
 </hswidgetmanifest>
--- a/radiohswidget/resource/fmradiohswidget.xml	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/resource/fmradiohswidget.xml	Tue Jul 06 14:16:27 2010 +0300
@@ -8,7 +8,5 @@
         <version>1.0</version>
         <description>FM Radio homescreen widget</description>
         <capabilities></capabilities>
-        <customproperty key="iconuri">radiohswidget.png</customproperty>
-        <customproperty key="title">FM Radio home screen widget</customproperty>
     </interface>
 </service>
--- a/radiohswidget/resource/fmradiohswidgetplugin.s60xml	Wed Jun 23 18:12:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>radiohswidget</name>
-    <filepath>c:/private/20022F35/import/widgetregistry/2002E6D6/radiohswidget.qtplugin</filepath>
-    <description>FM Radio homescreen widget</description>
-    <interface>
-        <name>com.nokia.IHomeScreenWidget</name>
-        <version>1.0</version>
-        <description>FM Radio homescreen widget</description>
-        <capabilities></capabilities>
-        <customproperty key="iconuri">radiohswidget.png</customproperty>
-        <customproperty key="title">FM Radio Widget</customproperty>
-    </interface>
-</service>
Binary file radiohswidget/resource/fmradiohswidgetplugin_icon.png has changed
Binary file radiohswidget/resource/qtg_graf_hsradio_bg.png has changed
--- a/radiohswidget/resources.qrc	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/resources.qrc	Tue Jul 06 14:16:27 2010 +0300
@@ -1,6 +1,5 @@
 <RCC>
     <qresource prefix="/ui">
         <file>resource/fmradiohswidget.docml</file>
-        <file>resource/qtg_graf_hsradio_bg.png</file>
     </qresource>
 </RCC>
--- a/radiohswidget/src/radiohswidget.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/src/radiohswidget.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -20,7 +20,6 @@
 #include <HbLabel>
 #include <HbDocumentLoader>
 #include <HbFrameDrawer>
-#include <HbFrameItem>
 #include <HbIcon>
 #include <HbIconAnimationManager>
 #include <HbIconAnimationDefinition>
@@ -42,8 +41,6 @@
 // Constants
 /** Path to docml file */
 const QString DOCML(":/ui/resource/fmradiohswidget.docml");
-/** Path to css file */
-const QString CSS(":/ui/resource/fmradiohswidget.css");
 
 /**  DOCML object name for mainLayout */
 const QString DOCML_OBJECT_NAME_MAIN_LAYOUT("mainLayout");
@@ -80,6 +77,10 @@
 const int FAVORITE_STATION_COUNT_UNDEFINED(-1);
 /** One favorite station set. */
 const int FAVORITE_STATION_COUNT_ONE(1);
+/** Favorite station count lower boundary including this number. */
+const int FAVORITE_STATION_COUNT_LOWER_BOUNDARY(0);
+/** Favorite station count upper boundary including this number. */
+const int FAVORITE_STATION_COUNT_UPPER_BOUNDARY(100);
 
 // Graphics identifiers for different push button states
 const QString CONTROL_BUTTON_GRAPHICS_NORMAL  ("qtg_fr_hsbutton_normal");
@@ -167,35 +168,33 @@
     const QVariant &information)
 {
     LOG_METHOD;
-    LEVEL2(LOG_SLOT_CALLER);
-    if (!information.isValid()) {
-        // informationValue is not valid so return.
-        return;
-    }
     switch (informationType) {
 
     case RadioServiceNotification::FavoriteCount:
-        LEVEL2(LOG("FavoriteCount"));
-        if (information.canConvert(QVariant::Int)) {
+        LOG("FavoriteCount");
+        if (information.canConvert(QVariant::Int) &&
+            information.toInt() >= FAVORITE_STATION_COUNT_LOWER_BOUNDARY &&
+            information.toInt() <= FAVORITE_STATION_COUNT_UPPER_BOUNDARY) {
             mFavoriteStationCount = information.toInt();
             // If there are favorite stations, enable the next/previous
             // buttons.
-            LEVEL2(LOG_FORMAT("favoriteCount: %d, mFavoriteStations: %d",
-                    mFavoriteStationCount, mFavoriteStations));
+            LOG_FORMAT("mFavoriteStationCount: %d", mFavoriteStationCount);
             // Enable or disable buttons only if favoriteCount differs
             // from 1. CurrentIsFavorite case handles situation when there
             // is only one favorite station.
             if (mFavoriteStationCount != FAVORITE_STATION_COUNT_ONE) {
                 enableStationButtons();
             }
+        } else {
+            mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
         }
         break;
 
     case RadioServiceNotification::CurrentIsFavorite:
-        LEVEL2(LOG("CurrentIsFavorite"));
+        LOG("CurrentIsFavorite");
         if (information.canConvert(QVariant::Bool)) {
             mCurrentStationIsFavorite = information.toBool();
-            LEVEL2(LOG_FORMAT("currentIsFavorite: %d", mCurrentStationIsFavorite));
+            LOG_FORMAT("currentIsFavorite: %d", mCurrentStationIsFavorite);
             // If current station is favorite disable next/prev buttons.
             // Radio sends this information only when there is only one
             // favorite station set.
@@ -204,18 +203,15 @@
         break;
 
     case RadioServiceNotification::RadioStatus:
-        LEVEL2(LOG("RadioStatus"));
+        LOG("RadioStatus");
         if (information.canConvert(QVariant::Int)) {
             const int status = information.toInt();
             switch (status) {
             case RadioStatus::Playing:
                 LOG("Playing");
-                //handleRadioStateChange(FmRadio::StateControllingAudio);
-                //handleRadioStateChange(FmRadio::StateRunning);
                 break;
             case RadioStatus::Muted:
                 LOG("Muted");
-                //handleRadioStateChange(FmRadio::StateNotControllingAudio);
                 break;
             case RadioStatus::Seeking:
                 LEVEL2(LOG("Seeking"));
@@ -237,9 +233,10 @@
         break;
 
     case RadioServiceNotification::Frequency:
-        LEVEL2(LOG("Frequency"));
+        LOG("Frequency");
+        // TODO: Should information.toString() be checked for too many characters? What's the limit?
         if (information.canConvert(QVariant::String)) {
-            LEVEL2(LOG_FORMAT("frequency: %s", GETSTRING(information.toString())));
+            LOG_FORMAT("frequency: %s", GETSTRING(information.toString()));
             // TODO: Remove comment when localisation is working on device.
             //frequencyString = hbTrId("txt_fmradiohswidget_rad_list_l1_mhz").arg(freqString);
             bool frequencyCleared = false;
@@ -262,17 +259,17 @@
         break;
 
     case RadioServiceNotification::Name:
-        LEVEL2(LOG("Name"));
+        LOG("Name");
         handleSimilarRadioInformation(StationName, information);
         break;
 
     case RadioServiceNotification::Genre:
-        LEVEL2(LOG("Genre"));
+        LOG("Genre");
         handleSimilarRadioInformation(Pty, information);
         break;
 
     case RadioServiceNotification::RadioText:
-        LEVEL2(LOG("RadioText"));
+        LOG("RadioText");
         handleSimilarRadioInformation(RadioText, information);
         break;
 
@@ -309,12 +306,12 @@
 
     switch (state) {
     case FmRadio::StateUndefined:
-        LEVEL2(LOG("FmRadio::StateUndefined"));
+        LOG("FmRadio::StateUndefined");
         // Something went wrong. Widget should not be in this state after onInitialize().
         mFmRadioState = FmRadio::StateUndefined;
         break;
     case FmRadio::StateNotRunning:
-        LEVEL2(LOG("FmRadio::StateNotRunning"));
+        LOG("FmRadio::StateNotRunning");
         mFmRadioState = FmRadio::StateNotRunning;
         mRadioServiceClient->stopMonitoring();
         changePowerButtonOn(false);
@@ -328,7 +325,7 @@
         changeInformationAreaLayout(OneRow);
         break;
     case FmRadio::StateStarting:
-        LEVEL2(LOG("FmRadio::StateStarting"));
+        LOG("FmRadio::StateStarting");
         mFmRadioState = FmRadio::StateStarting;
         changePowerButtonOn(true);
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
@@ -337,7 +334,7 @@
         changeInformationAreaLayout(Animation);
         break;
     case FmRadio::StateRunning:
-        LEVEL2(LOG("FmRadio::StateRunning"));
+        LOG("FmRadio::StateRunning");
         mFmRadioState = FmRadio::StateRunning;
         // Stop timer if it is running because radio is now running.
         mRadioServiceClient->startMonitoring(
@@ -346,22 +343,8 @@
         enableStationButtons();
         changeInformationAreaLayout(OneRow);
         break;
-/*        
-    case FmRadio::StateControllingAudio:
-        LEVEL2(LOG("FmRadio::StateControllingAudio"));
-        mFmRadioState = FmRadio::StateControllingAudio;
-        enableStationButtons();
-        changeInRadioInformation();
-        break;
-    case FmRadio::StateNotControllingAudio:
-        LEVEL2(LOG("FmRadio::StateNotControllingAudio"));
-        mFmRadioState = FmRadio::StateNotControllingAudio;
-        enableStationButtons();
-        changeInRadioInformation();
-        break;
-*/
     case FmRadio::StateSeeking:
-        LEVEL2(LOG("FmRadio::StateSeeking"));
+        LOG("FmRadio::StateSeeking");
         mFmRadioState = FmRadio::StateSeeking;
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
         mCurrentStationIsFavorite = false;
@@ -369,7 +352,7 @@
         changeInformationAreaLayout(Animation);
         break;
     case FmRadio::StateAntennaNotConnected:
-        LEVEL2(LOG("FmRadio::StateAntennaNotConnected"));
+        LOG("FmRadio::StateAntennaNotConnected");
         mFmRadioState = FmRadio::StateAntennaNotConnected;
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
         mCurrentStationIsFavorite = false;
@@ -381,7 +364,7 @@
         changeInformationAreaLayout(OneRow);
         break;
     case FmRadio::StateClosing:
-        LEVEL2(LOG("FmRadio::StateClosing"));
+        LOG("FmRadio::StateClosing");
         mFmRadioState = FmRadio::StateClosing;
         changePowerButtonOn(false);
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
@@ -395,7 +378,7 @@
         changeInformationAreaLayout(OneRow);
         break;
     default:
-        LOG("default case at state");
+        LOG_FORMAT("default case at state. State: %d", state);
         break;
     }
 }
@@ -464,7 +447,7 @@
  */
 void RadioHsWidget::changeButtonToPressed(int hsButtonIdentifier)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD);
     buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Pressed);
 }
 
@@ -476,7 +459,7 @@
  */
 void RadioHsWidget::changeButtonToReleased(int hsButtonIdentifier)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD);
     buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Normal);
 }
 
@@ -577,8 +560,6 @@
 
 /*!
     Powering off or on the radio.
-    
-    \param isToggled Whether the button is togled (\c true) or not (\c false).
  */
 void RadioHsWidget::toggleRadioPower()
 {
@@ -607,7 +588,6 @@
     QScopedPointer<HbDocumentLoader> documentLoader(new HbDocumentLoader());
     bool loaded = false;
     documentLoader->load(docml, &loaded);
-    RADIO_ASSERT( loaded , "FMRadioHsWidget", "invalid DocML file" );
     if (loaded) {
         // Find mainLayout
         HbWidget *mainLayout = qobject_cast<HbWidget*> (
@@ -696,10 +676,6 @@
                 documentLoader->findWidget(
                     DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON));
             if (mInformationAreaBackgroundButton) {
-                // Try css for controlling the appearance.
-                //bool b = QFile::exists(CSS);
-                //bool cssLoaded = HbStyleLoader::registerFilePath(CSS);
-                //HbStyle::setItemName(mInformationAreaBackgroundButton, DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON);
                 // Use the frame background.
                 HbFrameDrawer *tunerBackgroundButtonFrameDrawer =
                     new HbFrameDrawer("qtg_fr_tuner",
@@ -780,10 +756,11 @@
 void RadioHsWidget::handleSimilarRadioInformation(
     const FmRadioInformationType informationType, const QVariant &information)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
+    // TODO: Should information.toString() be checked for too many characters? What's the limit?
     if (information.canConvert(QVariant::String) && updateRadioInformation(
         informationType, information.toString())) {
-        LEVEL2(LOG_FORMAT("informationType: %d, information: %s", informationType, GETSTRING(information)));
+        LOG_FORMAT("informationType: %d, information: %s", informationType, GETSTRING(information.toString()));
         changeInRadioInformation();
     }
 }
@@ -897,7 +874,7 @@
  */
 void RadioHsWidget::changeInformationAreaLayout(const InformationAreaLayout layout)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     mInformationLonelyRowLabel->setVisible(layout == OneRow);
     mInformationAreaTwoRowsLayout->setVisible(layout == TwoRows);
     mAnimationIcon->setVisible(layout == Animation);
@@ -910,16 +887,16 @@
  */
 void RadioHsWidget::changePowerButtonOn(const bool isPowerOn)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD);
     if (isPowerOn) {
         LEVEL2(LOG("Power on"));
-        // Temporarily set the text to clarify the action it performs.
+        // TODO: Temporarily set the text to clarify the action it performs.
         // Remove when graphics displays the difference.
         mPowerButton->setText("Off");
         buttonEvent(Power, Latched);
     } else {
         LEVEL2(LOG("Power off"));
-        // Temporarily set the text to clarify the action it performs.
+        // TODO: Temporarily set the text to clarify the action it performs.
         // Remove when graphics displays the difference.
         mPowerButton->setText("On");
         buttonEvent(Power, Normal);
@@ -931,7 +908,7 @@
  */
 void RadioHsWidget::enableStationButtons()
 {
-    LOG_METHOD_ENTER;
+    LEVEL2(LOG_METHOD_ENTER);
     if ((mFavoriteStationCount > 1) || (mFavoriteStationCount == 1
         && !mCurrentStationIsFavorite)) {
         changeButtonToEnabled(Next);
@@ -956,7 +933,7 @@
 void RadioHsWidget::defineButton(HbPushButton &target, const QString &graphicsId,
     const QStringList &suffix, const QString &icon, const QString &iconColor)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD);
     HbFrameDrawer* drawer = NULL;
 
     // First check if the drawer is already created for this push button
@@ -1004,7 +981,7 @@
 void RadioHsWidget::buttonEvent(ControlButtonIdentifier buttonId,
     const ControlButtonState state)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD);
     HbPushButton* target = NULL;
     QStringList suffix;
     QString icon;
@@ -1074,7 +1051,7 @@
  */
 void RadioHsWidget::changeButtonToDisabled(int hsButtonIdentifier)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD_ENTER);
     buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Disabled);
 }
 
@@ -1085,9 +1062,8 @@
  */
 void RadioHsWidget::changeButtonToEnabled(int hsButtonIdentifier)
 {
-    LOG_METHOD;
+    LEVEL2(LOG_METHOD_ENTER);
     changeButtonToReleased(hsButtonIdentifier);
-    //buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Normal);
 }
 
 /*!
@@ -1108,7 +1084,7 @@
     if (mProfileMonitor->isCurrentProfileOffline()) {
         // Device is in offline profile, ask the user for permission to start
         HbDeviceMessageBox box(hbTrId(
-            "txt_radiohswidget_rad_info_activate_radio_in_offline_mode_hs"),
+            "txt_fmradiohswidget_rad_info_activate_radio_in_offline_mode_hs"),
             HbMessageBox::MessageTypeQuestion);
         box.setTimeout(HbPopup::NoTimeout);
         box.exec();
--- a/radiohswidget/src/radiohswidgetprofilereader.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/src/radiohswidgetprofilereader.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -71,6 +71,9 @@
 RadioHsWidgetProfileReader::~RadioHsWidgetProfileReader()
 {
     LOG_METHOD;
+    XQSettingsKey radioRunningKey(XQSettingsKey::TargetPublishAndSubscribe,
+        KRadioPSUid, KRadioStartupKey);
+    mSettingsManager->stopMonitoring(radioRunningKey);
 }
 
 /*!
@@ -94,7 +97,7 @@
  */
 bool RadioHsWidgetProfileReader::isCurrentProfileOffline()
 {
-    LOG_METHOD;
+    LOG_METHOD_RET("%d");
     XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
         KCRUidProfileEngine.iUid, KProEngActiveProfile);
     // Read current value.
@@ -112,13 +115,7 @@
  */
 void RadioHsWidgetProfileReader::handleDeletedItem(const XQSettingsKey &key)
 {
-    LOG_METHOD;
-    // Profile information will be used for offline query.
-/*
-    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
-        == KProEngActiveProfile) {
-    }
-*/
+    LOG_METHOD_ENTER;
     if (key.uid() == KRadioPSUid && key.key() == KRadioStartupKey) {
         LOG("KRadioStartupKey deleted");
         startMonitoringRadioRunningStatus();
@@ -137,14 +134,6 @@
 {
     LOG_SLOT_CALLER;
 
-    // Profile information will be used for offline query.
-    /*
-    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
-        == KProEngActiveProfile) {
-        currentProfileStatus(value);
-    }
-    */
-    
     if (key.uid() == KRadioPSUid && key.key()
         == KRadioStartupKey) {
         LOG("KRadioStartupKey changed");
@@ -152,20 +141,6 @@
     }
 }
 
-/*
- Handling changes in profile information.
- 
- \param value
- */
-/*
-void RadioHsWidgetProfileReader::currentProfileStatus(QVariant value)
-{
-    if (value.canConvert(QVariant::Int)) {
-        emit profileChanged(value.toInt());
-    }
-}
-*/
-
 /*!
     Handling changes in radio running P&S key.
  
@@ -175,7 +150,7 @@
 void RadioHsWidgetProfileReader::radioRunningStatus(
     const QVariant &value)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     if (value.canConvert(QVariant::Int)) {
         mRadioStatus = value.toInt();
         // Notify the observer that radio is running.
--- a/radiohswidget/src/radiohswidgetradioserviceclient.cpp	Wed Jun 23 18:12:57 2010 +0300
+++ b/radiohswidget/src/radiohswidgetradioserviceclient.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -68,7 +68,7 @@
 void RadioHsWidgetRadioServiceClient::commandFmRadio(
     const RadioServiceCommand::CommandId command)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     QVariant commandArgument;
     commandArgument.setValue(static_cast<int>(command));
     FmRadio::VisibiltyAfterRequest visibility;
@@ -90,7 +90,7 @@
 void RadioHsWidgetRadioServiceClient::startMonitoring(
     FmRadio::VisibiltyAfterRequest visibility)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     createMonitorServiceRequest();
     sendMonitorRequest(visibility);
 }
@@ -100,7 +100,7 @@
  */
 void RadioHsWidgetRadioServiceClient::stopMonitoring()
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     // Delete the mRadioMonitorRequest. 
     if (mRadioMonitorRequest) {
         delete mRadioMonitorRequest;
@@ -111,6 +111,20 @@
 }
 
 /*!
+    Creates and returns RadioNotificationData.
+    This is needed because radionotificationdata.h cannot be
+    included on test code.
+ */
+QVariant RadioHsWidgetRadioServiceClient::createRadioNotificationData(int type, const QVariant& data)
+{
+    LOG_METHOD_ENTER;
+    QVariant ret;
+    ret.setValue(RadioNotificationData(type, data));
+    return ret;
+}
+
+
+/*!
     Handles request errors.
  
     \param errorCode Code of the error type.
@@ -119,8 +133,8 @@
 void RadioHsWidgetRadioServiceClient::handleError(const int errorCode,
     const QString &errorMessage)
 {
+    LOG_METHOD_ENTER;
     Q_UNUSED(errorMessage)
-    LOG_METHOD;
     LEVEL2(LOG_SLOT_CALLER);
     handleRequestError(errorCode);
 }
@@ -133,7 +147,7 @@
 void RadioHsWidgetRadioServiceClient::handleFmRadioChange(
     const QVariant &value)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     LEVEL2(LOG_SLOT_CALLER);
     // Request is not pending anymore.
     mRequestPending = false;
@@ -157,8 +171,13 @@
             RadioNotificationData notification = variant.value<RadioNotificationData>();
             // And it's type.
             const int notificationId = notification.mType;
-            // Notify the observer about the new information.
-            mParent.handleRadioInformationChange(notificationId, notification.mData);
+            // And the data
+            const QVariant notificationData = notification.mData;
+            // If the data is valid.
+            if (notificationData.isValid()) {
+                // Notify the observer about the new information.
+                mParent.handleRadioInformationChange(notificationId, notificationData);
+            }
         }
     }
 }
@@ -208,34 +227,19 @@
  */
 void RadioHsWidgetRadioServiceClient::createControlServiceRequest()
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     if (!mRadioControlRequest) {
-        // Following commented code is for debugging when changing service and interface names.
-        //QString fullInterfaceName = /*KRadioServiceName +"."+*/ RADIO_CONTROL_SERVICE;
-        /*
-        QList<XQAiwInterfaceDescriptor> list;
-        list = mApplicationManager.list(KRadioServiceName, fullInterfaceName, "");
-        XQAiwInterfaceDescriptor interfaceDescriptor;
-        foreach (XQAiwInterfaceDescriptor d, list)
-            {
-                QString in = d.interfaceName();
-                QString sn = d.serviceName();
-                if (sn == KRadioServiceName && in == fullInterfaceName) {
-                    interfaceDescriptor = d;
-                }
-            }
-        */
-        /*
-        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
-            KRadioServiceControlOperation, false);
-        */
-        
         LOG("Create request");
         mRadioControlRequest = mApplicationManager.create(
             RADIO_CONTROL_SERVICE, RADIO_CONTROL_SERVICE_OPERATION, false);
         
         if (mRadioControlRequest) {
             LOG("Request created");
+            // Connect request to handle it's error.
+            Radio::connect(mRadioControlRequest,
+                SIGNAL(requestError(int,const QString&)), this,
+                SLOT(handleError(int,const QString&)));
+            
             // Request is synchronous.
             mRadioControlRequest->setSynchronous(true);
             // Request is not embedded.
@@ -249,33 +253,13 @@
  */
 void RadioHsWidgetRadioServiceClient::createMonitorServiceRequest()
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     if (!mRadioMonitorRequest) {
         // If data is not initialized, set operation to refresh,
         // otherwise to monitor operation.
         QString operation = mDataInitialized ? RADIO_MONITOR_SERVICE_OPERATION
             : RADIO_MONITOR_SERVICE_REFRESH_OPERATION;
 
-        // Following commented code is for debugging when changing service and interface names.
-        //QString fullInterfaceName = RADIO_SERVICE +"."+ RADIO_MONITOR_SERVICE;
-        /*
-        QList<XQAiwInterfaceDescriptor> list;
-        list = mApplicationManager.list(RADIO_SERVICE, RADIO_MONITOR_SERVICE, "");
-        XQAiwInterfaceDescriptor interfaceDescriptor;
-        foreach (XQAiwInterfaceDescriptor d, list)
-            {
-                QString in = d.interfaceName();
-                QString sn = d.serviceName();
-                if (sn == RADIO_SERVICE && in == RADIO_MONITOR_SERVICE) {
-                    interfaceDescriptor = d;
-                }
-            }
-                
-        
-        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
-            operation, false);
-        */
-        
         LOG("Create request");
         mRadioMonitorRequest = mApplicationManager.create(
             RADIO_MONITOR_SERVICE, operation, false);
@@ -308,7 +292,7 @@
     const QVariant &argument,
     const FmRadio::VisibiltyAfterRequest visibility)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     if (!argument.isValid()) {
         return;
     }
@@ -328,12 +312,14 @@
     
     LOG("Send request");
     bool res = mRadioControlRequest->send();
-
+    
+    /*
     if (!res) {
         LOG("Send failed");
         int error = mRadioControlRequest->lastError();
         handleRequestError(error);
     }
+    */
 }
 
 /*!
@@ -344,7 +330,7 @@
 void RadioHsWidgetRadioServiceClient::sendMonitorRequest(
     const FmRadio::VisibiltyAfterRequest visibility)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     prepareRequestInfo(mRadioMonitorRequest, visibility);
     if (!mRequestPending) {
         LOG("Send request");
@@ -362,7 +348,7 @@
     XQAiwRequest *request,
     const FmRadio::VisibiltyAfterRequest visibility)
 {
-    LOG_METHOD;
+    LOG_METHOD_ENTER;
     XQRequestInfo info;
     if (visibility == FmRadio::VisibiltyToForeground) {
         info.setForeground(true);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqaiwinterfacedescriptor.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQAiwInterfaceDescriptor stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// User includes
+#include "xqaiwinterfacedescriptor.h"
+#include "radiologger.h"
+
+/*!
+    \class XQAiwInterfaceDescriptor
+    \brief Stub implementation of XQAiwInterfaceDescriptor for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQAiwInterfaceDescriptor::XQAiwInterfaceDescriptor()
+{
+    LOG_METHOD_ENTER;
+}
+
+XQAiwInterfaceDescriptor::~XQAiwInterfaceDescriptor()
+{
+    LOG_METHOD_ENTER;
+}
+
+bool XQAiwInterfaceDescriptor::operator==(const XQAiwInterfaceDescriptor& other) const
+{
+    LOG_METHOD_ENTER;
+    return *this == other;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqaiwinterfacedescriptor.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQAIWINTERFACEDESCRIPTOR_H
+#define XQAIWINTERFACEDESCRIPTOR_H
+
+// System includes
+#include <QObject>
+#include <QVariant>
+
+class XQAiwInterfaceDescriptor : public QObject
+{
+    Q_OBJECT
+
+public:
+    XQAiwInterfaceDescriptor();
+    ~XQAiwInterfaceDescriptor();
+    bool operator==(const XQAiwInterfaceDescriptor& other) const;
+
+};
+
+#endif // XQAIWINTERFACEDESCRIPTOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqaiwrequest.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQAiwRequest stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// System includes
+#include <QVariant>
+
+// User includes
+#include "xqaiwrequest.h"
+#include "xqrequestinfo.h"
+#include "radioservicedef.h"
+#include "radiologger.h"
+
+extern QVariantList request_mocks;
+extern int send_count;
+
+/*!
+    \class XQAiwRequest
+    \brief Stub implementation of XQAiwRequest for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQAiwRequest::XQAiwRequest(const QString &interface,
+    const QString &operation, bool isEmbedded) :
+    mOperation(operation),
+    mRequestCount(0)
+{
+    LOG_METHOD_ENTER;
+}
+
+XQAiwRequest::~XQAiwRequest()
+{
+    LOG_METHOD_ENTER;
+}
+
+static void replyRequestOk(QVariant reply)
+{
+    LOG_METHOD_ENTER;
+}
+
+void XQAiwRequest::setOperation(const QString &operation)
+{
+    LOG_METHOD_ENTER;
+    mOperation = operation;
+}
+
+void XQAiwRequest::setSynchronous(bool synchronous)
+{
+    LOG_METHOD_ENTER;
+}
+
+void XQAiwRequest::setEmbedded(bool embedded)
+{
+    LOG_METHOD_ENTER;
+}
+
+bool XQAiwRequest::send()
+{
+    LOG_METHOD_ENTER;
+    pendingRequests.append(mOperation);
+    replyAfterDelay();
+    return true;
+}
+
+void XQAiwRequest::setInfo(const XQRequestInfo &info)
+{
+    LOG_METHOD_ENTER;
+}
+
+bool XQAiwRequest::replyAfterDelay()
+{
+    LOG_METHOD;
+    QString operationStr;
+    bool ret = true;
+    if (mRequestCount < send_count) {
+        replyRequestOk((request_mocks.at(mRequestCount)).toList());
+        ret = false;
+    }
+    return ret;
+}
+
+void XQAiwRequest::replyRequestOk(const QVariantList &reply)
+{
+    LOG_METHOD_ENTER;
+    ++mRequestCount;
+    emit requestOk(reply);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqaiwrequest.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQAIWREQUEST_H
+#define XQAIWREQUEST_H
+
+// System includes
+#include <QObject>
+#include <QVariant>
+#include <QStringList>
+
+// User includes
+#include <xqrequestinfo.h>
+
+class XQAiwRequest : public QObject
+{
+    Q_OBJECT
+
+public:
+    XQAiwRequest(const QString &interface, const QString &operation, bool isEmbedded);
+    ~XQAiwRequest();
+
+    void replyRequestOk(const QVariantList &reply);
+
+public slots:
+    void setOperation(const QString &operation);
+    void setSynchronous(bool synchronous);
+    void setEmbedded(bool embedded);
+    bool send();
+    void setInfo(const XQRequestInfo &info);
+
+signals:
+    void requestOk(const QVariant& result);
+    void requestError(int errorCode, const QString& errorMessage);
+    
+private:
+    bool replyAfterDelay();
+    
+    
+private: // data
+    QString mOperation;
+    QStringList pendingRequests;
+    int mRequestCount;
+
+};
+
+#endif // XQAIWREQUEST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqapplicationmanager.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQApplicationManager stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// User includes
+#include "xqapplicationmanager.h"
+#include "xqaiwrequest.h"
+#include "radioservicedef.h"
+#include "radiologger.h"
+
+XQAiwRequest *application_manager_mock_refresh_request = new XQAiwRequest("interface", "operation", false);
+XQAiwRequest *application_manager_mock_monitor_request = new XQAiwRequest("interface", "operation2", false);
+
+/*!
+    \class XQApplicationManager
+    \brief Stub implementation of XQApplicationManager for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQApplicationManager::XQApplicationManager()
+{
+    LOG_METHOD_ENTER;
+}
+
+XQApplicationManager::~XQApplicationManager()
+{
+    LOG_METHOD_ENTER;
+}
+
+XQAiwRequest* XQApplicationManager::create(const QString& interface, const QString& operation, bool embedded)
+{
+    LOG_METHOD_ENTER;
+    if (operation.compare(RADIO_MONITOR_SERVICE_REFRESH_OPERATION) == 0) {
+        application_manager_mock_refresh_request = new XQAiwRequest(interface, operation, embedded);
+        return application_manager_mock_refresh_request;
+    } else if (operation.compare(RADIO_MONITOR_SERVICE_OPERATION) == 0) {
+        application_manager_mock_monitor_request = new XQAiwRequest(interface, operation, embedded);
+        return application_manager_mock_monitor_request;
+    }
+    return NULL; 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqapplicationmanager.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQAPPLICATIONMANAGER_H
+#define XQAPPLICATIONMANAGER_H
+
+// System includes
+#include <QObject>
+
+// User includes
+#include "xqaiwrequest.h"
+
+class XQApplicationManager : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    XQApplicationManager();
+    ~XQApplicationManager();
+    
+    XQAiwRequest* create(const QString& interface, const QString& operation, bool embedded = true);
+
+};
+
+#endif // XQAPPLICATIONMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqrequestinfo.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQRequestInfo stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// User includes
+#include "xqrequestinfo.h"
+#include "radiologger.h"
+
+/*!
+    \class XQRequestInfo
+    \brief Stub implementation of XQRequestInfo for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQRequestInfo::XQRequestInfo()
+{
+    LOG_METHOD_ENTER;
+}
+
+XQRequestInfo::~XQRequestInfo()
+{
+    LOG_METHOD_ENTER;
+}
+
+void XQRequestInfo::setForeground(bool on)
+{
+    LOG_METHOD_ENTER;
+}
+
+void XQRequestInfo::setBackground(bool on)
+{
+    LOG_METHOD_ENTER;
+}
+
+void XQRequestInfo::setInfo(const QString &key, const QVariant &value)
+{
+    LOG_METHOD_ENTER;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqrequestinfo.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQREQUESTINFO_H
+#define XQREQUESTINFO_H
+
+// System includes
+#include <QObject>
+#include <QVariant>
+
+class XQRequestInfo : public QObject
+{
+    Q_OBJECT
+
+public:
+    XQRequestInfo();
+    ~XQRequestInfo();
+    
+    void setForeground(bool on);
+    void setBackground(bool on);
+    void setInfo(const QString &key, const QVariant &value);
+
+public slots:
+
+signals:
+
+};
+
+#endif // XQREQUESTINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqsettingskey.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQSettingsKey stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// User includes
+#include "xqsettingskey.h"
+#include "radiologger.h"
+
+/*!
+    \class XQSettingsKey
+    \brief Stub implementation of XQSettingsKey for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQSettingsKey::XQSettingsKey(XQSettingsKey::Target target, long int uid,
+    unsigned long int key)
+{
+    LOG_METHOD_ENTER;
+    m_target = target;
+    m_uid = uid;
+    m_key = key;
+}
+
+XQSettingsKey::~XQSettingsKey()
+{
+    LOG_METHOD_ENTER;
+}
+
+XQSettingsKey::Target XQSettingsKey::target() const
+{
+    LOG_METHOD_ENTER;
+    return m_target;
+}
+
+long int XQSettingsKey::uid() const
+{
+    LOG_METHOD_ENTER;
+    return m_uid;
+}
+
+unsigned long int XQSettingsKey::key() const
+{
+    LOG_METHOD_ENTER;
+    return m_key;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqsettingskey.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQSETTINGSKEY_H
+#define XQSETTINGSKEY_H
+
+class XQSettingsKey
+{
+public:
+    enum Target
+    {
+        TargetCentralRepository = 0,
+        TargetPublishAndSubscribe
+    };
+
+    XQSettingsKey(XQSettingsKey::Target target, long int uid, unsigned long int key);
+    ~XQSettingsKey();
+
+    XQSettingsKey::Target target() const;
+    long int uid() const;
+    unsigned long int key() const;
+
+protected:
+    XQSettingsKey::Target m_target;
+    long int m_uid;
+    unsigned long int m_key;
+};
+
+#endif // XQSETTINGSKEY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqsettingsmanager.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  XQSettingsManager stub for FM Radio home screen widget
+*               unit testing.
+*
+*/
+
+// User includes
+#include "xqsettingsmanager.h"
+#include "radiologger.h"
+
+extern QVariant settings_manager_mock_return_profile;
+extern QVariant settings_manager_mock_return_2nd_profile;
+extern bool settings_manager_mock_bool_return;
+
+/*!
+    \class XQSettingsManager
+    \brief Stub implementation of XQSettingsManager for unit testing
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+XQSettingsManager::XQSettingsManager(QObject* parent) : QObject(parent)
+{
+    LOG_METHOD_ENTER;
+}
+
+XQSettingsManager::~XQSettingsManager()
+{
+    LOG_METHOD_ENTER;
+}
+
+QVariant XQSettingsManager::readItemValue(const XQSettingsKey& key, XQSettingsManager::Type type)
+{
+    LOG_METHOD_ENTER;
+    Q_UNUSED(key);
+    Q_UNUSED(type);
+    return settings_manager_mock_return_profile;
+}
+
+bool XQSettingsManager::startMonitoring(const XQSettingsKey& key, XQSettingsManager::Type type)
+{
+    LOG_METHOD_ENTER;
+    // Set the 2nd startup mode.
+    settings_manager_mock_return_profile = settings_manager_mock_return_2nd_profile;
+    emit valueChanged(key, type);
+    return settings_manager_mock_bool_return;
+}
+
+bool XQSettingsManager::stopMonitoring(const XQSettingsKey& key)
+{
+    return true;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/stub/xqsettingsmanager.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub for FM Radio home screen widget unit testing.
+*
+*/
+
+#ifndef XQSETTINGSMANAGER_H
+#define XQSETTINGSMANAGER_H
+
+// System includes
+#include <QObject>
+#include <QVariant>
+
+// Forward declarations
+class XQSettingsKey;
+
+class XQSettingsManager : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    enum Type
+    {
+        TypeVariant = 0,
+        TypeInt,
+        TypeDouble,
+        TypeString,
+        TypeByteArray
+    };
+
+    enum Error 
+    {
+        NoError = 0,
+        OutOfMemoryError,
+        NotFoundError,
+        AlreadyExistsError,
+        PermissionDeniedError,
+        BadTypeError,
+        NotSupportedError,
+        UnknownError = -1
+    };
+    
+    XQSettingsManager(QObject* parent = 0);
+    ~XQSettingsManager();
+
+    QVariant readItemValue(const XQSettingsKey& key, XQSettingsManager::Type type = XQSettingsManager::TypeVariant);
+    bool startMonitoring(const XQSettingsKey& key, XQSettingsManager::Type type = XQSettingsManager::TypeVariant);
+    bool stopMonitoring(const XQSettingsKey& key);
+    
+signals:
+    void valueChanged(const XQSettingsKey& key, const QVariant& value);
+    void itemDeleted(const XQSettingsKey& key);
+
+};
+
+#endif // XQSETTINGSMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/buildflags.pri	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,82 @@
+#
+# 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:
+#
+
+# ##########################################################
+# Start of Flag definitions
+# Add or remove comments to disable or enable the features
+# ##########################################################
+
+# ##########################################################
+# Start of Logging flag definitions
+# ##########################################################
+
+# Full logging flag that enables the full logging including also timestamps
+# Enabled by default in debug builds
+# CONFIG(debug, debug|release) : LOGGING_FLAGS += LOGGING_ENABLED
+
+# Uncomment to enable full logging in release builds
+# LOGGING_FLAGS *= LOGGING_ENABLED
+
+# Timestamp logging flag that enables only timestamp logging
+# LOGGING_FLAGS += TIMESTAMP_LOGGING_ENABLED
+
+# Combines Ui and Engine logs by feeding UI traces to the engine logger
+# LOGGING_FLAGS += COMBINE_WITH_ENGINE_LOGGER
+
+# Logging level
+# 1 - Normal level
+# 2 - More verbose level
+# 3 - Most verbose level
+LOGGING_FLAGS += LOGGING_LEVEL=1
+
+# Select which radio component is being logged
+# 1 - Radio application
+# 2 - Radio homescreen widget
+LOGGING_FLAGS += LOGGED_COMPONENT=2
+
+contains(LOGGING_FLAGS, TIMESTAMP_LOGGING_ENABLED)|contains(LOGGING_FLAGS, LOGGING_ENABLED) {
+
+    # Writes debug prints to file if enabled
+    #LOGGING_FLAGS += TRACE_TO_FILE
+
+    # Settings for the log file name
+    symbian:contains(LOGGING_FLAGS, TRACE_TO_FILE) {
+        LOGGING_FLAGS += \"TRACE_OUTPUT_FILE=\\\"c:/logs/radio/radiohswidget.txt\\\"\"
+        LOGGING_FLAGS += FILTER_BY_LOGMARKER=true
+    }
+}
+
+# Method for testing signal-slot connections
+# 1 - Log failed connection
+# 2 - Log failed connection and halt debugger
+LOGGING_FLAGS += CONNECT_TEST_MODE=2
+
+# Logging is always enabled in Win32 environment
+win32:LOGGING_FLAGS *= LOGGING_ENABLED
+
+DEFINES += $$LOGGING_FLAGS
+
+# ##########################################################
+# End of Flag definitions
+# ##########################################################
+
+# $$_PRO_FILE_PWD_ points to the directory of the pro file
+MOC_DIR         = $$_PRO_FILE_PWD_/tmp
+RCC_DIR         = $$_PRO_FILE_PWD_/tmp
+OBJECTS_DIR     = $$_PRO_FILE_PWD_/tmp
+UI_DIR          = $$_PRO_FILE_PWD_/tmp
+UI_HEADERS_DIR  = $$_PRO_FILE_PWD_/tmp
+UI_SOURCES_DIR  = $$_PRO_FILE_PWD_/tmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/inc/radiohswidget.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  FM Radio home screen widget unit tests.
+*
+*/
+
+#ifndef T_RADIOHSWIDGETSTUB_H
+#define T_RADIOHSWIDGETSTUB_H
+
+// INCLUDES
+#include <QObject>
+#include <QVariant>
+#include <QList>
+
+/*!
+    \struct ReceivedInfo
+    \brief Helper to store received information on unit tests.
+*/
+struct ReceivedInfo {
+    /*! Stores the type of received information. */
+    int informationType;
+    /*! Stores the actual data of received information. */
+    QVariant information;
+};
+
+/*!
+    \namespace FmRadio
+    \brief Wraps enumerators for radio state and service request visibility. 
+ */
+namespace FmRadio
+{
+    /*! Enum for radio application states. */
+    enum State
+    {
+        StateUndefined,
+        StateNotRunning,
+        StateStarting,
+        StateRunning,
+        StateSeeking,
+        StateAntennaNotConnected,
+        StateClosing
+    };
+    
+    /*! Enum for controlling the visibility of the radio application. */
+    enum VisibiltyAfterRequest
+    {
+        VisibiltyDoNotChange,
+        VisibiltyToForeground,
+        VisibiltyToBackground
+    };
+
+}
+
+class RadioHsWidget : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    RadioHsWidget();
+    ~RadioHsWidget();
+
+    void handleRadioInformationChange(const int informationType,
+        const QVariant &information);
+
+    void handleRadioStateChange(const QVariant &value);
+    
+    ReceivedInfo receivedInformation();
+    int receivedInformationCount();
+
+    void reset();
+
+private: // data
+    
+    /*! Stores received information. Correctness of
+        RadioHsWidgetRadioServiceClient mediated information is checked from here.
+    */
+    QList<ReceivedInfo> mReceivedInformation;
+    
+};
+
+#endif // T_RADIOHSWIDGETSTUB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/inc/t_radiohswidget.h	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 T_RADIOHSWIDGET_H_
+#define T_RADIOHSWIDGET_H_
+
+
+// System includes
+#include <QtTest/QtTest>
+
+// User includes
+#include "radiohswidget.h"
+#include "radiohswidgetprofilereader.h"
+#include "radiohswidgetradioserviceclient.h"
+
+/*!
+    \struct SendInfo
+    \brief Helper to store send information on unit tests.
+*/
+struct SendInfo {
+    /*! Stores the type of information send. */
+    int informationType;
+    /*! Stores the information to send. */
+    QVariant information;
+    /*! Stores the actual data of information send. */
+    QVariant data;
+};
+
+
+class TestRadioHsWidget : public QObject
+{
+    Q_OBJECT    
+    
+public:
+
+    TestRadioHsWidget();
+    ~TestRadioHsWidget();    
+
+public slots:
+    
+private slots:
+    // test framework called slots 
+    void initTestCase();
+    void init();
+    void cleanup();
+    void cleanupTestCase();
+    void offlineModeTest();
+    void validReplies();
+    void invalidReplies();
+    
+private:
+    void createSendInfo(int informationType, const QVariant information);
+    void verifyReceivedInformation(int informationType,
+        const QVariant &receivedInformation, const QVariant &sendInformation);
+    
+private: // Data
+    /*! Stores RadioHsWidget stub. */
+    QScopedPointer<RadioHsWidget> mRadioHsWidgetStub;
+    /*! Stores RadioHsWidgetProfileReader. */
+    QScopedPointer<RadioHsWidgetProfileReader> mProfileReader;
+    /*! Stores RadioHsWidgetRadioServiceClient. */
+    QScopedPointer<RadioHsWidgetRadioServiceClient> mServiceClient;
+    
+    /*! Stores refresh request mock. */
+    //XQAiwRequest *application_manager_mock_refresh_request;
+    
+    /*! Stores send information. */
+    QList<SendInfo> mSendInfos;
+};
+
+#endif /* T_RADIOHSWIDGET_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/src/radiohswidget.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  FM Radio home screen widget
+*
+*/
+
+// User includes
+#include "radiohswidget.h"
+#include "radiologger.h"
+
+// This is defined in t_radiohswidget.cpp
+extern int EMPTY_REPLY;
+
+/*!
+    \class RadioHsWidget
+    \brief Stub implementation of FM Radio home screen widget for unit
+    testing.
+
+    RadioHsWidget implements needed functions for the FM Radio home screen
+    widget unit tests.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constrcutor.
+ */
+RadioHsWidget::RadioHsWidget()
+{
+    LOG_METHOD;
+}
+
+/*!
+    Destructor.
+ */
+RadioHsWidget::~RadioHsWidget()
+{
+    LOG_METHOD;
+}
+
+/*!
+    Handles changes in FM Radio information.
+
+    \param informationType Type of changed information.
+    \param information Actual information.
+ */
+void RadioHsWidget::handleRadioInformationChange(const int informationType,
+        const QVariant &information)
+{
+    LOG_METHOD;
+    if (informationType != EMPTY_REPLY) {
+        ReceivedInfo info;
+        info.informationType = informationType;
+        info.information = information;
+        mReceivedInformation.append(info);
+    }
+}
+
+/*!
+    Handles changes in FM Radio state.
+
+    \param value New state of the radio application.
+*/
+void RadioHsWidget::handleRadioStateChange(const QVariant &value)
+{
+    LOG_METHOD;
+    Q_UNUSED(value);
+}
+
+/*!
+    Returns the last received information and removes it from the list.
+*/
+ReceivedInfo RadioHsWidget::receivedInformation()
+{
+    LOG_METHOD;
+    ReceivedInfo ret;
+    if (!mReceivedInformation.isEmpty()) {
+        ret = mReceivedInformation.takeLast();
+    }
+    return ret;
+}
+/*!
+    Returns the count of received information.
+*/
+int RadioHsWidget::receivedInformationCount()
+{
+    return mReceivedInformation.count();
+}
+
+/*!
+    Clears the received info list.
+*/
+void RadioHsWidget::reset()
+{
+    mReceivedInformation.clear();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/src/t_radiohswidget.cpp	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,405 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+// System includes
+#include <QVariant>
+
+// User Includes
+#include "t_radiohswidget.h"
+#include "xqsettingsmanager.h"
+#include "xqapplicationmanager.h"
+#include "xqaiwrequest.h"
+#include "xqaiwinterfacedescriptor.h"
+#include "radioservicedef.h"
+#include "radiologger.h"
+
+// Constants
+/**
+* From ProfileEngineSDKCRKeys.h
+* The id of the currently active profile, integer value.
+* Possible values:
+*
+* 0 = General profile (default value)<br>
+* 1 = Silent profile<br>
+* 2 = Meeting profile<br>
+* 3 = Outdoor profile<br>
+* 4 = Pager profile<br>
+* 5 = Off-line profile<br>
+* 6 = Drive profile<br>
+* 30-49 = User-created profiles<br>
+**/
+const int PROFILE_GENERAL(0); 
+const int PROFILE_SILENT(1); 
+const int PROFILE_MEETING(2); 
+const int PROFILE_OUTDOOR(3); 
+const int PROFILE_PAGER(4); 
+const int PROFILE_OFFLINE(5); 
+const int PROFILE_DRIVE(6); 
+const int PROFILE_USER_CREATED(35);
+
+/** Requests are not embedded. */
+const bool EMBEDDED_REQUEST(false);
+
+/** Last request should be answered with empty reply. */
+int EMPTY_REPLY(-5);
+
+/** Test values for favorite station count. */
+const int FAVORITE_STATION_COUNT_INVALID_TOO_LOW1(-56);
+const int FAVORITE_STATION_COUNT_INVALID_TOO_LOW2(-1);
+const int FAVORITE_STATION_COUNT_VALID_LOWER_BOUNDARY(0);
+const int FAVORITE_STATION_COUNT_VALID1(1);
+const int FAVORITE_STATION_COUNT_VALID2(2);
+const int FAVORITE_STATION_COUNT_VALID3(3);
+const int FAVORITE_STATION_COUNT_VALID4(9);
+const int FAVORITE_STATION_COUNT_VALID5(78);
+const int FAVORITE_STATION_COUNT_VALID_UPPER_BOUNDARY(100);
+const int FAVORITE_STATION_COUNT_INVALID_TOO_HIGH1(101);
+const int FAVORITE_STATION_COUNT_INVALID_TOO_HIGH2(1256);
+
+/** Test values for textual information. */
+const QString TEST_FREQUENCY("99.9");
+const QString TEST_NAME("Radio Test");
+const QString TEST_GENRE("Test GenRe");
+const QString TEST_RADIO_TEXT("Test RDS");
+const QString TEST_DYNAMIC_PSNAME("Dynamic PS Name test");
+const QString TEST_EMPTY_STRING("");
+const QString TEST_INVALID_STRING;
+/** This test string contains 1000 characters. */
+const QString TEST_TOO_LONG_STRING("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
+
+/** Test values for service notification types. */
+const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW1(-357);
+const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW2(-1);
+const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW3(0);
+const int RADIO_SERVICE_NOTIFICATION_ID_VALID_LOWER_BOUNDARY(1);
+const int RADIO_SERVICE_NOTIFICATION_ID_VALID_UPPER_BOUNDARY(8);
+const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH1(9);
+const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH2(57982);
+const int RADIO_STATUS_INVALID_TOO_LOW1(-581);
+const int RADIO_STATUS_INVALID_TOO_LOW2(-1);
+const int RADIO_STATUS_VALID_LOWER_BOUNDARY(0);
+const int RADIO_STATUS_VALID_UPPER_BOUNDARY(5);
+const int RADIO_STATUS_INVALID_TOO_HIGH1(6);
+const int RADIO_STATUS_INVALID_TOO_HIGH2(456);
+
+/** Mock returns for settings manager stub. */
+QVariant settings_manager_mock_return_profile;
+QVariant settings_manager_mock_return_2nd_profile;
+bool settings_manager_mock_bool_return;
+
+/** These request are defined in stub xqapplicationmanager.cpp. */
+extern XQAiwRequest *application_manager_mock_refresh_request;
+extern XQAiwRequest *application_manager_mock_monitor_request;
+
+/** List for request mocks. */
+QVariantList request_mocks;
+/** Amount of requests send. */
+int send_count;
+
+
+/*!
+    \class TestRadioHsWidget
+    \brief Unit testing for FM Radio hs widget.
+
+    TestRadioHsWidget implements needed functions for the FM Radio home screen
+    widget unit tests.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Main function.
+    
+    There's been problems with QTEST_MAIN macro, so main function is defined
+    here.
+*/
+int main(int /* argc*/, char *argv[])
+{
+    LOG_METHOD_ENTER;
+    TestRadioHsWidget tv;
+
+    char *pass[3];
+    pass[0] = argv[0];
+    pass[1] = "-o";
+    pass[2] = "c:\\data\\testradiohswidget.txt";
+    
+    int res = QTest::qExec(&tv, 3, pass);
+
+    return res;
+}
+
+/*!
+    Constructor.
+ */
+TestRadioHsWidget::TestRadioHsWidget()
+{
+    LOG_METHOD_ENTER;
+}
+
+
+/*!
+    Destructor.
+ */
+TestRadioHsWidget::~TestRadioHsWidget()
+{
+    LOG_METHOD_ENTER;
+}
+
+/*!
+    Called before each testfunction is executed.
+ */
+void TestRadioHsWidget::init()
+{
+    LOG_METHOD_ENTER;
+    settings_manager_mock_return_profile = PROFILE_GENERAL;
+    request_mocks.clear();
+    mSendInfos.clear();
+    send_count = -1;
+    mRadioHsWidgetStub.data()->reset();
+}
+
+/*!
+    Called after every testfunction.
+ */
+void TestRadioHsWidget::cleanup()
+{
+    LOG_METHOD_ENTER;
+}
+
+/*!
+    Called before the first testfunction is executed
+ */
+void TestRadioHsWidget::initTestCase()
+{
+    LOG_METHOD_ENTER;
+    mRadioHsWidgetStub.reset(new RadioHsWidget());
+    QVERIFY(mRadioHsWidgetStub);
+    mProfileReader.reset(new RadioHsWidgetProfileReader(mRadioHsWidgetStub.data()));
+    QVERIFY(mProfileReader);
+    mServiceClient.reset(new RadioHsWidgetRadioServiceClient(mRadioHsWidgetStub.data()));
+    QVERIFY(mServiceClient);
+}
+
+/*!
+    Called after the last testfunction was executed.
+ */
+void TestRadioHsWidget::cleanupTestCase()
+{
+    LOG_METHOD_ENTER;
+}
+
+/*!
+    Tests RadioHsWidgetProfileReader and it's isCurrentProfileOffline()
+    function.
+ */
+void TestRadioHsWidget::offlineModeTest()
+{
+    LOG_METHOD;
+    settings_manager_mock_return_profile = PROFILE_GENERAL;
+    bool isOffline = mProfileReader.data()->isCurrentProfileOffline();
+    QVERIFY2(( isOffline == false ), "FmRadioHsWidget:RadioHsWidget profile is offline");
+    settings_manager_mock_return_profile = PROFILE_OFFLINE;
+    isOffline = mProfileReader.data()->isCurrentProfileOffline();
+    QVERIFY2(( isOffline == true ), "FmRadioHsWidget:RadioHsWidget profile is not offline");
+    settings_manager_mock_return_profile = PROFILE_USER_CREATED;
+    isOffline = mProfileReader.data()->isCurrentProfileOffline();
+    QVERIFY2(( isOffline == false ), "FmRadioHsWidget:RadioHsWidget profile is offline");
+}
+
+/*!
+    Tests RadioHsWidgetRadioServiceClient class and it's ability to receive
+    and forward valid information.
+ */
+void TestRadioHsWidget::validReplies()
+{
+    LOG_METHOD;
+    // Replies that should be ok.
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID_LOWER_BOUNDARY));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID1));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID2));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID3));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID4));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID5));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID_UPPER_BOUNDARY));
+    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant(true));
+    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant(false));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::UnSpecified));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Playing));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Muted));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Seeking));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::NoAntenna));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::PoweringOff));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_VALID_LOWER_BOUNDARY));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_VALID_UPPER_BOUNDARY));
+    createSendInfo(RadioServiceNotification::Frequency, QVariant(TEST_FREQUENCY));
+    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_NAME));
+    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RadioServiceNotification::Genre, QVariant(TEST_GENRE));
+    createSendInfo(RadioServiceNotification::RadioText, QVariant(TEST_RADIO_TEXT));
+    createSendInfo(RadioServiceNotification::DynamicPS, QVariant(TEST_DYNAMIC_PSNAME));
+    // Empty reply should be last to put RServiceClient to make an request, which is not replied. 
+    createSendInfo(EMPTY_REPLY, QVariant(EMPTY_REPLY));
+
+    send_count = mSendInfos.count();
+    
+    mServiceClient.data()->startMonitoring(FmRadio::VisibiltyToBackground);
+    mServiceClient.data()->stopMonitoring();
+    
+    int receivedCount = mRadioHsWidgetStub.data()->receivedInformationCount();
+    QVERIFY2((receivedCount == send_count - 1), "Send and received counts doesn't match");
+    
+    ReceivedInfo temp;
+    for (int i = 0; i < send_count - 1; i++) {
+        temp = mRadioHsWidgetStub.data()->receivedInformation();
+        QVERIFY(temp.informationType == mSendInfos.at(i).informationType);
+        verifyReceivedInformation(temp.informationType, temp.information, mSendInfos.at(i).information);
+    }
+}
+
+/*!
+    Tests RadioHsWidgetRadioServiceClient class and it's ability to receive
+    and forward invalid information.
+ */
+void TestRadioHsWidget::invalidReplies()
+{
+    LOG_METHOD;
+    QList<int> skipSendInfo;
+    // Replies that should not be ok.
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_LOW1));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_LOW2));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_HIGH1));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_HIGH2));
+    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_LOW1));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_LOW1));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_HIGH1));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_HIGH2));
+    createSendInfo(RadioServiceNotification::RadioStatus, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::Frequency, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_INVALID_STRING));
+    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_TOO_LONG_STRING));
+    createSendInfo(RadioServiceNotification::Name, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::Genre, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::RadioText, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    createSendInfo(RadioServiceNotification::DynamicPS, QVariant());
+    skipSendInfo.append(request_mocks.count() - 1);
+    // Replies that should generate a warning.
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_VALID_LOWER_BOUNDARY, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_VALID_UPPER_BOUNDARY, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW1, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW2, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW3, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH1, QVariant(TEST_EMPTY_STRING));
+    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH2, QVariant(TEST_EMPTY_STRING));
+    // Empty reply should be last to put RServiceClient to make an request, which is not replied. 
+    createSendInfo(EMPTY_REPLY, QVariant(EMPTY_REPLY));
+    
+    send_count = mSendInfos.count();
+    
+    mServiceClient.data()->startMonitoring(FmRadio::VisibiltyToBackground);
+    mServiceClient.data()->stopMonitoring();
+    
+    int receivedCount = mRadioHsWidgetStub.data()->receivedInformationCount();
+    int skippedCount = skipSendInfo.count();
+    QVERIFY2((receivedCount == send_count - skippedCount - 1), "Send and received counts doesn't match");
+    
+    ReceivedInfo temp;
+    for (int i = 0; i < send_count - 1; i++) {
+        if (skipSendInfo.contains(i)) {
+            // Skip verification for information that was filtered in
+            // RadioHsWidgetRadioServiceClient.
+            continue;
+        }
+        temp = mRadioHsWidgetStub.data()->receivedInformation();
+        QVERIFY(temp.informationType == mSendInfos.at(i).informationType);
+        verifyReceivedInformation(temp.informationType, temp.information, mSendInfos.at(i).information);
+    }
+}
+
+/*!
+    Helper function to store send information and append it to a request
+    mocks. 
+ */
+void TestRadioHsWidget::createSendInfo(int informationType, const QVariant information)
+{
+    SendInfo info;
+    QVariantList notificationList;
+    
+    info.informationType = informationType;
+    info.information = information;
+    info.data = QVariant(mServiceClient.data()->
+        createRadioNotificationData(
+            info.informationType,
+            info.information
+            ));
+    
+    mSendInfos.append(info);
+
+    notificationList.append(info.data);
+    request_mocks.append(QVariant(notificationList));
+}
+
+/*!
+    Helper function to verify receved information.
+ */
+void TestRadioHsWidget::verifyReceivedInformation(int informationType,
+    const QVariant &receivedInformation, const QVariant &sendInformation)
+{
+    switch (informationType) {
+    case RadioServiceNotification::CurrentIsFavorite:
+        QVERIFY(receivedInformation.canConvert(QVariant::Bool));
+        QCOMPARE(receivedInformation.toBool(), sendInformation.toBool());
+        break;
+    case RadioServiceNotification::FavoriteCount:
+        // Fall through because of similar handling
+    case RadioServiceNotification::RadioStatus:
+        QVERIFY(receivedInformation.canConvert(QVariant::Int));
+        QCOMPARE(receivedInformation.toInt(), sendInformation.toInt());
+        break;
+    case RadioServiceNotification::Frequency:
+        // Fall through because of similar type of information and thus
+        // similar handling
+    case RadioServiceNotification::Name:
+        // Fall through because of similar type of information and thus
+        // similar handling
+    case RadioServiceNotification::Genre:
+        // Fall through because of similar type of information and thus
+        // similar handling
+    case RadioServiceNotification::RadioText:
+        // Fall through because of similar type of information and thus
+        // similar handling
+    case RadioServiceNotification::DynamicPS:
+        QVERIFY(receivedInformation.canConvert(QVariant::String));
+        QCOMPARE(receivedInformation.toString(), sendInformation.toString());
+        break;
+    default:
+        QWARN("Default case, shouldn't be here except if specifically testing RadioServiceNotification id out of bounds.");
+        QVERIFY(receivedInformation.canConvert(QVariant::String));
+        QCOMPARE(receivedInformation.toString(), sendInformation.toString());
+        break;
+    }
+}
+
+//QTEST_MAIN(t_radiohswidget)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/tsrc/t_radiohswidget.pro	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+TARGET = t_radiohswidget
+
+DEFINES -= XQSETTINGSMANAGER_LIBRARY
+DEFINES += XQSETTINGSMANAGER_NO_LIBRARY
+DEFINES -= XQSERVICE_EXPORT
+DEFINES += XQ_BUILD_XQSERVICE_LIB
+DEFINES -= XQSERVICEUTIL_EXPORT
+DEFINES += XQ_BUILD_XQSERVICEUTIL_LIB
+
+symbian: {
+    TARGET.CAPABILITY = All -TCB -DRM
+    CONFIG -= hb
+    MMP_RULES += SMPSAFE
+}
+
+INCLUDEPATH += ../stub
+INCLUDEPATH += ../../common
+
+QT += core
+QT += testlib
+
+CONFIG += qtestlib
+
+HEADERS += inc/t_radiohswidget.h
+HEADERS += inc/radiohswidget.h
+HEADERS += ../stub/xqsettingsmanager.h
+HEADERS += ../stub/xqsettingskey.h
+HEADERS += ../stub/xqapplicationmanager.h
+HEADERS += ../stub/xqaiwrequest.h
+HEADERS += ../stub/xqrequestinfo.h
+HEADERS += ../stub/xqaiwinterfacedescriptor.h
+HEADERS += ../inc/radiohswidgetprofilereader.h
+HEADERS += ../inc/radiohswidgetradioserviceclient.h
+
+SOURCES += src/t_radiohswidget.cpp
+SOURCES += src/radiohswidget.cpp
+SOURCES += ../stub/xqsettingsmanager.cpp
+SOURCES += ../stub/xqsettingskey.cpp
+SOURCES += ../stub/xqapplicationmanager.cpp
+SOURCES += ../stub/xqaiwrequest.cpp
+SOURCES += ../stub/xqrequestinfo.cpp
+SOURCES += ../stub/xqaiwinterfacedescriptor.cpp
+SOURCES += ../src/radiohswidgetprofilereader.cpp
+SOURCES += ../src/radiohswidgetradioserviceclient.cpp
+SOURCES += ../../common/radiologger.cpp
+
+include(buildflags.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/bld.inf	Tue Jul 06 14:16:27 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* 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_MMPFILES
+
+PRJ_TESTMMPFILES
+#include "../radioengine/utils/stub/group/bld.inf"
+#include "../radioengine/settings/stub/group/bld.inf"
+#include "../radioengine/engine/stub/group/bld.inf"
+#include "../radioengine/settings/tsrc/group/bld.inf"