201035
authorhgs
Fri, 03 Sep 2010 12:25:04 +0300
changeset 47 74b7c6e79031
parent 44 0a3ad94fc71c
child 51 bbebb0235466
201035
common/radioservicedef.h
package_definition.xml
package_map.xml
radioapp/bwins/fmradiouiengineu.def
radioapp/eabi/fmradiouiengineu.def
radioapp/radiopresetstorage/tsrc/inc/t_radiopresetstorage.h
radioapp/radiopresetstorage/tsrc/inc/trace.h
radioapp/radiopresetstorage/tsrc/inc/traceconfiguration.hrh
radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp
radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro
radioapp/radiouiengine/inc/radiohistorymodel.h
radioapp/radiouiengine/inc/radiomonitorservice.h
radioapp/radiouiengine/inc/radiostationmodel.h
radioapp/radiouiengine/inc/radiostationmodel_p.h
radioapp/radiouiengine/src/radiocontrolservice.cpp
radioapp/radiouiengine/src/radiomonitorservice.cpp
radioapp/radiouiengine/src/radiostation.cpp
radioapp/radiouiengine/src/radiostationmodel.cpp
radioapp/radiouiengine/src/radiostationmodel_p.cpp
radioapp/radiouiengine/tsrc/inc/t_radiostation.h
radioapp/radiouiengine/tsrc/inc/trace.h
radioapp/radiouiengine/tsrc/inc/traceconfiguration.hrh
radioapp/radiouiengine/tsrc/src/t_radiostation.cpp
radioapp/radiouiengine/tsrc/t_radiouiengine.pro
radioapp/radiowidgets/inc/radiostationcarousel.h
radioapp/radiowidgets/res/layout/mainview.docml
radioapp/radiowidgets/src/radiofrequencyscanner.cpp
radioapp/radiowidgets/src/radiofrequencystrip.cpp
radioapp/radiowidgets/src/radiofrequencystripbase.cpp
radioapp/radiowidgets/src/radiostationcarousel.cpp
radioapp/radiowidgets/src/radiowindow.cpp
radioengine/engine/src/cradioengineimp.cpp
radiohswidget/inc/radiohswidget.h
radiohswidget/locales/compile_ts.bat
radiohswidget/locales/fmradiohswidget.qm
radiohswidget/locales/fmradiohswidget.ts
radiohswidget/locales/radiohswidget.qm
radiohswidget/locales/radiohswidget.ts
radiohswidget/radiohswidget_exports_to_rom.pri
radiohswidget/resource/fmradiohswidget.manifest
radiohswidget/rom/fmradiohswidget.iby
radiohswidget/rom/fmradiohswidget_resources.iby
radiohswidget/src/radiohswidget.cpp
rom/fmradio.iby
--- a/common/radioservicedef.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/common/radioservicedef.h	Fri Sep 03 12:25:04 2010 +0300
@@ -41,6 +41,8 @@
         PowerOff,
         Previous,
         Next,
+        PreviousFavorite,
+        NextFavorite,
         SeekUp,
         SeekDown,
         Foreground,
@@ -54,6 +56,7 @@
 {
     enum Type {
         FavoriteCount = 1,
+        LocalCount,
         CurrentIsFavorite,
         RadioStatus,
         Frequency,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Fri Sep 03 12:25:04 2010 +0300
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+  <package id="radio" name="Radio Apps" levels="engine plugin ui">
+    <collection id="radioengine" name="Radio Engine" level="engine">
+      <component id="radioengineutils" filter="s60" name="Radio Engine Utils" introduced="^4">
+        <unit bldFile="radioengine/utils/group"/>
+      </component>
+      <component id="radioenginesettings" filter="s60" name="Radio Engine Settings" introduced="^4">
+        <unit bldFile="radioengine/settings/group"/>
+      </component>
+      <component id="radioengine_engine" filter="s60" name="Radio Engine" introduced="^4">
+        <unit bldFile="radioengine/engine/group"/>
+      </component>
+    </collection>
+    <collection id="radioapp" name="Radio App" level="ui">
+      <component id="radioenginewrapper" filter="s60" name="Radio Engine Wrapper" introduced="^4">
+        <unit bldFile="radioapp/radioenginewrapper" qt:proFile="radioenginewrapper.pro"/>
+      </component>
+      <component id="radiopresetstorage" filter="s60" name="Radio Preset Storage" introduced="^4">
+        <unit bldFile="radioapp/radiopresetstorage" qt:proFile="radiopresetstorage.pro"/>
+      </component>
+      <component id="radiouiengine" filter="s60" name="Radio UI Engine" introduced="^4">
+        <unit bldFile="radioapp/radiouiengine" qt:proFile="radiouiengine.pro"/>
+      </component>
+      <component id="radiowidgets" filter="s60" name="Radio Widgets" introduced="^4">
+        <unit bldFile="radioapp/radiowidgets" qt:proFile="radiowidgets.pro"/>
+      </component>
+      <component id="radioapplication" filter="s60" name="Radio Application" introduced="^4">
+        <unit bldFile="radioapp/radioapplication" qt:proFile="radioapplication.pro"/>
+      </component>
+      <component id="radio_rom" filter="s60" name="Radio ROM" introduced="^4">
+        <unit bldFile="rom"/>
+      </component>
+    </collection>
+    <collection id="radiohswidget" name="Radio Homescreen Widget" level="plugin">
+		<!-- collection is really a component. Move down a directory -->
+      <component id="radiohswidget_build" filter="s60" name="Radio HS Widget Build" introduced="^4">
+        <unit bldFile="radiohswidget" qt:proFile="radiohswidget.pro"/>
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Fri Sep 03 12:25:04 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="app"/>
--- a/radioapp/bwins/fmradiouiengineu.def	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/bwins/fmradiouiengineu.def	Fri Sep 03 12:25:04 2010 +0300
@@ -71,185 +71,186 @@
 	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 70 NONAME ; bool RadioUiEngine::isRadioOn(void) const
 	?continueScanning@RadioScannerEngine@@QAEXXZ @ 71 NONAME ; void RadioScannerEngine::continueScanning(void)
 	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 72 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int)
-	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 73 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
-	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
-	?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 75 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode)
-	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 76 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
-	?launchRadioServer@RadioUiEngine@@SAXXZ @ 77 NONAME ; void RadioUiEngine::launchRadioServer(void)
-	?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)
-	?lastVolume@RadioUiEngine@@SAHXZ @ 87 NONAME ; int RadioUiEngine::lastVolume(void)
-	?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 *)
-	?hasSentRds@RadioStation@@QBE_NXZ @ 143 NONAME ; bool RadioStation::hasSentRds(void) const
-	?presetIndex@RadioStation@@QBEHXZ @ 144 NONAME ; int RadioStation::presetIndex(void) const
-	?cancel@RadioScannerEngine@@QAEXXZ @ 145 NONAME ; void RadioScannerEngine::cancel(void)
-	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 146 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
-	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 147 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
-	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 148 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
-	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 149 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
-	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 150 NONAME ; void RadioHistoryModel::currentSongReset(void)
-	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 151 NONAME ; void RadioStationModel::removeByPresetIndex(int)
-	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 152 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
-	?isRenamed@RadioStation@@QBE_NXZ @ 153 NONAME ; bool RadioStation::isRenamed(void) const
-	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 154 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
-	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 155 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
-	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 156 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
-	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 157 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
-	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 158 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
-	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 159 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
-	??0RadioHistoryItem@@QAE@XZ @ 160 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
-	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 161 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
-	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 162 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
-	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 163 NONAME ; int RadioStationModel::findPresetIndex(int)
-	??0RadioHistoryItem@@QAE@ABV0@@Z @ 164 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
-	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
-	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 166 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
-	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 167 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
-	?lastTunedFrequency@RadioUiEngine@@SAII@Z @ 168 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(unsigned int)
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 169 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
-	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 170 NONAME ; void RadioHistoryModel::removeAll(bool)
-	?hasGenre@RadioStation@@QBE_NXZ @ 171 NONAME ; bool RadioStation::hasGenre(void) const
-	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 172 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
-	?setPowerOn@RadioUiEngine@@QAEXXZ @ 173 NONAME ; void RadioUiEngine::setPowerOn(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
-	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 175 NONAME ; class QString RadioStation::dynamicPsText(void) const
-	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 176 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
-	?setMute@RadioUiEngine@@QAEX_N@Z @ 177 NONAME ; void RadioUiEngine::setMute(bool)
-	?setGenre@RadioStation@@AAEXH@Z @ 178 NONAME ; void RadioStation::setGenre(int)
-	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 179 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
-	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 180 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
-	??_ERadioUiEngine@@UAE@I@Z @ 181 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
-	?init@RadioUiEngine@@QAE_NXZ @ 182 NONAME ; bool RadioUiEngine::init(void)
-	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 183 NONAME ; void RadioStation::setRadioText(class QString const &)
-	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 184 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
-	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 185 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
-	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 186 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
-	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 187 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
-	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 188 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
-	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 189 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
-	??1RadioUiEngine@@UAE@XZ @ 190 NONAME ; RadioUiEngine::~RadioUiEngine(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 191 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
-	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 192 NONAME ; class QString RadioHistoryItem::time(void) const
-	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 193 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
-	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 194 NONAME ; class QString RadioHistoryItem::artist(void) const
-	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 195 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
-	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 196 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
-	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 197 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
-	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 198 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
-	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 199 NONAME ; void RadioUiEngine::volumeChanged(int)
-	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 200 NONAME ; class QString RadioHistoryItem::title(void) const
-	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 201 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
-	?resetChangeFlags@RadioStation@@QAEXXZ @ 202 NONAME ; void RadioStation::resetChangeFlags(void)
-	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 203 NONAME ; void RadioUiEngine::powerOffRequested(void)
-	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 204 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
-	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 205 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
-	?callSignChar@RadioStation@@AAEDI@Z @ 206 NONAME ; char RadioStation::callSignChar(unsigned int)
-	??_ERadioStation@@UAE@I@Z @ 207 NONAME ; RadioStation::~RadioStation(unsigned int)
-	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 208 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
-	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 209 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
-	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 210 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
-	??0RadioStation@@AAE@HI@Z @ 211 NONAME ; RadioStation::RadioStation(int, unsigned int)
-	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 212 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isDetached@RadioStation@@QBE_NXZ @ 213 NONAME ; bool RadioStation::isDetached(void) const
-	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 214 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
-	?name@RadioStation@@QBE?AVQString@@XZ @ 215 NONAME ; class QString RadioStation::name(void) const
-	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 216 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
-	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 217 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
-	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 218 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
-	?itemAdded@RadioHistoryModel@@IAEXXZ @ 219 NONAME ; void RadioHistoryModel::itemAdded(void)
-	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 220 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
-	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 221 NONAME ; void RadioHistoryModel::setShowDetails(bool)
-	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 222 NONAME ; void RadioUiEngine::launchSongRecognition(void)
-	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 223 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
-	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 224 NONAME ; class QString RadioStation::iterateCallSign(int, int)
-	?toggleMute@RadioUiEngine@@QAEXXZ @ 225 NONAME ; void RadioUiEngine::toggleMute(void)
-	?piCode@RadioStation@@QBEHXZ @ 226 NONAME ; int RadioStation::piCode(void) const
-	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 227 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
-	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 228 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
-	?hasRadiotext@RadioStation@@QBE_NXZ @ 229 NONAME ; bool RadioStation::hasRadiotext(void) const
-	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 230 NONAME ; void RadioHistoryItem::setCurrentTime(void)
-	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 231 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
-	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 232 NONAME ; class QString RadioHistoryItem::station(void) const
-	??_ERadioHistoryModel@@UAE@I@Z @ 233 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
-	?minFrequency@RadioUiEngine@@QBEIXZ @ 234 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
-	?isTagged@RadioHistoryItem@@QBE_NXZ @ 235 NONAME ; bool RadioHistoryItem::isTagged(void) const
-	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 236 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
-	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 237 NONAME ; void RadioHistoryModel::setShowTagged(bool)
-	?setPresetIndex@RadioStation@@AAEXH@Z @ 238 NONAME ; void RadioStation::setPresetIndex(int)
-	?setName@RadioStation@@AAEXABVQString@@@Z @ 239 NONAME ; void RadioStation::setName(class QString const &)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 240 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
-	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 241 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
-	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 242 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 243 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
-	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 244 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
-	?isFavorite@RadioStation@@QBE_NXZ @ 245 NONAME ; bool RadioStation::isFavorite(void) const
-	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 246 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
-	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 247 NONAME ; void RadioUiEngine::seekingStarted(int)
-	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 248 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
-	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 249 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
-	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 250 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
-	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 251 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
-	??_ERadioStationModel@@UAE@I@Z @ 252 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
-	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 253 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?localCount@RadioStationModel@@QAEHXZ @ 73 NONAME ; int RadioStationModel::localCount(void)
+	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 74 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
+	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString RadioStationModel::tr(char const *, char 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
+	?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)
+	?lastVolume@RadioUiEngine@@SAHXZ @ 88 NONAME ; int RadioUiEngine::lastVolume(void)
+	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 89 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
+	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 90 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
+	?setVolume@RadioUiEngine@@QAEXH@Z @ 91 NONAME ; void RadioUiEngine::setVolume(int)
+	?setFavorite@RadioStation@@QAEX_N@Z @ 92 NONAME ; void RadioStation::setFavorite(bool)
+	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 93 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
+	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 94 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
+	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 95 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
+	?hasUrl@RadioStation@@QBE_NXZ @ 96 NONAME ; bool RadioStation::hasUrl(void) const
+	??1RadioStationModel@@UAE@XZ @ 97 NONAME ; RadioStationModel::~RadioStationModel(void)
+	?isMuted@RadioUiEngine@@QBE_NXZ @ 98 NONAME ; bool RadioUiEngine::isMuted(void) const
+	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 99 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
+	?currentFrequency@RadioUiEngine@@QBEIXZ @ 100 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
+	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 101 NONAME ; void RadioHistoryModel::emitItemAdded(void)
+	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 102 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
+	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 103 NONAME ; void RadioStation::setUrl(class QString const &)
+	?hasDynamicPs@RadioStation@@QBE_NXZ @ 104 NONAME ; bool RadioStation::hasDynamicPs(void) const
+	??1RadioStation@@UAE@XZ @ 105 NONAME ; RadioStation::~RadioStation(void)
+	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 106 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
+	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 107 NONAME ; class QString RadioStation::callSignString(unsigned int)
+	?isValid@RadioStation@@QBE_NXZ @ 108 NONAME ; bool RadioStation::isValid(void) const
+	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 109 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 110 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
+	?reset@RadioHistoryItem@@QAEXXZ @ 111 NONAME ; void RadioHistoryItem::reset(void)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 112 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
+	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 113 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
+	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 114 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 115 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
+	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 116 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
+	?frequency@RadioHistoryItem@@QBEIXZ @ 117 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
+	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 118 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
+	?isDetached@RadioHistoryItem@@QBE_NXZ @ 119 NONAME ; bool RadioHistoryItem::isDetached(void) const
+	?genre@RadioStation@@QBEHXZ @ 120 NONAME ; int RadioStation::genre(void) const
+	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 121 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 122 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
+	??0RadioStation@@QAE@XZ @ 123 NONAME ; RadioStation::RadioStation(void)
+	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 124 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
+	??1RadioHistoryModel@@UAE@XZ @ 125 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
+	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 126 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
+	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 127 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
+	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 128 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
+	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 129 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
+	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 130 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
+	?startScanning@RadioScannerEngine@@QAEXXZ @ 131 NONAME ; void RadioScannerEngine::startScanning(void)
+	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 132 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
+	?isValid@RadioHistoryItem@@QBE_NXZ @ 133 NONAME ; bool RadioHistoryItem::isValid(void) const
+	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 134 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
+	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 135 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
+	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 136 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
+	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 137 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
+	?url@RadioStation@@QBE?AVQString@@XZ @ 138 NONAME ; class QString RadioStation::url(void) const
+	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 139 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
+	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 140 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
+	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 141 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
+	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 142 NONAME ; void RadioHistoryItem::setStation(class QString const &)
+	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 143 NONAME ; void * RadioStationModel::qt_metacast(char const *)
+	?hasSentRds@RadioStation@@QBE_NXZ @ 144 NONAME ; bool RadioStation::hasSentRds(void) const
+	?presetIndex@RadioStation@@QBEHXZ @ 145 NONAME ; int RadioStation::presetIndex(void) const
+	?cancel@RadioScannerEngine@@QAEXXZ @ 146 NONAME ; void RadioScannerEngine::cancel(void)
+	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 147 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
+	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 148 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
+	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 149 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 150 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
+	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 151 NONAME ; void RadioHistoryModel::currentSongReset(void)
+	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 152 NONAME ; void RadioStationModel::removeByPresetIndex(int)
+	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 153 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
+	?isRenamed@RadioStation@@QBE_NXZ @ 154 NONAME ; bool RadioStation::isRenamed(void) const
+	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 155 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
+	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 156 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
+	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 157 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
+	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 158 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
+	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 159 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
+	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 160 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
+	??0RadioHistoryItem@@QAE@XZ @ 161 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
+	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 162 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
+	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 163 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
+	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 164 NONAME ; int RadioStationModel::findPresetIndex(int)
+	??0RadioHistoryItem@@QAE@ABV0@@Z @ 165 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
+	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 166 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
+	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 167 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
+	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 168 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
+	?lastTunedFrequency@RadioUiEngine@@SAII@Z @ 169 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(unsigned int)
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 170 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
+	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 171 NONAME ; void RadioHistoryModel::removeAll(bool)
+	?hasGenre@RadioStation@@QBE_NXZ @ 172 NONAME ; bool RadioStation::hasGenre(void) const
+	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 173 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
+	?setPowerOn@RadioUiEngine@@QAEXXZ @ 174 NONAME ; void RadioUiEngine::setPowerOn(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 175 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
+	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 176 NONAME ; class QString RadioStation::dynamicPsText(void) const
+	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 177 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
+	?setMute@RadioUiEngine@@QAEX_N@Z @ 178 NONAME ; void RadioUiEngine::setMute(bool)
+	?setGenre@RadioStation@@AAEXH@Z @ 179 NONAME ; void RadioStation::setGenre(int)
+	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 180 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
+	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 181 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
+	??_ERadioUiEngine@@UAE@I@Z @ 182 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
+	?init@RadioUiEngine@@QAE_NXZ @ 183 NONAME ; bool RadioUiEngine::init(void)
+	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 184 NONAME ; void RadioStation::setRadioText(class QString const &)
+	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 185 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
+	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 186 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
+	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 187 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
+	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 188 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
+	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 189 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
+	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 190 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
+	??1RadioUiEngine@@UAE@XZ @ 191 NONAME ; RadioUiEngine::~RadioUiEngine(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 192 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
+	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 193 NONAME ; class QString RadioHistoryItem::time(void) const
+	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 194 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
+	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 195 NONAME ; class QString RadioHistoryItem::artist(void) const
+	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 196 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
+	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 197 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
+	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 198 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
+	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 199 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
+	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 200 NONAME ; void RadioUiEngine::volumeChanged(int)
+	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 201 NONAME ; class QString RadioHistoryItem::title(void) const
+	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 202 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
+	?resetChangeFlags@RadioStation@@QAEXXZ @ 203 NONAME ; void RadioStation::resetChangeFlags(void)
+	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 204 NONAME ; void RadioUiEngine::powerOffRequested(void)
+	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 205 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
+	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 206 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
+	?callSignChar@RadioStation@@AAEDI@Z @ 207 NONAME ; char RadioStation::callSignChar(unsigned int)
+	??_ERadioStation@@UAE@I@Z @ 208 NONAME ; RadioStation::~RadioStation(unsigned int)
+	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 209 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
+	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 210 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
+	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 211 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
+	??0RadioStation@@AAE@HI@Z @ 212 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 213 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isDetached@RadioStation@@QBE_NXZ @ 214 NONAME ; bool RadioStation::isDetached(void) const
+	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 215 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
+	?name@RadioStation@@QBE?AVQString@@XZ @ 216 NONAME ; class QString RadioStation::name(void) const
+	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 217 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
+	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 218 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
+	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 219 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
+	?itemAdded@RadioHistoryModel@@IAEXXZ @ 220 NONAME ; void RadioHistoryModel::itemAdded(void)
+	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 221 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
+	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 222 NONAME ; void RadioHistoryModel::setShowDetails(bool)
+	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 223 NONAME ; void RadioUiEngine::launchSongRecognition(void)
+	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 224 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
+	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 225 NONAME ; class QString RadioStation::iterateCallSign(int, int)
+	?toggleMute@RadioUiEngine@@QAEXXZ @ 226 NONAME ; void RadioUiEngine::toggleMute(void)
+	?piCode@RadioStation@@QBEHXZ @ 227 NONAME ; int RadioStation::piCode(void) const
+	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 228 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
+	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 229 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
+	?hasRadiotext@RadioStation@@QBE_NXZ @ 230 NONAME ; bool RadioStation::hasRadiotext(void) const
+	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 231 NONAME ; void RadioHistoryItem::setCurrentTime(void)
+	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 232 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
+	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 233 NONAME ; class QString RadioHistoryItem::station(void) const
+	??_ERadioHistoryModel@@UAE@I@Z @ 234 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
+	?minFrequency@RadioUiEngine@@QBEIXZ @ 235 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
+	?isTagged@RadioHistoryItem@@QBE_NXZ @ 236 NONAME ; bool RadioHistoryItem::isTagged(void) const
+	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 237 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
+	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 238 NONAME ; void RadioHistoryModel::setShowTagged(bool)
+	?setPresetIndex@RadioStation@@AAEXH@Z @ 239 NONAME ; void RadioStation::setPresetIndex(int)
+	?setName@RadioStation@@AAEXABVQString@@@Z @ 240 NONAME ; void RadioStation::setName(class QString const &)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 241 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
+	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 242 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
+	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 243 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 244 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
+	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 245 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
+	?isFavorite@RadioStation@@QBE_NXZ @ 246 NONAME ; bool RadioStation::isFavorite(void) const
+	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 247 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
+	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 248 NONAME ; void RadioUiEngine::seekingStarted(int)
+	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 249 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
+	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 250 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
+	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 251 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
+	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 252 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
+	??_ERadioStationModel@@UAE@I@Z @ 253 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
+	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 254 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
 
--- a/radioapp/eabi/fmradiouiengineu.def	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/eabi/fmradiouiengineu.def	Fri Sep 03 12:25:04 2010 +0300
@@ -124,126 +124,127 @@
 	_ZN17RadioHistoryModelD2Ev @ 123 NONAME
 	_ZN17RadioStationModel10addStationERK12RadioStation @ 124 NONAME
 	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 125 NONAME
-	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 126 NONAME
-	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 127 NONAME
-	_ZN17RadioStationModel11qt_metacastEPKc @ 128 NONAME
-	_ZN17RadioStationModel11saveStationER12RadioStation @ 129 NONAME
-	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 130 NONAME
-	_ZN17RadioStationModel13favoriteCountEv @ 131 NONAME
-	_ZN17RadioStationModel13removeStationERK12RadioStation @ 132 NONAME
-	_ZN17RadioStationModel13renameStationEiRK7QString @ 133 NONAME
-	_ZN17RadioStationModel14currentStationEv @ 134 NONAME
-	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 135 NONAME
-	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 136 NONAME
-	_ZN17RadioStationModel15findPresetIndexEi @ 137 NONAME
-	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 138 NONAME
-	_ZN17RadioStationModel15stationsInRangeEjj @ 139 NONAME
-	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 140 NONAME
-	_ZN17RadioStationModel16staticMetaObjectE @ 141 NONAME DATA 16
-	_ZN17RadioStationModel16stationHandlerIfEv @ 142 NONAME
-	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 143 NONAME
-	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 144 NONAME
-	_ZN17RadioStationModel17removeByFrequencyEj @ 145 NONAME
-	_ZN17RadioStationModel18indexFromFrequencyEj @ 146 NONAME
-	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 147 NONAME
-	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 148 NONAME
-	_ZN17RadioStationModel19getStaticMetaObjectEv @ 149 NONAME
-	_ZN17RadioStationModel19removeByPresetIndexEi @ 150 NONAME
-	_ZN17RadioStationModel19setFavoriteByPresetEib @ 151 NONAME
-	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 152 NONAME
-	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 153 NONAME
-	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 154 NONAME
-	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 155 NONAME
-	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 156 NONAME
-	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 157 NONAME
-	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 158 NONAME
-	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 159 NONAME
-	_ZN17RadioStationModelD0Ev @ 160 NONAME
-	_ZN17RadioStationModelD1Ev @ 161 NONAME
-	_ZN17RadioStationModelD2Ev @ 162 NONAME
-	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 163 NONAME
-	_ZN18RadioScannerEngine11qt_metacastEPKc @ 164 NONAME
-	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 165 NONAME
-	_ZN18RadioScannerEngine13startScanningEv @ 166 NONAME
-	_ZN18RadioScannerEngine16continueScanningEv @ 167 NONAME
-	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 168 NONAME
-	_ZN18RadioScannerEngine16staticMetaObjectE @ 169 NONAME DATA 16
-	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 170 NONAME
-	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 171 NONAME
-	_ZN18RadioScannerEngine6cancelEv @ 172 NONAME
-	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 173 NONAME
-	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 174 NONAME
-	_ZN18RadioScannerEngineD0Ev @ 175 NONAME
-	_ZN18RadioScannerEngineD1Ev @ 176 NONAME
-	_ZN18RadioScannerEngineD2Ev @ 177 NONAME
-	_ZNK12RadioStation10hasChangedEv @ 178 NONAME
-	_ZNK12RadioStation10hasSentRdsEv @ 179 NONAME
-	_ZNK12RadioStation10isDetachedEv @ 180 NONAME
-	_ZNK12RadioStation10isFavoriteEv @ 181 NONAME
-	_ZNK12RadioStation11changeFlagsEv @ 182 NONAME
-	_ZNK12RadioStation11presetIndexEv @ 183 NONAME
-	_ZNK12RadioStation13dynamicPsTextEv @ 184 NONAME
-	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 185 NONAME
-	_ZNK12RadioStation15frequencyStringEv @ 186 NONAME
-	_ZNK12RadioStation3urlEv @ 187 NONAME
-	_ZNK12RadioStation4nameEv @ 188 NONAME
-	_ZNK12RadioStation5genreEv @ 189 NONAME
-	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 190 NONAME
-	_ZNK12RadioStation6piCodeEv @ 191 NONAME
-	_ZNK12RadioStation6psTypeEv @ 192 NONAME
-	_ZNK12RadioStation7isValidEv @ 193 NONAME
-	_ZNK12RadioStation9frequencyEv @ 194 NONAME
-	_ZNK12RadioStation9isRenamedEv @ 195 NONAME
-	_ZNK12RadioStation9radioTextEv @ 196 NONAME
-	_ZNK13RadioUiEngine10isScanningEv @ 197 NONAME
-	_ZNK13RadioUiEngine10metaObjectEv @ 198 NONAME
-	_ZNK13RadioUiEngine12maxFrequencyEv @ 199 NONAME
-	_ZNK13RadioUiEngine12minFrequencyEv @ 200 NONAME
-	_ZNK13RadioUiEngine13isInitializedEv @ 201 NONAME
-	_ZNK13RadioUiEngine13isPoweringOffEv @ 202 NONAME
-	_ZNK13RadioUiEngine16currentFrequencyEv @ 203 NONAME
-	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 204 NONAME
-	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 205 NONAME
-	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 206 NONAME
-	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 207 NONAME
-	_ZNK13RadioUiEngine6regionEv @ 208 NONAME
-	_ZNK13RadioUiEngine7isMutedEv @ 209 NONAME
-	_ZNK13RadioUiEngine9isRadioOnEv @ 210 NONAME
-	_ZNK16RadioHistoryItem10isDetachedEv @ 211 NONAME
-	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 212 NONAME
-	_ZNK16RadioHistoryItem2idEv @ 213 NONAME
-	_ZNK16RadioHistoryItem4timeEv @ 214 NONAME
-	_ZNK16RadioHistoryItem5titleEv @ 215 NONAME
-	_ZNK16RadioHistoryItem6artistEv @ 216 NONAME
-	_ZNK16RadioHistoryItem7isValidEv @ 217 NONAME
-	_ZNK16RadioHistoryItem7stationEv @ 218 NONAME
-	_ZNK16RadioHistoryItem8isTaggedEv @ 219 NONAME
-	_ZNK16RadioHistoryItem9frequencyEv @ 220 NONAME
-	_ZNK17RadioHistoryModel10metaObjectEv @ 221 NONAME
-	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 222 NONAME
-	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 223 NONAME
-	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 224 NONAME
-	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 225 NONAME
-	_ZNK17RadioStationModel10metaObjectEv @ 226 NONAME
-	_ZNK17RadioStationModel11findStationEjN12FindCriteria8CriteriaE @ 227 NONAME
-	_ZNK17RadioStationModel13findFrequencyEjR12RadioStationN12FindCriteria8CriteriaE @ 228 NONAME
-	_ZNK17RadioStationModel14currentStationEv @ 229 NONAME
-	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 230 NONAME
-	_ZNK17RadioStationModel4listEv @ 231 NONAME
-	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 232 NONAME
-	_ZNK17RadioStationModel8containsEj @ 233 NONAME
-	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 234 NONAME
-	_ZNK17RadioStationModel9stationAtEi @ 235 NONAME
-	_ZNK18RadioScannerEngine10isScanningEv @ 236 NONAME
-	_ZNK18RadioScannerEngine10metaObjectEv @ 237 NONAME
-	_ZTI12RadioStation @ 238 NONAME
-	_ZTI13RadioUiEngine @ 239 NONAME
-	_ZTI17RadioHistoryModel @ 240 NONAME
-	_ZTI17RadioStationModel @ 241 NONAME
-	_ZTI18RadioScannerEngine @ 242 NONAME
-	_ZTV12RadioStation @ 243 NONAME
-	_ZTV13RadioUiEngine @ 244 NONAME
-	_ZTV17RadioHistoryModel @ 245 NONAME
-	_ZTV17RadioStationModel @ 246 NONAME
-	_ZTV18RadioScannerEngine @ 247 NONAME
+	_ZN17RadioStationModel10localCountEv @ 126 NONAME
+	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 127 NONAME
+	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 128 NONAME
+	_ZN17RadioStationModel11qt_metacastEPKc @ 129 NONAME
+	_ZN17RadioStationModel11saveStationER12RadioStation @ 130 NONAME
+	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 131 NONAME
+	_ZN17RadioStationModel13favoriteCountEv @ 132 NONAME
+	_ZN17RadioStationModel13removeStationERK12RadioStation @ 133 NONAME
+	_ZN17RadioStationModel13renameStationEiRK7QString @ 134 NONAME
+	_ZN17RadioStationModel14currentStationEv @ 135 NONAME
+	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 136 NONAME
+	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 137 NONAME
+	_ZN17RadioStationModel15findPresetIndexEi @ 138 NONAME
+	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 139 NONAME
+	_ZN17RadioStationModel15stationsInRangeEjj @ 140 NONAME
+	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 141 NONAME
+	_ZN17RadioStationModel16staticMetaObjectE @ 142 NONAME DATA 16
+	_ZN17RadioStationModel16stationHandlerIfEv @ 143 NONAME
+	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 144 NONAME
+	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 145 NONAME
+	_ZN17RadioStationModel17removeByFrequencyEj @ 146 NONAME
+	_ZN17RadioStationModel18indexFromFrequencyEj @ 147 NONAME
+	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 148 NONAME
+	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 149 NONAME
+	_ZN17RadioStationModel19getStaticMetaObjectEv @ 150 NONAME
+	_ZN17RadioStationModel19removeByPresetIndexEi @ 151 NONAME
+	_ZN17RadioStationModel19setFavoriteByPresetEib @ 152 NONAME
+	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 153 NONAME
+	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 154 NONAME
+	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 155 NONAME
+	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 156 NONAME
+	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 157 NONAME
+	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 158 NONAME
+	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 159 NONAME
+	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 160 NONAME
+	_ZN17RadioStationModelD0Ev @ 161 NONAME
+	_ZN17RadioStationModelD1Ev @ 162 NONAME
+	_ZN17RadioStationModelD2Ev @ 163 NONAME
+	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 164 NONAME
+	_ZN18RadioScannerEngine11qt_metacastEPKc @ 165 NONAME
+	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 166 NONAME
+	_ZN18RadioScannerEngine13startScanningEv @ 167 NONAME
+	_ZN18RadioScannerEngine16continueScanningEv @ 168 NONAME
+	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 169 NONAME
+	_ZN18RadioScannerEngine16staticMetaObjectE @ 170 NONAME DATA 16
+	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 171 NONAME
+	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 172 NONAME
+	_ZN18RadioScannerEngine6cancelEv @ 173 NONAME
+	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 174 NONAME
+	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 175 NONAME
+	_ZN18RadioScannerEngineD0Ev @ 176 NONAME
+	_ZN18RadioScannerEngineD1Ev @ 177 NONAME
+	_ZN18RadioScannerEngineD2Ev @ 178 NONAME
+	_ZNK12RadioStation10hasChangedEv @ 179 NONAME
+	_ZNK12RadioStation10hasSentRdsEv @ 180 NONAME
+	_ZNK12RadioStation10isDetachedEv @ 181 NONAME
+	_ZNK12RadioStation10isFavoriteEv @ 182 NONAME
+	_ZNK12RadioStation11changeFlagsEv @ 183 NONAME
+	_ZNK12RadioStation11presetIndexEv @ 184 NONAME
+	_ZNK12RadioStation13dynamicPsTextEv @ 185 NONAME
+	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 186 NONAME
+	_ZNK12RadioStation15frequencyStringEv @ 187 NONAME
+	_ZNK12RadioStation3urlEv @ 188 NONAME
+	_ZNK12RadioStation4nameEv @ 189 NONAME
+	_ZNK12RadioStation5genreEv @ 190 NONAME
+	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 191 NONAME
+	_ZNK12RadioStation6piCodeEv @ 192 NONAME
+	_ZNK12RadioStation6psTypeEv @ 193 NONAME
+	_ZNK12RadioStation7isValidEv @ 194 NONAME
+	_ZNK12RadioStation9frequencyEv @ 195 NONAME
+	_ZNK12RadioStation9isRenamedEv @ 196 NONAME
+	_ZNK12RadioStation9radioTextEv @ 197 NONAME
+	_ZNK13RadioUiEngine10isScanningEv @ 198 NONAME
+	_ZNK13RadioUiEngine10metaObjectEv @ 199 NONAME
+	_ZNK13RadioUiEngine12maxFrequencyEv @ 200 NONAME
+	_ZNK13RadioUiEngine12minFrequencyEv @ 201 NONAME
+	_ZNK13RadioUiEngine13isInitializedEv @ 202 NONAME
+	_ZNK13RadioUiEngine13isPoweringOffEv @ 203 NONAME
+	_ZNK13RadioUiEngine16currentFrequencyEv @ 204 NONAME
+	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 205 NONAME
+	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 206 NONAME
+	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 207 NONAME
+	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 208 NONAME
+	_ZNK13RadioUiEngine6regionEv @ 209 NONAME
+	_ZNK13RadioUiEngine7isMutedEv @ 210 NONAME
+	_ZNK13RadioUiEngine9isRadioOnEv @ 211 NONAME
+	_ZNK16RadioHistoryItem10isDetachedEv @ 212 NONAME
+	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 213 NONAME
+	_ZNK16RadioHistoryItem2idEv @ 214 NONAME
+	_ZNK16RadioHistoryItem4timeEv @ 215 NONAME
+	_ZNK16RadioHistoryItem5titleEv @ 216 NONAME
+	_ZNK16RadioHistoryItem6artistEv @ 217 NONAME
+	_ZNK16RadioHistoryItem7isValidEv @ 218 NONAME
+	_ZNK16RadioHistoryItem7stationEv @ 219 NONAME
+	_ZNK16RadioHistoryItem8isTaggedEv @ 220 NONAME
+	_ZNK16RadioHistoryItem9frequencyEv @ 221 NONAME
+	_ZNK17RadioHistoryModel10metaObjectEv @ 222 NONAME
+	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 223 NONAME
+	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 224 NONAME
+	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 225 NONAME
+	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 226 NONAME
+	_ZNK17RadioStationModel10metaObjectEv @ 227 NONAME
+	_ZNK17RadioStationModel11findStationEjN12FindCriteria8CriteriaE @ 228 NONAME
+	_ZNK17RadioStationModel13findFrequencyEjR12RadioStationN12FindCriteria8CriteriaE @ 229 NONAME
+	_ZNK17RadioStationModel14currentStationEv @ 230 NONAME
+	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 231 NONAME
+	_ZNK17RadioStationModel4listEv @ 232 NONAME
+	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 233 NONAME
+	_ZNK17RadioStationModel8containsEj @ 234 NONAME
+	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 235 NONAME
+	_ZNK17RadioStationModel9stationAtEi @ 236 NONAME
+	_ZNK18RadioScannerEngine10isScanningEv @ 237 NONAME
+	_ZNK18RadioScannerEngine10metaObjectEv @ 238 NONAME
+	_ZTI12RadioStation @ 239 NONAME
+	_ZTI13RadioUiEngine @ 240 NONAME
+	_ZTI17RadioHistoryModel @ 241 NONAME
+	_ZTI17RadioStationModel @ 242 NONAME
+	_ZTI18RadioScannerEngine @ 243 NONAME
+	_ZTV12RadioStation @ 244 NONAME
+	_ZTV13RadioUiEngine @ 245 NONAME
+	_ZTV17RadioHistoryModel @ 246 NONAME
+	_ZTV17RadioStationModel @ 247 NONAME
+	_ZTV18RadioScannerEngine @ 248 NONAME
 
--- a/radioapp/radiopresetstorage/tsrc/inc/t_radiopresetstorage.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiopresetstorage/tsrc/inc/t_radiopresetstorage.h	Fri Sep 03 12:25:04 2010 +0300
@@ -47,7 +47,7 @@
     void testSavePreset();
     void testReadPreset();
     void testDeletePreset();
-    void testStessTest();
+    void testStressTest();
     
 private:
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiopresetstorage/tsrc/inc/trace.h	Fri Sep 03 12:25:04 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 "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-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"[t_radioenginewrapper]: " 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*)"[t_radioenginewrapper]: " ##aMsg
+
+/**
+* Define needed directories if TRACE_INTO_FILE macro in use
+*/
+#ifdef TRACE_INTO_FILE
+
+    _LIT( KDir, "radio" );
+    _LIT( KFile, "radio.txt" );
+    _LIT( KFullPath, "c:\\logs\\radio\\" );
+
+#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/radioapp/radiopresetstorage/tsrc/inc/traceconfiguration.hrh	Fri Sep 03 12:25:04 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* 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
+
--- a/radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiopresetstorage/tsrc/src/t_radiopresetstorage.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -18,17 +18,19 @@
 #include "radiopresetstorage.h"
 #include "radiostation.h"
 #include "radiostation_p.h"
+#include "trace.h"
 
 // Constants
 const uint KTestFrequency1 = 89000000;
 const uint KTestFrequency2 = 89500000;
 const uint KTestFrequency3 = 90000000;
 const uint KTestFrequency4 = 90500000;
-const uint KMaxNumberOfPresets = 100;
-const uint KInvalidPresetIndex = -2;
+const int KInvalidPresetIndex = -2;
 const uint KFirstPresetIndex = 0;
 const uint KSecondPresetIndex = 1;
 const uint KThirdPresetIndex = 2;
+const uint KFourthPresetIndex = 3;
+const uint KArbitraryPresetIndex = 14;
 const uint KFrequencyStep = 100000;
 
 /*!
@@ -36,6 +38,7 @@
  */
 int main(int /* argc*/, char *argv[])
 {
+    FUNC_LOG;
     TestRadioPresetStorage tv;
 
     char *pass[3];
@@ -51,6 +54,7 @@
 
 TestRadioPresetStorage::TestRadioPresetStorage()
 {
+    FUNC_LOG;
 }
 
 
@@ -59,6 +63,7 @@
  */
 TestRadioPresetStorage::~TestRadioPresetStorage()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -66,6 +71,7 @@
  */
 void TestRadioPresetStorage::init()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -73,6 +79,7 @@
  */
 void TestRadioPresetStorage::cleanup()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -80,15 +87,15 @@
  */
 void TestRadioPresetStorage::initTestCase()
 {
+    FUNC_LOG;
     mPresetStorage.reset( new RadioPresetStorage() );
     // this is the range used in this test module
     for(int i = 0; i <= mPresetStorage->maxNumberOfPresets(); i++)
     {
         mPresetStorage->deletePreset( i );        
     }    
-    QVERIFY2(( mPresetStorage->presetCount() == 0 ), "API:RadioPresetStorage initTestCase 1");    
-    // TODO: replace the local constant with the constand defined in preset utility header  
-    QVERIFY2(( mPresetStorage->maxNumberOfPresets() == KMaxNumberOfPresets ), "API:RadioPresetStorage initTestCase 2");
+    QVERIFY2(( mPresetStorage->presetCount() == 0 ), "API:RadioPresetStorage initTestCase 1");
+    INFO_1("mPresetStorage->maxNumberOfPresets() == %i", mPresetStorage->maxNumberOfPresets() );
 }
 
 /*!
@@ -96,6 +103,7 @@
  */
 void TestRadioPresetStorage::cleanupTestCase()
 {
+    FUNC_LOG;
 	
 }
 
@@ -104,39 +112,50 @@
  */
 void TestRadioPresetStorage::testSavePreset()
 {
-  int test = mPresetStorage->maxNumberOfPresets();
-  int initialPresetCount( 0 );
-  //int initialPresetindex( KFirstPresetIndex );  
-  RadioStation station;  
-  station.setFrequency( KTestFrequency1 );
-  station.setPresetIndex( KFirstPresetIndex );
-  mPresetStorage->savePreset( *station.data_ptr() );
-  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 1 ), "API:RadioPresetStorage testSavePreset 1");
-  QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == 0 ), "API:RadioPresetStorage testSavePreset 2");
-  
-  station.setFrequency( KTestFrequency2 );
-  station.setPresetIndex( KSecondPresetIndex );
-  mPresetStorage->savePreset( *station.data_ptr() );
-  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 3");
-  QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KSecondPresetIndex ), "API:RadioPresetStorage testSavePreset 4");
-  
-  // check that saving preset fails if preset index and frequency are allready in use
-  station.setFrequency( KTestFrequency2 );
-  station.setPresetIndex( KSecondPresetIndex );
-  mPresetStorage->savePreset( *station.data_ptr() );
-  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 5");
-  
-  // check that saving preset success when new preset index and frequency are not in use
-  station.setFrequency( KTestFrequency3 );
-  station.setPresetIndex( KThirdPresetIndex );  
-  mPresetStorage->savePreset( *station.data_ptr() );
-  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 3 ), "API:RadioPresetStorage testSavePreset 6");
-  
-  // check that saving with invalid preset index fails
-  station.setFrequency( KTestFrequency4 );
-  station.setPresetIndex( KInvalidPresetIndex );  
-  mPresetStorage->savePreset( *station.data_ptr() );
-  QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 3 ), "API:RadioPresetStorage testSavePreset 6");
+    FUNC_LOG;
+    int test = mPresetStorage->maxNumberOfPresets();
+    int initialPresetCount( 0 );
+    //int initialPresetindex( KFirstPresetIndex );  
+     RadioStation station;  
+    station.setFrequency( KTestFrequency1 );
+    station.setPresetIndex( KFirstPresetIndex );
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 1");    
+    INFO_1("mPresetStorage->presetCount() = %i", mPresetStorage->presetCount() );
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 1 ), "API:RadioPresetStorage testSavePreset 1");
+    INFO_1("mPresetStorage->nextPreset() = %i", mPresetStorage->nextPreset( KFirstPresetIndex ) );
+    QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KErrNotFound ), "API:RadioPresetStorage testSavePreset 2");
+    
+    station.setFrequency( KTestFrequency2 );
+    station.setPresetIndex( KSecondPresetIndex );
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 2");    
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 3");
+    QVERIFY2(( mPresetStorage->nextPreset( KFirstPresetIndex ) == KSecondPresetIndex ), "API:RadioPresetStorage testSavePreset 4");
+    
+    // check that saving preset succeeds if preset index and frequency are allready in use
+    station.setFrequency( KTestFrequency2 );
+    station.setPresetIndex( KSecondPresetIndex );
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 3");    
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 2 ), "API:RadioPresetStorage testSavePreset 5");
+    
+    // check that saving preset success when new preset index and frequency are not in use
+    station.setFrequency( KTestFrequency3 );
+    station.setPresetIndex( KThirdPresetIndex );
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 4");    
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 3 ), "API:RadioPresetStorage testSavePreset 6");
+    
+    // check that saving with out of boundary preset index succeeds
+    station.setFrequency( KTestFrequency4 );
+    station.setPresetIndex( KInvalidPresetIndex );  
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 5");    
+    INFO_1("mPresetStorage->presetCount() = %i", mPresetStorage->presetCount() );
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 4 ), "API:RadioPresetStorage testSavePreset 7");
+
+    // check that saving with arbitrary preset index succeeds
+    station.setFrequency( KTestFrequency4 );
+    station.setPresetIndex( KArbitraryPresetIndex );  
+    QVERIFY2( mPresetStorage->savePreset( *station.data_ptr() ), "Preset save failed! 6");    
+    INFO_1("mPresetStorage->presetCount() = %i", mPresetStorage->presetCount() );
+    QVERIFY2(( mPresetStorage->presetCount() == initialPresetCount + 5 ), "API:RadioPresetStorage testSavePreset 8");
 }
 
 /*!
@@ -144,27 +163,32 @@
  */
 void TestRadioPresetStorage::testReadPreset()
 {
-  RadioStation station;
-  RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
-  mPresetStorage->readPreset( KFirstPresetIndex, *preset );  
-  QVERIFY2(( preset->frequency() == KTestFrequency1 ), "API:RadioPresetStorage testReadPreset 1");
-  
-  RadioStation station1;
-  RadioStationIf* preset1 = static_cast<RadioStationIf*>( station1.data_ptr() );
-  mPresetStorage->readPreset( KSecondPresetIndex, *preset1 );
-  QVERIFY2(( preset->frequency() == KTestFrequency2 ), "API:RadioPresetStorage testReadPreset 2");  
-  
-  RadioStation station2;
-  RadioStationIf* preset2 = static_cast<RadioStationIf*>( station2.data_ptr() );
-  mPresetStorage->readPreset( KThirdPresetIndex, *preset2 );
-  QVERIFY2(( preset->frequency() == KTestFrequency3 ), "API:RadioPresetStorage testReadPreset 3");
-  
-  RadioStation station3;
-  RadioStationIf* preset3 = static_cast<RadioStationIf*>( station3.data_ptr() );
-  // test the value returned with invalid preset index
-  mPresetStorage->readPreset( KThirdPresetIndex + 1, *preset3 );
-  // TODO: change the value to KErrNotFound when preset utility update done
-  QVERIFY2(( preset->frequency() == 87500000 ), "API:RadioPresetStorage testReadPreset 4");
+    FUNC_LOG;
+    RadioStation station;
+    RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
+    QVERIFY2( mPresetStorage->readPreset( KFirstPresetIndex, *preset ),  "Failed to read a preset");
+    QVERIFY2(( preset->frequency() == KTestFrequency1 ), "API:RadioPresetStorage testReadPreset 1");
+    
+    RadioStation station1;
+    RadioStationIf* preset1 = static_cast<RadioStationIf*>( station1.data_ptr() );
+    QVERIFY2( mPresetStorage->readPreset( KSecondPresetIndex, *preset1 ),  "Failed to read a preset");
+    QVERIFY2(( preset1->frequency() == KTestFrequency2 ), "API:RadioPresetStorage testReadPreset 2");  
+    
+    RadioStation station2;
+    RadioStationIf* preset2 = static_cast<RadioStationIf*>( station2.data_ptr() );
+    QVERIFY2( mPresetStorage->readPreset( KThirdPresetIndex, *preset2 ),  "Failed to read a preset");
+    QVERIFY2(( preset2->frequency() == KTestFrequency3 ), "API:RadioPresetStorage testReadPreset 3");
+    
+    RadioStation station3;
+    RadioStationIf* preset3 = static_cast<RadioStationIf*>( station3.data_ptr() );
+    QVERIFY2( mPresetStorage->readPreset( KFourthPresetIndex, *preset3 ),  "Failed to read a preset");
+    QVERIFY2(( preset3->frequency() == KTestFrequency4 ), "API:RadioPresetStorage testReadPreset 4");
+
+    RadioStation stationArbitrary;
+    RadioStationIf* presetArbitrary = static_cast<RadioStationIf*>( stationArbitrary.data_ptr() );
+    QVERIFY2( mPresetStorage->readPreset( KArbitraryPresetIndex, *presetArbitrary ),  "Failed to read a preset");
+    QVERIFY2(( presetArbitrary->frequency() ==  KTestFrequency4 ), "API:RadioPresetStorage testReadPreset 6");
+
 }
 
 /*!
@@ -172,6 +196,7 @@
  */
 void TestRadioPresetStorage::testDeletePreset()
 {   
+    FUNC_LOG;
     int initialPresetCount( mPresetStorage->presetCount() );
     
     QVERIFY2(( mPresetStorage->firstPreset() == KFirstPresetIndex ), "API:RadioPresetStorage testDeletePreset 1");
@@ -182,21 +207,24 @@
     
     RadioStation station;
     RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
-    mPresetStorage->readPreset( KSecondPresetIndex, *preset );
-    // TODO: change the value to KErrNotFound when preset utility update done
-    QVERIFY2(( preset->frequency() == 87500000 ), "API:RadioPresetStorage testDeletePreset 5");
+    QVERIFY2( EFalse == mPresetStorage->readPreset( KSecondPresetIndex, *preset ), "Reading of deleted preset succeeded!" );
     
     mPresetStorage->deletePreset( KFirstPresetIndex );
     QVERIFY2(( mPresetStorage->firstPreset() == KThirdPresetIndex ), "API:RadioPresetStorage testDeletePreset 6");
     mPresetStorage->deletePreset( KThirdPresetIndex );
+    mPresetStorage->deletePreset( KFourthPresetIndex );
+    mPresetStorage->deletePreset( KArbitraryPresetIndex );
+
+    
     QVERIFY2(( mPresetStorage->presetCount() == 0), "API:RadioPresetStorage testDeletePreset 7");
 }
   
 /*!
  * Test filling preset storage and handling boundary values
  */
-void TestRadioPresetStorage::testStessTest()
+void TestRadioPresetStorage::testStressTest()
 {
+    FUNC_LOG;
     for(int i = 0; i < mPresetStorage->maxNumberOfPresets(); i++)
     {
         RadioStation station;
@@ -204,7 +232,7 @@
         station.setPresetIndex( i );  
         mPresetStorage->savePreset( *station.data_ptr() );
     }
-    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStessTest 1");
+    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStressTest 1");
     int test = mPresetStorage->presetCount();
     RadioStation station;
     station.setFrequency( 87500000 + mPresetStorage->maxNumberOfPresets()*KFrequencyStep + KFrequencyStep);
@@ -212,7 +240,7 @@
     mPresetStorage->savePreset( *station.data_ptr() );
     int r = mPresetStorage->presetCount();
     // preset count must not increase
-    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStessTest 2");
+    QVERIFY2(( mPresetStorage->presetCount() == mPresetStorage->maxNumberOfPresets()), "API:RadioPresetStorage testStressTest 2");
     
     for(int i = 0; i <= mPresetStorage->maxNumberOfPresets(); i++)
     {
@@ -221,5 +249,5 @@
 
     // test deleting with invalid preset index
     mPresetStorage->deletePreset( KInvalidPresetIndex );
-    QVERIFY2(( mPresetStorage->presetCount() == 0), "API:RadioPresetStorage testStessTest 3");
+    QVERIFY2(( mPresetStorage->presetCount() == 0), "API:RadioPresetStorage testStressTest 3");
 }
--- a/radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiopresetstorage/tsrc/t_radiopresetstorage.pro	Fri Sep 03 12:25:04 2010 +0300
@@ -1,3 +1,11 @@
+#
+# 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".
+#
 #
 # Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
@@ -11,7 +19,7 @@
 #
 # Contributors:
 #
-# Description:
+# Description: project file for radiopresetstorage's unit tests
 #
 
 TEMPLATE = app
@@ -19,7 +27,7 @@
 
 symbian: {
     TARGET.CAPABILITY = CAP_GENERAL_DLL
-    TARGET.SID = 0x101FF976 # Old visual radio uid
+    TARGET.SID = 0x2002EAD8
     MMP_RULES += SMPSAFE
 }
 
@@ -27,14 +35,9 @@
     inc \
     src
 INCLUDEPATH += . \
-    /epoc32/include/domain \
-    /epoc32/include/domain/middleware \
-    /epoc32/include/domain/applications \
-    /epoc32/include/osextensions \
-    /epoc32/include/middleware \
-    /epoc32/include/osextensions/stdapis/stlport \
     stub/inc \
     ../../../inc \
+    ../../../common \
     ../inc \
     ../../commoninc \
     ../../radioenginewrapper/inc \
@@ -44,10 +47,13 @@
 
 CONFIG += qtestlib
 
-symbian:LIBS += -lradiouiengine
-symbian:LIBS += -lradioenginewrapper
-symbian:LIBS += -lradiopresetstorage
+symbian:LIBS += -lfmradioenginewrapper
+symbian:LIBS += -lfmradiopresetstorage
+symbian:LIBS += -lfmradiouiengine
 
 
 HEADERS += inc/t_radiopresetstorage.h
 SOURCES += src/t_radiopresetstorage.cpp
+# Need to recompile radiostation_p.cpp here, because radiouiengine doesn't export its private
+# classes.
+SOURCES += ../../radiouiengine/src/radiostation_p.cpp
--- a/radioapp/radiouiengine/inc/radiohistorymodel.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistorymodel.h	Fri Sep 03 12:25:04 2010 +0300
@@ -44,7 +44,7 @@
     friend class RadioStationModelPrivate;
 
     friend class RadioHistoryView;  // TEMPORARY TEST CODE, REMOVE
-
+    friend class TestRadioUiEngine;
 public:
 
     ~RadioHistoryModel();
--- a/radioapp/radiouiengine/inc/radiomonitorservice.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiomonitorservice.h	Fri Sep 03 12:25:04 2010 +0300
@@ -51,6 +51,7 @@
 
     void notifyRadioStatus();
     void notifyFavoriteCount();
+    void notifyLocalCount();
     void notifyStationChange( const RadioStation& station );
     void sendNotifications();
 
--- a/radioapp/radiouiengine/inc/radiostationmodel.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostationmodel.h	Fri Sep 03 12:25:04 2010 +0300
@@ -157,6 +157,11 @@
     int favoriteCount();
 
     /*!
+    * Function to check the number of local stations
+    */
+    int localCount();
+
+    /*!
      * Convenience functions to change common settings
      */
     void setFavoriteByFrequency( uint frequency, bool favorite );
--- a/radioapp/radiouiengine/inc/radiostationmodel_p.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostationmodel_p.h	Fri Sep 03 12:25:04 2010 +0300
@@ -73,6 +73,7 @@
     void doSaveStation( RadioStation& station, bool persistentSave = true );
 
     QList<RadioStation> favorites() const;
+    QList<RadioStation> locals() const;
 
 private: // data
 
--- a/radioapp/radiouiengine/src/radiocontrolservice.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -64,13 +64,21 @@
             break;
 
         case RadioServiceCommand::Previous:
-            mUiEngine.skipStation( StationSkip::PreviousFavorite, 0, TuneReason::SkipFromWidget );
+            mUiEngine.skipStation( StationSkip::Previous, 0, TuneReason::SkipFromWidget );
             break;
 
         case RadioServiceCommand::Next:
-            mUiEngine.skipStation( StationSkip::NextFavorite, 0, TuneReason::SkipFromWidget );
+            mUiEngine.skipStation( StationSkip::Next, 0, TuneReason::SkipFromWidget );
             break;
 
+        case RadioServiceCommand::PreviousFavorite:
+             mUiEngine.skipStation( StationSkip::PreviousFavorite, 0, TuneReason::SkipFromWidget );
+             break;
+
+        case RadioServiceCommand::NextFavorite:
+             mUiEngine.skipStation( StationSkip::NextFavorite, 0, TuneReason::SkipFromWidget );
+             break;
+
         case RadioServiceCommand::SeekUp:
             mUiEngine.seekStation( Seek::Up );
             break;
--- a/radioapp/radiouiengine/src/radiomonitorservice.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -71,10 +71,18 @@
 void RadioMonitorService::init()
 {
     RadioStationModel* stationModel = &mUiEngine.api().stationModel();
+    Radio::connect( stationModel,   SIGNAL(rowsInserted(QModelIndex,int,int)),
+                    this,           SLOT(notifyFavoriteCount()) );
+    Radio::connect( stationModel,   SIGNAL(rowsInserted(QModelIndex,int,int)),
+                    this,           SLOT(notifyLocalCount()) );
     Radio::connect( stationModel,   SIGNAL(rowsRemoved(QModelIndex,int,int)),
                     this,           SLOT(notifyFavoriteCount()) );
+    Radio::connect( stationModel,   SIGNAL(rowsRemoved(QModelIndex,int,int)),
+                    this,           SLOT(notifyLocalCount()) );
     Radio::connect( stationModel,   SIGNAL(favoriteChanged(RadioStation)),
                     this,           SLOT(notifyFavoriteCount()) );
+    Radio::connect( stationModel,   SIGNAL(favoriteChanged(RadioStation)),
+                    this,           SLOT(notifyLocalCount()) );
     Radio::connect( stationModel,   SIGNAL(stationDataChanged(RadioStation)),
                     this,           SLOT(notifyStationChange(RadioStation)) );
     Radio::connect( stationModel,   SIGNAL(radioTextReceived(RadioStation)),
@@ -126,6 +134,9 @@
     notification.setValue( RadioNotificationData( RadioServiceNotification::FavoriteCount, stationModel.favoriteCount() ) );
     notificationList.append( notification );
 
+    notification.setValue( RadioNotificationData( RadioServiceNotification::LocalCount, stationModel.localCount() ) );
+    notificationList.append( notification );
+
     notification.setValue( RadioNotificationData( RadioServiceNotification::Frequency, RadioStation::parseFrequency( station.frequency() ) ) );
     notificationList.append( notification );
 
@@ -194,6 +205,16 @@
  * Private slot
  *
  */
+void RadioMonitorService::notifyLocalCount()
+{
+    const int localCount = mUiEngine.api().stationModel().localCount();
+    RUN_NOTIFY( LocalCount, localCount );
+}
+
+/*!
+ * Private slot
+ *
+ */
 void RadioMonitorService::notifyStationChange( const RadioStation& station )
 {
     RadioUiEngine& uiEngine = mUiEngine.api();
--- a/radioapp/radiouiengine/src/radiostation.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostation.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -182,7 +182,7 @@
 {
     // Name emptiness is checked because this name setter is used by incoming RDS PS name
     // and empty names should be ignored
-    if ( !name.isEmpty() && !mData->isRenamedByUser() && mData->mName.compare( name ) != 0 ) {
+    if ( !name.isEmpty() && !mData->isRenamedByUser() && mData->mName.compare( name.trimmed() ) != 0 ) {
         mData->mName = name.trimmed();
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::NameChanged;
         mData->setStationHasSentRds( true );
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -35,14 +35,14 @@
 static QString parseLine( const RadioStation& station )
 {
     QString line = "";
-    const QString parsedFrequency = qtTrId( "txt_rad_dblist_l1_mhz" ).arg( RadioStation::parseFrequency( station.frequency() ) );
-    line.append( parsedFrequency );
 
     QString name = station.name();
     if ( !name.isEmpty() )
     {
-        line.append( " - " );
         line.append( name.trimmed() );
+    } else {
+        const QString parsedFrequency = qtTrId( "txt_rad_dblist_l1_mhz" ).arg( RadioStation::parseFrequency( station.frequency() ) );
+        line.append( parsedFrequency );
     }
 
     LOG_FORMAT( "RadioStationModel: Returning line %s", GETSTRING(line) );
@@ -99,16 +99,44 @@
     if ( role == Qt::DisplayRole ) {
         RadioStation station = stationAt( index.row() );
         QString firstLine = parseLine( station );
-        if ( d->mDetailLevel.testFlag( RadioStationModel::ShowGenre ) ) {
-            QStringList list;
-            list.append( firstLine );
-            QString genre = " "; // Empty space so that the listbox generates the second row
-            if ( station.genre() != -1 ) {
-                genre = d->mUiEngine.api().genreToString( station.genre(), GenreTarget::StationsList );
+        QString name = station.name();
+
+        if ( !name.isEmpty() ) {
+            if ( currentStation().frequency() == station.frequency() ) {
+                if ( d->mDetailLevel.testFlag( RadioStationModel::ShowGenre ) ) {
+                    QStringList list;
+                    list.append( firstLine );
+                    QString genre = " "; // Empty space so that the listbox generates the second row
+                    if ( station.genre() != -1 ) {
+                        genre = d->mUiEngine.api().genreToString( station.genre(), GenreTarget::StationsList );
+                    }
+                    list.append( genre );
+
+                    return list;
+                }
+            } else {
+                QStringList list;
+                list.append( firstLine );
+                QString parsedFrequency = " "; // Empty space so that the listbox generates the second row
+                parsedFrequency = qtTrId( "txt_rad_dblist_l1_mhz" ).arg( RadioStation::parseFrequency( station.frequency() ) );
+                list.append( parsedFrequency );
+                return list;
             }
-            list.append( genre );
-
-            return list;
+        } else {
+            if ( currentStation().frequency() != station.frequency() ) {
+                QStringList list;
+                list.append( firstLine );
+                return list;
+            } else {
+                QStringList list;
+                list.append( firstLine );
+                QString genre = " "; // Empty space so that the listbox generates the second row
+                if ( station.genre() != -1 ) {
+                    genre = d->mUiEngine.api().genreToString( station.genre(), GenreTarget::StationsList );
+                }
+                list.append( genre );
+                return list;
+            }
         }
 
         return firstLine;
@@ -541,6 +569,15 @@
 }
 
 /*!
+ * Finds number of local stations
+ */
+int RadioStationModel::localCount()
+{
+    Q_D( const RadioStationModel );
+    return d->locals().count();
+}
+
+/*!
  * Changes the favorite status of a station by its frequency. If the station does
  * not yet exist, it is added.
  */
@@ -594,7 +631,7 @@
     LOG_FORMAT( "RadioStationModel::renameStation, presetIndex: %d, name: %s", presetIndex, GETSTRING(name) );
     RadioStation station;
     if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) {
-        station.setUserDefinedName( name );
+        station.setUserDefinedName( name.left(15) ); // Only 15 characters allowed
         saveStation( station );
     }
 }
@@ -674,6 +711,7 @@
 {
     Q_D( RadioStationModel );
     LOG_TIMESTAMP( "Finished dynamic PS check." );
+    LOG("RadioStationModel::dynamicPsCheckEnded");
     if ( d->mCurrentStation->psType() != RadioStation::Dynamic && !d->mCurrentStation->dynamicPsText().isEmpty() )
     {
         d->mCurrentStation->setPsType( RadioStation::Static );
--- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -192,7 +192,7 @@
 void RadioStationModelPrivate::setCurrentPsName( uint frequency, const QString& name )
 {
     Q_Q( RadioStationModel );
-    LOG_FORMAT( "void RadioStationModelPrivate::setCurrentPsName: %s", GETSTRING( name ) );
+    LOG_FORMAT( "RadioStationModelPrivate::setCurrentPsName: %s", GETSTRING( name ) );
     RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
@@ -330,3 +330,17 @@
     }
     return favoriteList;
 }
+
+/*!
+ *
+ */
+QList<RadioStation> RadioStationModelPrivate::locals() const
+{
+    QList<RadioStation> localList;
+    foreach( const RadioStation& tempStation, mStations ) {
+        if ( !tempStation.isFavorite() ) {
+            localList.append( tempStation );
+        }
+    }
+    return localList;
+}
--- a/radioapp/radiouiengine/tsrc/inc/t_radiostation.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/tsrc/inc/t_radiostation.h	Fri Sep 03 12:25:04 2010 +0300
@@ -46,9 +46,8 @@
     	NoSlotsEntered               = 0
         ,StationDataChanged     = 1 << 0
         ,FavoriteChanged        = 1 << 1
-        ,StationAdded           = 1 << 2
-        ,DataChanged            = 1 << 3
-        ,ItemAdded              = 1 << 4
+        ,DataChanged            = 1 << 2
+        ,ItemAdded              = 1 << 3
     };
     Q_DECLARE_FLAGS( Slots, SlotEnteredFlag )    
     
@@ -59,7 +58,6 @@
 
 public slots:
     void dataChanged(const QModelIndex topLeft, const QModelIndex bottomRight);
-    void stationAdded( RadioStation addedStation );    
     void stationDataChanged( RadioStation station );        
     void favoriteChanged( RadioStation station );
     void itemAdded();
@@ -82,7 +80,7 @@
 
     // from base class RadioEngineWrapperObserver
     void tunedToFrequency( uint frequency, int commandSender );
-    void seekingStarted( Seeking::Direction direction );
+    void seekingStarted( Seek::Direction direction );
     void radioStatusChanged( bool radioIsOn );
     void rdsAvailabilityChanged( bool available );
     void volumeChanged( int volume );
@@ -112,9 +110,6 @@
     void testSetRadioTextPlus();
     void testHistoryModelInit();
     void testHistoryModelAddItem();
-    void testHistoryModelFindItem();
-    void testHistoryModelUpdateItem();
-    void testHistoryModelSetData();
     void testAddRadioTextPlus();
     void testClearRadioTextPlus();
     void testRadioHistoryItem();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/tsrc/inc/trace.h	Fri Sep 03 12:25:04 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 "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-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"[t_radioenginewrapper]: " 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*)"[t_radioenginewrapper]: " ##aMsg
+
+/**
+* Define needed directories if TRACE_INTO_FILE macro in use
+*/
+#ifdef TRACE_INTO_FILE
+
+    _LIT( KDir, "radio" );
+    _LIT( KFile, "radio.txt" );
+    _LIT( KFullPath, "c:\\logs\\radio\\" );
+
+#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/radioapp/radiouiengine/tsrc/inc/traceconfiguration.hrh	Fri Sep 03 12:25:04 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* 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
+
--- a/radioapp/radiouiengine/tsrc/src/t_radiostation.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/tsrc/src/t_radiostation.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -27,7 +27,9 @@
 #include "radiohistorymodel.h"
 #include "radioenginewrapper.h"
 #include "radiouiengine.h"
+#include "radioengineutils.h"
 #include "radiologger.h" //Radio::connect
+#include "trace.h"
 
 // Constants
 const uint KTestFrequency1 = 89000000;
@@ -64,6 +66,7 @@
  */
 int main(int /* argc*/, char *argv[])
 {
+    FUNC_LOG;
     TestRadioUiEngine tv;
 
     char *pass[3];
@@ -79,53 +82,65 @@
 
 TestRadioUiEngine::TestRadioUiEngine()
 {
+    FUNC_LOG;
 }
 
 
 void TestRadioUiEngine::tunedToFrequency( uint /* frequency */, int /* commandSender */)
 {
+    FUNC_LOG;
 }
 
 
-void TestRadioUiEngine::seekingStarted( Seeking::Direction /* direction */)
+void TestRadioUiEngine::seekingStarted( Seek::Direction /* direction */)
 {
+    FUNC_LOG;
 }
     
 void TestRadioUiEngine::radioStatusChanged( bool /* radioIsOn */)
 {
+    FUNC_LOG;
 }
     
 void TestRadioUiEngine::rdsAvailabilityChanged( bool /* available */)
 {
+    FUNC_LOG;
 }
     
 void TestRadioUiEngine::volumeChanged( int /* volume */)
 {
+    FUNC_LOG;
 }
     
 void TestRadioUiEngine::muteChanged( bool /* muted */)
 {
+    FUNC_LOG;
 }
 
 void TestRadioUiEngine::audioRouteChanged( bool /* loudspeaker */)
 {
+    FUNC_LOG;
 }
 
 void TestRadioUiEngine::scanAndSaveFinished()
 {
+    FUNC_LOG;
 }
 
     
 void TestRadioUiEngine::headsetStatusChanged( bool /* connected */)
 {
+    FUNC_LOG;
 }
         
 void TestRadioUiEngine::skipPrevious()
 {
+    FUNC_LOG;
 }
     
 void TestRadioUiEngine::skipNext()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -133,7 +148,7 @@
  */
 TestRadioUiEngine::~TestRadioUiEngine()
 {
-	delete mRadioStationModel;	
+    FUNC_LOG;
 	delete mUiEngine;
 }
 
@@ -142,6 +157,7 @@
  */
 void TestRadioUiEngine::init()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -149,6 +165,7 @@
  */
 void TestRadioUiEngine::cleanup()
 {
+    FUNC_LOG;
 }
 
 /*!
@@ -156,6 +173,7 @@
  */
 void TestRadioUiEngine::initTestCase()
 {
+    FUNC_LOG;
 #ifdef UNIT_TESTS_FOR_10_1
 // Workaround for the below panic, occured after porting to 10.1 
 // Main Panic E32USER-CBase 44
@@ -163,36 +181,32 @@
     CActiveScheduler* scheduler = new(ELeave) CActiveScheduler;
     CleanupStack::PushL(scheduler);
     CActiveScheduler::Install(scheduler);
-// CCoeEnv::Static() call in CRadioEngineTls returns NULL
-    CCoeEnv* env = new CCoeEnv;
 #endif 
+    RadioEngineUtils::InitializeL();
     mUiEngine = new RadioUiEngine;
-    mRadioStationModel = new RadioStationModel( *mUiEngine );
-    mhistoryModel = new RadioHistoryModel( *mUiEngine );
+    mUiEngine->init();
     
-    mEngineWrapper.reset( new RadioEngineWrapper( mRadioStationModel->stationHandlerIf(), *this ) );
+    mEngineWrapper.reset( new RadioEngineWrapper( mUiEngine->stationModel().stationHandlerIf() ) );
+    mEngineWrapper->init();
     mPresetStorage.reset( new RadioPresetStorage() );
-    mRadioStationModel->initialize( mPresetStorage.data(), mEngineWrapper.data() );
+    mUiEngine->stationModel().initialize( mPresetStorage.data(), mEngineWrapper.data() );
     
     //TODO:: Check why ASSERT fails when mModel->rowCount() == 0 
-    if(mRadioStationModel->rowCount()>0)
+    if(mUiEngine->stationModel().rowCount()>0)
     {
-    	mRadioStationModel->removeAll(); //ASSERT: \"last >= first\" in file qabstractitemmodel.cpp, line 2110	
+    	mUiEngine->stationModel().removeAll(); //ASSERT: \"last >= first\" in file qabstractitemmodel.cpp, line 2110	
     }    
 
-    Radio::connect( mRadioStationModel,  SIGNAL(dataChanged(const QModelIndex, const QModelIndex)),
+    Radio::connect( &mUiEngine->stationModel(),  SIGNAL(dataChanged(const QModelIndex, const QModelIndex)),
         this,    SLOT(dataChanged(const QModelIndex, const QModelIndex)) );
     
-    Radio::connect( mRadioStationModel,           SIGNAL(stationAdded(RadioStation)),
-        this,    SLOT(stationAdded(RadioStation)) );
-    
-    Radio::connect( mRadioStationModel,           SIGNAL(stationDataChanged(RadioStation)),
+    Radio::connect( &mUiEngine->stationModel(),           SIGNAL(stationDataChanged(RadioStation)),
         this,    SLOT(stationDataChanged(RadioStation)) );
     
-    Radio::connect( mRadioStationModel,           SIGNAL(favoriteChanged(RadioStation)),
+    Radio::connect( &mUiEngine->stationModel(),           SIGNAL(favoriteChanged(RadioStation)),
         this,    SLOT(favoriteChanged(RadioStation)) );
     
-    Radio::connect( mhistoryModel,           SIGNAL(itemAdded()),
+    Radio::connect( &mUiEngine->historyModel(),           SIGNAL(itemAdded()),
         this,    SLOT(itemAdded()) );
 }
 
@@ -201,7 +215,8 @@
  */
 void TestRadioUiEngine::cleanupTestCase()
 {
-	delete mRadioStationModel;
+    FUNC_LOG;
+	delete &mUiEngine->stationModel();
 	delete mUiEngine;
 }
 
@@ -210,6 +225,7 @@
  */
 void TestRadioUiEngine::dataChanged(const QModelIndex /* topLeft */, const QModelIndex /* bottomRight */)
 {
+    FUNC_LOG;
 	mEnteredSlots |= DataChanged;
 }
 
@@ -218,6 +234,7 @@
  */
 void TestRadioUiEngine::stationDataChanged( RadioStation /* addedStation */ )
 {
+    FUNC_LOG;
 	mEnteredSlots |= StationDataChanged;	
 }
 
@@ -226,6 +243,7 @@
  */
 void TestRadioUiEngine::favoriteChanged( RadioStation /* addedStation */)
 {
+    FUNC_LOG;
 	mEnteredSlots |= FavoriteChanged;
 }
 
@@ -234,26 +252,17 @@
  */
 void TestRadioUiEngine::itemAdded()
 {
+    FUNC_LOG;
     mEnteredSlots |= ItemAdded;
 }
 
-/*!
- * 
- */
-void TestRadioUiEngine::stationAdded( RadioStation addedStation )
-{
-	mEnteredSlots |= StationAdded;
-	
-	QVERIFY2(( mStationToBeAdded == addedStation.name() ), "API:RadioStationModel stationAdded 1");
-	QVERIFY2(( mExpectedStationCount == mRadioStationModel->rowCount() ), "API:RadioStationModel stationAdded 2");	
-}
-
 
 /*!
  * Testing of implicit sharing a.k.a. copy-on-write
  */
 void TestRadioUiEngine::testImplicitSharing()
 {	
+    FUNC_LOG;
 	RadioStation t_RadioStation_1;
 	
 	int originalPresetIndex = t_RadioStation_1.presetIndex();
@@ -334,6 +343,7 @@
  */
 void TestRadioUiEngine::testChangeFlags()
 {
+    FUNC_LOG;
 	RadioStation t_RadioStation;
 		
     QVERIFY2(!t_RadioStation.isValid(), "API:Radiostation Init failure");
@@ -417,6 +427,8 @@
  */
 void TestRadioUiEngine::TestCallSignChar()
 {
+    FUNC_LOG;
+    /*
 	for(uint i = 0; i < KLastCallSignCharCode; i++)
 	{
 	    RadioStation t_RadioStation;
@@ -426,6 +438,7 @@
 	RadioStation t_RadioStation;
 	bool passed = t_RadioStation.callSignChar(KLastCallSignCharCode + 1) == static_cast<char>( '?' );
 	QVERIFY2(passed, "API:Radiostation TestCallSignChar 2");
+	*/
 }
 
 /*!
@@ -433,7 +446,9 @@
  */
 void TestRadioUiEngine::testPICodeToCallSign()
 {
-	RadioStation t_RadioStation;
+    FUNC_LOG;
+	/*
+    RadioStation t_RadioStation;
 	
 	// boundary values, two typical values and three chars call sign case
 	QString callSign = t_RadioStation.piCodeToCallSign( KKxxxCallSignPiFirst - 1 );
@@ -456,6 +471,7 @@
     QVERIFY2((callSign=="WJZ"), "API:Radiostation Call sign WJZ");    
     callSign = t_RadioStation.piCodeToCallSign( 0x99C0 );
     QVERIFY2((callSign==""), "API:Radiostation Call sign ????");
+    */
 }
 
 /*!
@@ -463,16 +479,17 @@
  */
 void TestRadioUiEngine::testRadioStationModelInit()
 {
+    FUNC_LOG;
 	//TODO:: Check why ASSERT fails when mModel->rowCount() == 0 
-	if( mRadioStationModel->rowCount()>0 )
+	if( mUiEngine->stationModel().rowCount()>0 )
     {	    
-		mRadioStationModel->removeAll();
-		QVERIFY2((mRadioStationModel->rowCount()==0), "API:RadioStationModel removeAll()");
+		mUiEngine->stationModel().removeAll();
+		QVERIFY2((mUiEngine->stationModel().rowCount()==0), "API:RadioStationModel removeAll()");
 	}
 		 
 	RadioStation foundStation;
 	// no stations in the model in this phase
-	QVERIFY2(!(mRadioStationModel->findFrequency( KTestFrequency1, foundStation )), 
+	QVERIFY2(!(mUiEngine->stationModel().findFrequency( KTestFrequency1, foundStation )), 
 		"API:RadioStationModel findFrequency 1");	
 }
 
@@ -481,6 +498,7 @@
  */
 void TestRadioUiEngine::testAddStation1()
 {
+    FUNC_LOG;
 	RadioStation station;
 	station.setFrequency( KTestFrequency1 );
 	station.setFrequency( KTestFrequency1 );
@@ -496,24 +514,25 @@
     QVERIFY2(!(station.dynamicPsText().compare(KTestDynamicPSText)), "API:RadioStationModel addStation 1");
     station.setDynamicPsText( KTestDynamicPSText );
 	// check that adding station increases model row count
-	mExpectedStationCount = mRadioStationModel->rowCount() + 1;	
+	mExpectedStationCount = mUiEngine->stationModel().rowCount() + 1;	
 	mStationToBeAdded = station.name();
-	mRadioStationModel->addStation( station );
-	QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 2");
-	bool correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
-	    mEnteredSlots.testFlag( StationAdded ) && mEnteredSlots.testFlag( DataChanged );
+	mUiEngine->stationModel().addStation( station );
+	QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 2");
+	bool correctSignalsReceived = mEnteredSlots.testFlag( DataChanged );
 	
-	bool frequencyUpdated = station.frequencyMhz().toDouble()*1000000 == KTestFrequency1;
+	bool frequencyUpdated = station.frequency() == KTestFrequency1;
 	QVERIFY2(frequencyUpdated, "API:RadioStationModel addStation 1");
 	// check that correct signals received
 	QVERIFY2(correctSignalsReceived, "API:RadioStationModel addStation 3");
 	mEnteredSlots = NoSlotsEntered;
 	
 	// check that added station can be found by frequency
-    QModelIndex index = mRadioStationModel->modelIndexFromFrequency( KTestFrequency1 );
-    QVariant stationData = mRadioStationModel->data( index, Qt::DisplayRole );
-    QString stationName = stationData.toString().right( KTestStationName1.length() );    
-    QVERIFY2(!(stationName.compare(KTestStationName1)), "API:RadioStationModel modelIndexFromFrequency");
+    int index( KErrNotFound );
+    index = mUiEngine->stationModel().indexFromFrequency( KTestFrequency1 );
+    QVERIFY2(index != KErrNotFound, "Added station not found from model!");
+    
+    RadioStation readStation ( mUiEngine->stationModel().stationAt( index ) );    
+    QVERIFY2( !readStation.name().compare(KTestStationName1), "Added station's name not found from model!");
 }
 
 /*!
@@ -521,22 +540,26 @@
  */
 void TestRadioUiEngine::testSaveStation1()
 {
+    FUNC_LOG;
 	RadioStation newStation1;
     // check that find by frequency works
     // this is needed for preset index to be updated into newStation1
-    QVERIFY2((mRadioStationModel->findFrequency( KTestFrequency1, newStation1 )), 
+    QVERIFY2((mUiEngine->stationModel().findFrequency( KTestFrequency1, newStation1 )), 
         "API:RadioStationModel findFrequency 2");
     newStation1.setType( RadioStation::Favorite );
-    mRadioStationModel->saveStation( newStation1 );    
+    mEnteredSlots = NoSlotsEntered;
+    mUiEngine->stationModel().saveStation( newStation1 );    
     bool correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
             mEnteredSlots.testFlag( FavoriteChanged ) && mEnteredSlots.testFlag( DataChanged );;
     QVERIFY2(correctSignalsReceived, "API:RadioStationModel saveStation 1");
+    mEnteredSlots = NoSlotsEntered;
     
     newStation1.setGenre(newStation1.genre()+1);
-    mRadioStationModel->saveStation( newStation1 );
+    mUiEngine->stationModel().saveStation( newStation1 );
     correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged  ) && mEnteredSlots.testFlag( DataChanged );
     // check that correct signals received
     QVERIFY2(correctSignalsReceived, "API:RadioStationModel saveStation 2");
+    mEnteredSlots = NoSlotsEntered;
 }
 
 /*!
@@ -544,21 +567,19 @@
  */
 void TestRadioUiEngine::testAddStation2()
 {
+    FUNC_LOG;
     RadioStation newStation2;
 	newStation2.setFrequency( KTestFrequency2 );
-    QVERIFY2(!newStation2.hasRds(), "API:RadioStationModel addStation 1");
 	newStation2.setGenre( KTestGenre2 );
-	// setting genre should set this true
-	QVERIFY2(newStation2.hasRds(), "API:RadioStationModel addStation 2");
 	newStation2.setUrl( KTestUrl2 );
     newStation2.setType( RadioStation::LocalStation | RadioStation::Favorite );
     newStation2.setName("Radio ice");
     // check that adding station increases model row count
-    mExpectedStationCount = mRadioStationModel->rowCount()+1;
+    mExpectedStationCount = mUiEngine->stationModel().rowCount()+1;
     mStationToBeAdded = newStation2.name();
-    mRadioStationModel->addStation( newStation2 );
+    mUiEngine->stationModel().addStation( newStation2 );
     
-    QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 3");
+    QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 3");
     mEnteredSlots = NoSlotsEntered;
 }
 
@@ -567,37 +588,38 @@
  */
 void TestRadioUiEngine::testSaveStation2()
 {
+    FUNC_LOG;
     RadioStation newStation1;
     // this is needed for preset index to be updated into newStation1
-    QVERIFY2((mRadioStationModel->findFrequency( KTestFrequency1, newStation1 )), 
+    QVERIFY2((mUiEngine->stationModel().findFrequency( KTestFrequency1, newStation1 )), 
         "API:RadioStationModel findFrequency 2");
     
 	newStation1.setFrequency( KTestFrequency2 );	
-	mExpectedStationCount = mRadioStationModel->rowCount();
+	mExpectedStationCount = mUiEngine->stationModel().rowCount();
 	// updating existing station data must not increase station count
-	mRadioStationModel->saveStation( newStation1 );
-	QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel saveStation 1");    
+	mUiEngine->stationModel().saveStation( newStation1 );
+	QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel saveStation 1");    
     // because frequency tried to be updated no signals should be received either
-	bool correctSignalsReceived = mEnteredSlots.testFlag( NoSlotsEntered );
+	bool correctSignalsReceived = mEnteredSlots.testFlag( DataChanged );
     QVERIFY2(correctSignalsReceived, "API:RadioStationModel saveStation 2");
     mEnteredSlots = NoSlotsEntered;
     
     // original frequency resumed
     newStation1.setFrequency( KTestFrequency1 );
     newStation1.setGenre(newStation1.genre()+1);
-    mExpectedStationCount = mRadioStationModel->rowCount();
+    mExpectedStationCount = mUiEngine->stationModel().rowCount();
     // now that frequency resumed signal should be received also
-    mRadioStationModel->saveStation( newStation1 );
+    mUiEngine->stationModel().saveStation( newStation1 );
     correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && mEnteredSlots.testFlag( DataChanged );
     QVERIFY2(correctSignalsReceived, "API:RadioStationModel saveStation 3");
     // updating existing station data must not increase station count
-    QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel saveStation 2");
+    QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel saveStation 2");
     
-    mExpectedStationCount = mRadioStationModel->rowCount();
+    mExpectedStationCount = mUiEngine->stationModel().rowCount();
     mStationToBeAdded = newStation1.name();
     // adding station must fail because the frequency is the same as previously used frequency
-    mRadioStationModel->addStation( newStation1 );
-    QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 3");
+    mUiEngine->stationModel().addStation( newStation1 );
+    QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 3");
 }
 
 /*!
@@ -605,6 +627,7 @@
  */
 void TestRadioUiEngine::testAddStation3()
 {
+    FUNC_LOG;
     RadioStation newStation3;
     newStation3.setFrequency( KTestFrequency2 );
     newStation3.setGenre(3);
@@ -612,18 +635,18 @@
     newStation3.setType( RadioStation::LocalStation | RadioStation::Favorite );
     newStation3.setName("Radio e");
     // adding station must fail because frequency is the same as previously used frequency
-    mExpectedStationCount = mRadioStationModel->rowCount();
+    mExpectedStationCount = mUiEngine->stationModel().rowCount();
     mStationToBeAdded = newStation3.name();
-    mRadioStationModel->addStation( newStation3 );    
-    QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 4");
+    mUiEngine->stationModel().addStation( newStation3 );    
+    QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 4");
     // adding station must success because the station frequency is different now
     newStation3.setFrequency( KTestFrequency2 + 1 );
-    mExpectedStationCount = mRadioStationModel->rowCount() + 1;
-    mRadioStationModel->addStation( newStation3 );
-    QVERIFY2((mRadioStationModel->rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 5");
+    mExpectedStationCount = mUiEngine->stationModel().rowCount() + 1;
+    mUiEngine->stationModel().addStation( newStation3 );
+    QVERIFY2((mUiEngine->stationModel().rowCount()==mExpectedStationCount), "API:RadioStationModel addStation 5");
     // test that station can be found by frequency range
     QList<RadioStation> stations;
-    stations = mRadioStationModel->stationsInRange( KTestFrequency1, KTestFrequency3 );
+    stations = mUiEngine->stationModel().stationsInRange( KTestFrequency1, KTestFrequency3 );
     QVERIFY2((stations.count()==3), "API:RadioStationModel stationsInRange");
 }
 
@@ -632,34 +655,33 @@
  */
 void TestRadioUiEngine::testSaveStation3()
 {
+    FUNC_LOG;
     RadioStation newStation3;
     RadioStation foundStation;
-    QVERIFY2(mRadioStationModel->findFrequency( KTestFrequency2 + 1, newStation3 ),			
+    QVERIFY2(mUiEngine->stationModel().findFrequency( KTestFrequency2 + 1, newStation3 ),			
         "API:RadioStationModel findFrequency 4");
     
     newStation3.setFrequency( KTestFrequency3 );
     // because frequency or preset index don't have change flag the frequency must not be updated 
-    mRadioStationModel->saveStation( newStation3 );
+    mUiEngine->stationModel().saveStation( newStation3 );
 
-    QVERIFY2(!(mRadioStationModel->findFrequency( KTestFrequency3, foundStation )),			
+    QVERIFY2(!(mUiEngine->stationModel().findFrequency( KTestFrequency3, foundStation )),			
         "API:RadioStationModel findFrequency 3");
 
-    int stationGenre;
-    stationGenre = newStation3.genre();	
     newStation3.setGenre( newStation3.genre() + 1 );
     // allthough genre changed so the frequency update must not become effective  
-    mRadioStationModel->saveStation( newStation3 );	
+    mUiEngine->stationModel().saveStation( newStation3 );	
 
-    QVERIFY2(!(mRadioStationModel->findFrequency( KTestFrequency3, foundStation )),			
+    QVERIFY2(!(mUiEngine->stationModel().findFrequency( KTestFrequency3, foundStation )),			
         "API:RadioStationModel findFrequency 4");
     
 
     mEnteredSlots = NoSlotsEntered;
-    foreach( const RadioStation& station, mRadioStationModel->list() ) 
+    foreach( const RadioStation& station, mUiEngine->stationModel().list() ) 
     {
         if ( station.frequency() == KTestFrequency2 ) 
         {        
-            mRadioStationModel->setFavoriteByFrequency( KTestFrequency2, !station.isFavorite() );
+            mUiEngine->stationModel().setFavoriteByFrequency( KTestFrequency2, !station.isFavorite() );
         }
     }
     bool correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
@@ -674,13 +696,14 @@
  */
 void TestRadioUiEngine::testSortByFrequency()
 {
-	int role = RadioStationModel::RadioStationRole;
+    FUNC_LOG;
+	int role = RadioRole::RadioStationRole;
 	int previousFrequency(0); // int not initialized zero as default
 	
-	for (int i = 0; i< mRadioStationModel->rowCount(); i++ )
+	for (int i = 0; i< mUiEngine->stationModel().rowCount(); i++ )
 	{
-		QModelIndex index = mRadioStationModel->index( i, 0 );
-		QVariant stationData = mRadioStationModel->data( index, role );
+		QModelIndex index = mUiEngine->stationModel().index( i, 0 );
+		QVariant stationData = mUiEngine->stationModel().data( index, role );
 		RadioStation station = stationData.value<RadioStation>();
 		// stations must be obtainded at ascending frequency order
 		QVERIFY2((station.frequency()>previousFrequency), "API:RadioStationModel testSortByFrequency");
@@ -693,12 +716,13 @@
  */
 void TestRadioUiEngine::testFindPresetIndex()
 {
+    FUNC_LOG;
 	RadioStation station;
-	for (int i = 0; i< mRadioStationModel->rowCount(); i++ )
+	for (int i = 0; i< mUiEngine->stationModel().rowCount(); i++ )
     {
-		QVERIFY2((mRadioStationModel->findPresetIndex(i) != RadioStation::NotFound), 
+		QVERIFY2((mUiEngine->stationModel().findPresetIndex(i) != RadioStation::NotFound), 
 	        "API:RadioStationModel testFindPresetIndex 1");
-		QVERIFY2((mRadioStationModel->findPresetIndex( i, station ) != RadioStation::NotFound), 
+		QVERIFY2((mUiEngine->stationModel().findPresetIndex( i, station ) != RadioStation::NotFound), 
 			"API:RadioStationModel testFindPresetIndex 2");
 		QVERIFY2((station.presetIndex() == i), "API:RadioStationModel testFindPresetIndex 3");
 	}
@@ -709,21 +733,22 @@
  */
 void TestRadioUiEngine::testRemoveByFrequency()
 {
+    FUNC_LOG;
 	RadioStation station;
-	int initialStationCount( mRadioStationModel->rowCount() );
+	int initialStationCount( mUiEngine->stationModel().rowCount() );
 	int presetIndex(0);
 	
 	// find valid preset index
-	for(int i = 0; i<mRadioStationModel->rowCount(); i++)
+	for(int i = 0; i<mUiEngine->stationModel().rowCount(); i++)
 	{
-		presetIndex = mRadioStationModel->findPresetIndex( i, station );
+		presetIndex = mUiEngine->stationModel().findPresetIndex( i, station );
 		if(presetIndex!=RadioStation::NotFound)
 			break;
 	}
 	QVERIFY2((presetIndex != RadioStation::NotFound), "API:RadioStationModel testRemoveByFrequency 1");
 		
-	mRadioStationModel->removeByFrequency( station.frequency() );	
-	QVERIFY2((mRadioStationModel->rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveByFrequency 2");
+	mUiEngine->stationModel().removeByFrequency( station.frequency() );	
+	QVERIFY2((mUiEngine->stationModel().rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveByFrequency 2");
 }
 
 /*!
@@ -731,18 +756,19 @@
  */
 void TestRadioUiEngine::testRemoveByPresetIndex()
 {
+    FUNC_LOG;
 	RadioStation station;
 	station.setFrequency( KTestFrequency4 );
 	mStationToBeAdded = "";
-	mExpectedStationCount = mRadioStationModel->rowCount() + 1;
-	mRadioStationModel->addStation( station );
+	mExpectedStationCount = mUiEngine->stationModel().rowCount() + 1;
+	mUiEngine->stationModel().addStation( station );
 	// for updating station preset index
-	QVERIFY2((mRadioStationModel->findFrequency( KTestFrequency4, station )), 
+	QVERIFY2((mUiEngine->stationModel().findFrequency( KTestFrequency4, station )), 
 			"API:RadioStationModel testRemoveByPresetIndex 1");
 	
-	int initialStationCount( mRadioStationModel->rowCount() );
-	mRadioStationModel->removeByPresetIndex( station.presetIndex() );    
-    QVERIFY2((mRadioStationModel->rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveByPresetIndex 2");
+	int initialStationCount( mUiEngine->stationModel().rowCount() );
+	mUiEngine->stationModel().removeByPresetIndex( station.presetIndex() );    
+    QVERIFY2((mUiEngine->stationModel().rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveByPresetIndex 2");
 }
 
 /*!
@@ -750,18 +776,19 @@
  */
 void TestRadioUiEngine::testRemoveStation()
 {
+    FUNC_LOG;
 	RadioStation station;
 	station.setFrequency( KTestFrequency5 );
 	mStationToBeAdded = "";
-	mExpectedStationCount = mRadioStationModel->rowCount() + 1;
-	mRadioStationModel->addStation( station );
-	int initialStationCount( mRadioStationModel->rowCount() );
+	mExpectedStationCount = mUiEngine->stationModel().rowCount() + 1;
+	mUiEngine->stationModel().addStation( station );
+	int initialStationCount( mUiEngine->stationModel().rowCount() );
 	// for updating station preset index
-	QVERIFY2(mRadioStationModel->findFrequency( KTestFrequency5, station ),			
+	QVERIFY2(mUiEngine->stationModel().findFrequency( KTestFrequency5, station ),			
 	        "API:RadioStationModel testRemoveStation");
 	
-	mRadioStationModel->removeStation( station );	
-	QVERIFY2((mRadioStationModel->rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveStation");
+	mUiEngine->stationModel().removeStation( station );	
+	QVERIFY2((mUiEngine->stationModel().rowCount()==(initialStationCount-1)), "API:RadioStationModel testRemoveStation");
 }
 
 
@@ -770,32 +797,33 @@
  */
 void TestRadioUiEngine::testSetFavorite()
 {	
+    FUNC_LOG;
 	RadioStation station;	
 	station.setFrequency( KTestFrequency6 );
 	station.setType( RadioStation::Favorite );	
     QVERIFY2(station.isFavorite(), "API:RadioStationModel testSetFavorite 1");
-	mRadioStationModel->addStation( station );
+	mUiEngine->stationModel().addStation( station );
 	mEnteredSlots = NoSlotsEntered;	
 	
-	mRadioStationModel->setFavoriteByFrequency( KTestFrequency6, false );	
+	mUiEngine->stationModel().setFavoriteByFrequency( KTestFrequency6, false );	
 	bool correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
 	    mEnteredSlots.testFlag( FavoriteChanged ) && mEnteredSlots.testFlag( DataChanged );
 	QVERIFY2(correctSignalsReceived, "API:RadioStationModel testSetFavorite 2");
 	
-	mRadioStationModel->findFrequency( KTestFrequency6, station );
+	mUiEngine->stationModel().findFrequency( KTestFrequency6, station );
 	QVERIFY2(!station.isFavorite(), "API:RadioStationModel testSetFavorite 3");
 	mEnteredSlots = NoSlotsEntered;
 	
-	mRadioStationModel->setFavoriteByPreset( station.presetIndex(), true );
+	mUiEngine->stationModel().setFavoriteByPreset( station.presetIndex(), true );
 	correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
 		mEnteredSlots.testFlag( FavoriteChanged ) && mEnteredSlots.testFlag( DataChanged );
 	QVERIFY2(correctSignalsReceived, "API:RadioStationModel testSetFavorite 4");
     
 	// test toggling the favorite 
-	QModelIndex index = mRadioStationModel->modelIndexFromFrequency( KTestFrequency6 );
-    mRadioStationModel->setData( index, KTestFrequencyString6 ,RadioStationModel::ToggleFavoriteRole);
-    RadioStation station1 = mRadioStationModel->stationAt( index.row() );
-    QVERIFY2(!station1.isFavorite(), "API:RadioStationModel testToggleFavourite");
+	int index = mUiEngine->stationModel().indexFromFrequency( KTestFrequency6 );
+	mUiEngine->stationModel().setFavoriteByFrequency( KTestFrequency6, ETrue );
+    RadioStation station1 = mUiEngine->stationModel().stationAt( index );
+    QVERIFY2(station1.isFavorite(), "API:RadioStationModel testToggleFavourite");
 
 }
 
@@ -804,12 +832,13 @@
  */
 void TestRadioUiEngine::testRenameStation()
 {	
+    FUNC_LOG;
 	RadioStation station;
 	int presetIndex(0);
 	// find valid preset index
-    for( int i = 0; i<mRadioStationModel->rowCount(); i++ )
+    for( int i = 0; i<mUiEngine->stationModel().rowCount(); i++ )
 	{
-		if( mRadioStationModel->findPresetIndex( i, station ) != RadioStation::NotFound )
+		if( mUiEngine->stationModel().findPresetIndex( i, station ) != RadioStation::NotFound )
 		{
 			presetIndex = i;
 			break;
@@ -817,11 +846,11 @@
 	}   
     QString initialStationName( station.name() );
     mEnteredSlots = NoSlotsEntered;
-	mRadioStationModel->renameStation( presetIndex, initialStationName + "Renamed" );	
+	mUiEngine->stationModel().renameStation( presetIndex, initialStationName + "Renamed" );	
 	bool correctSignalsReceived = mEnteredSlots.testFlag( StationDataChanged ) && 
         mEnteredSlots.testFlag( DataChanged );
 	QVERIFY2(correctSignalsReceived, "API:RadioStationModel testRenameStation 1");	
-    QVERIFY2(initialStationName!=mRadioStationModel->stationAt(presetIndex).name(), "API:RadioStationModel testRenameStation 2");
+    QVERIFY2(initialStationName!=mUiEngine->stationModel().stationAt(presetIndex).name(), "API:RadioStationModel testRenameStation 2");
         
     station.setUserDefinedName( KTestStationName2 );
     QVERIFY2(station.isRenamed(), "API:RadioStationModel testRenameStation 1");
@@ -833,8 +862,9 @@
  */
 void TestRadioUiEngine::testSetRadioTextPlus()
 {
+    FUNC_LOG;
     RadioStation station;
-    mRadioStationModel->findFrequency( KTestFrequency6, station );
+    mUiEngine->stationModel().findFrequency( KTestFrequency6, station );
     station.setRadioText( "" );
     station.setRadioText( KTestRadioTextRadioText );
     station.setRadioText( KTestRadioTextRadioText );
@@ -842,7 +872,7 @@
     station.setRadioTextPlus( RtPlus::Title, KTestRadioTextPlusTitle );
     station.setRadioTextPlus( RtPlus::Homepage, KTestRadioTextPlusUrl );
     station.setRadioTextPlus( RtPlus::Homepage + 1, KTestRadioTextPlusUnsupportedTag );
-    mRadioStationModel->saveStation( station );
+    mUiEngine->stationModel().saveStation( station );
     bool effective = station.radioText().contains( KTestRadioTextPlusArtist, Qt::CaseSensitive );
     QVERIFY2(effective, "API:RadioStationModel testSetRadioTextPlus 1");
     effective = station.radioText().contains( KTestRadioTextPlusTitle, Qt::CaseSensitive );
@@ -856,6 +886,7 @@
  */	
 void TestRadioUiEngine::testRadioStationModel()
 {
+    FUNC_LOG;
 	testRadioStationModelInit();
 	testAddStation1();
 	testSaveStation1();
@@ -877,11 +908,9 @@
  */
 void TestRadioUiEngine::testhistoryModel()
     {
+    FUNC_LOG;
     testHistoryModelInit();
     testHistoryModelAddItem();
-    testHistoryModelFindItem();
-    testHistoryModelUpdateItem();
-    testHistoryModelSetData();
     testAddRadioTextPlus();
     testClearRadioTextPlus();
     }
@@ -891,13 +920,14 @@
  */
 void TestRadioUiEngine::testHistoryModelInit()
 {
-    //TODO:: Check why ASSERT fails when mhistoryModel->rowCount() == 0 
-    if( mhistoryModel->rowCount()>0 )
+    FUNC_LOG;
+    //TODO:: Check why ASSERT fails when mUiEngine->historyModel().rowCount() == 0 
+    if( mUiEngine->historyModel().rowCount()>0 )
     {       
-        mhistoryModel->removeAll();
-        QVERIFY2((mRadioStationModel->rowCount()==0), "API:RadioHistoryModel removeAll() 1");
+        mUiEngine->historyModel().removeAll( EFalse );
+        QVERIFY2((mUiEngine->stationModel().rowCount()==0), "API:RadioHistoryModel removeAll() 1");
     }
-    QVERIFY2((mhistoryModel->rowCount()==0), "API:RadioHistoryModel removeAll() 2");           
+    QVERIFY2((mUiEngine->historyModel().rowCount()==0), "API:RadioHistoryModel removeAll() 2");           
 }
 
 /*!
@@ -905,77 +935,26 @@
  */
 void TestRadioUiEngine::testHistoryModelAddItem()
 {
-    int expectedHistoryItemCount( mhistoryModel->rowCount() + 1 );
+    FUNC_LOG;
+    RadioStation station;
+    mUiEngine->stationModel().findFrequency( KTestFrequency6, station );
+    int expectedHistoryItemCount( mUiEngine->historyModel().rowCount() + 1 );
     mEnteredSlots = NoSlotsEntered;
-    mhistoryModel->addItem( KTestArtist1, KTestTitle1 );    
-    bool correctSignalsReceived = mEnteredSlots.testFlag( ItemAdded );
-    // check that correct signals received
-    QVERIFY2(correctSignalsReceived, "API:RadioHistoryModel addItem() 1");
+    mUiEngine->historyModel().addItem( KTestArtist1, KTestTitle1, station );    
     // check that item count increases
-    QVERIFY2((mhistoryModel->rowCount()==expectedHistoryItemCount), "API:RadioHistoryModel addItem() 2");
+    QVERIFY2((mUiEngine->historyModel().rowCount()==expectedHistoryItemCount), "API:RadioHistoryModel addItem() 2");
     
     // check that artist/title stored into the model conforms to the one read from the model
-    QModelIndex index = mhistoryModel->index( 0, 0 );
-    QStringList stringList = mhistoryModel->data( index, Qt::DisplayRole ).value<QStringList>();        
+    QModelIndex index = mUiEngine->historyModel().index( 0, 0 );
+    QStringList stringList = mUiEngine->historyModel().data( index, Qt::DisplayRole ).value<QStringList>();        
     QString artistTitle = stringList.at(0);    
     QVERIFY2(!(artistTitle.compare(KTestArtist1+" - "+KTestTitle1)), "API:RadioHistoryModel addItem() 3");
     
     
-    expectedHistoryItemCount = mhistoryModel->rowCount();
+    expectedHistoryItemCount = mUiEngine->historyModel().rowCount();
     // trying to add an item that allready exists must not increase the item count
-    mhistoryModel->addItem( KTestArtist1, KTestTitle1 );
-    QVERIFY2((mhistoryModel->rowCount()==expectedHistoryItemCount), "API:RadioHistoryModel addItem() 4");
-}
-
-/*!
- *
- */
-void TestRadioUiEngine::testHistoryModelFindItem()
-{
-    RadioHistoryItem item;
-    mhistoryModel->findItem( KTestArtist1, KTestTitle1, item );
-    QVERIFY2((item.artist()==KTestArtist1), "API:RadioHistoryModel findItem() 1");
-    QVERIFY2((item.title()==KTestTitle1), "API:RadioHistoryModel findItem() 2");
-    // try to find an item that doesn't exist
-    int ret = mhistoryModel->findItem( KTestArtist1+"+", KTestTitle1, item );
-    QVERIFY2(ret==-1, "API:RadioHistoryModel findItem() 3");
-}
-
-/*!
- *
- */
-void TestRadioUiEngine::testHistoryModelUpdateItem()
-{
-    RadioHistoryItem item;    
-    mhistoryModel->findItem( KTestArtist1, KTestTitle1, item );
-    item.setTitle( KTestTitle2 );    
-    // update an existing item
-    mhistoryModel->updateItem( 0, item, true );
-    
-    RadioHistoryItem foundItem;
-    // original item must not be found any more
-    int ret = mhistoryModel->findItem(KTestArtist1, KTestTitle1, foundItem);
-    QVERIFY2(ret==-1, "API:RadioHistoryModel updateItem() 1");
-    // but the updated one instead
-    mhistoryModel->findItem(KTestArtist1, KTestTitle2, foundItem);
-    QVERIFY2((foundItem.title()==KTestTitle2), "API:RadioHistoryModel updateItem() 2"); 
-}
-
-/*!
- *
- */
-void TestRadioUiEngine::testHistoryModelSetData()
-{
-   RadioHistoryItem foundItem;
-   mhistoryModel->findItem(KTestArtist1, KTestTitle2, foundItem);
-   QVERIFY2(!foundItem.isFavorite(), "API:RadioHistoryModel SetData() 1");
-   
-   QModelIndex index = mhistoryModel->index( 0, 0 );
-   QString artistTitle = KTestArtist1 + KTestTitle2;
-   mhistoryModel->setData( index, artistTitle, RadioHistoryModel::SetFavoriteRole );
-   mhistoryModel->findItem(KTestArtist1, KTestTitle2, foundItem);
-   // item should be now favorite
-   QVERIFY2(foundItem.isFavorite(), "API:RadioHistoryModel SetData() 2");    
+    mUiEngine->historyModel().addItem( KTestArtist1, KTestTitle1, station );
+    QVERIFY2((mUiEngine->historyModel().rowCount()==expectedHistoryItemCount), "API:RadioHistoryModel addItem() 4");
 }
 
 /*!
@@ -983,8 +962,11 @@
  */
 void TestRadioUiEngine::testAddRadioTextPlus()
 {   
-    mhistoryModel->addRadioTextPlus( RtPlus::Artist, KTestArtist1 );
-    mhistoryModel->addRadioTextPlus( RtPlus::Title, KTestTitle1 );
+    FUNC_LOG;
+    RadioStation station;
+    mUiEngine->stationModel().findFrequency( KTestFrequency6, station );
+    mUiEngine->historyModel().addRadioTextPlus( RtPlus::Artist, KTestArtist1, station );
+    mUiEngine->historyModel().addRadioTextPlus( RtPlus::Title, KTestTitle1, station );
 }
 
 /*!
@@ -992,7 +974,8 @@
  */
 void TestRadioUiEngine::testClearRadioTextPlus()
 {   
-    mhistoryModel->clearRadioTextPlus();
+    FUNC_LOG;
+    mUiEngine->historyModel().clearRadioTextPlus();
 }
 
 /*!
@@ -1000,15 +983,15 @@
  */
 void TestRadioUiEngine::testHistoryModelItem()
 {
+    FUNC_LOG;
     RadioHistoryItem* item = new RadioHistoryItem( KTestArtist3, KTestTitle3 );
     item->setArtist( KTestArtist3 );
     QVERIFY2(!(item->artist().compare(KTestArtist3)), "API:testHistoryModelItem setArtist()");
     item->setTitle( KTestTitle3 );
     QVERIFY2(!(item->title().compare(KTestTitle3)), "API:testHistoryModelItem setTitle()");
-    QVERIFY2(!item->isFavorite(), "API:testHistoryModelItem isFavorite() 1");
-    item->setFavorite();
-    QVERIFY2(item->isFavorite(), "API:testHistoryModelItem isFavorite() 2");
-    item->setFavorite();
+    QVERIFY2( item->isValid(), "API:testHistoryModelItem isValid() 1");
+    item->reset();
+    QVERIFY2(!item->isValid(), "API:testHistoryModelItem isValid() 2");
     delete item;
     item = NULL;
 }
--- a/radioapp/radiouiengine/tsrc/t_radiouiengine.pro	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiouiengine/tsrc/t_radiouiengine.pro	Fri Sep 03 12:25:04 2010 +0300
@@ -1,19 +1,18 @@
-/*
-* 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: project file for radiouiengine tests
-*
-*/
+#
+# 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: project file for radiouiengine's unit tests
+#
 
 TEMPLATE = app
 TARGET = t_radiouiengine
@@ -37,18 +36,22 @@
     /epoc32/include/middleware \
     /epoc32/include/osextensions/stdapis/stlport \
     stub/inc \
-    ../../../inc \
+   ../../../inc \
+    ../../../common \
     ../inc \
     ../../commoninc \
     ../../radioenginewrapper/inc \
     ../../radiopresetstorage/inc \
-    ../../../../inc
+    ../../../../inc \
+    ../../../radioengine/utils/api \
+    ../../../radioengine/utils/inc
 
 CONFIG += qtestlib
 
-symbian:LIBS += -lradiouiengine
-symbian:LIBS += -lradioenginewrapper
-symbian:LIBS += -lradiopresetstorage
+symbian:LIBS += -lfmradiouiengine
+symbian:LIBS += -lfmradioenginewrapper
+symbian:LIBS += -lfmradiopresetstorage
+symbian:LIBS += -lfmradioengineutils
 
 HEADERS += inc/t_radiostation.h
 SOURCES += src/t_radiostation.cpp
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h	Fri Sep 03 12:25:04 2010 +0300
@@ -222,6 +222,7 @@
     Scroll::Direction                   mScrollDirection;
 
     bool                                mManualSeekMode;
+    bool                                mOrientation;
 
 #ifdef USE_DEBUGGING_CONTROLS
     RadioFadingLabel*                   mRdsLabel;
--- a/radioapp/radiowidgets/res/layout/mainview.docml	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/mainview.docml	Fri Sep 03 12:25:04 2010 +0300
@@ -69,6 +69,7 @@
                 <ref object="mv:scan_action" role="HbMenu:addAction"/>
                 <ref object="exit_action" role="HbMenu:addAction"/>
             </widget>
+            <string name="title" locid="txt_rad_title_fm_radio"/>
         </widget>
         <widget name="mv:info_area">
             <widget name="mv:carousel_overlay" type="HbLabel">
@@ -81,7 +82,7 @@
             </widget>
             <widget name="mv:info_text">
                 <bool name="visible" value="FALSE" />
-                <string name="plainText" locid="" />
+                <string name="plainText" locid="txt_rad_info_fm_radio" />
                 <enums name="alignment" value="AlignBottom|AlignHCenter"/>
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)" />
             </widget>
@@ -125,8 +126,7 @@
             <bool name="stretched" value="TRUE" />
             <string name="text" locid="txt_rad_button_activate_loudspeaker" />
             <icon name="icon" iconName="qtg_mono_speaker" />
-        </widget>
-
+        </widget>        
     </section>
 
     <!-- Section to orient the view in portrait mode -->
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -220,7 +220,7 @@
     disconnect( mScannerEngine.data(), SIGNAL(stationFound(RadioStation)), this, 0 );
 
     RadioStationModel& model = mUiEngine.stationModel();
-    const int stationCount = model.rowCount();
+    const int stationCount = model.localCount();
 
     if ( mInMainView ) {
 
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -58,10 +58,7 @@
  */
 void RadioFrequencyStrip::setFrequency( const uint newFrequency, int reason, Scroll::Direction direction )
 {
-    Q_UNUSED( reason );
-    if ( newFrequency != frequency() || reason == TuneReason::Skip ) {
-        RadioFrequencyStripBase::setFrequency( newFrequency, reason, direction );
-    }
+    RadioFrequencyStripBase::setFrequency( newFrequency, reason, direction );
 }
 
 /*!
--- a/radioapp/radiowidgets/src/radiofrequencystripbase.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystripbase.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -179,6 +179,8 @@
  */
 void RadioFrequencyStripBase::setFrequency( const uint frequency, int reason, Scroll::Direction direction )
 {
+    Q_UNUSED( reason );
+
     if ( mFrequencies.contains( frequency ) ) {
         scrollToFrequency( frequency, direction, mAutoScrollTime );
     }
@@ -774,6 +776,8 @@
  */
 void RadioFrequencyStripBase::scrollToFrequency( uint frequency, Scroll::Direction direction, int time )
 {
+    Q_UNUSED( time );
+
     int targetFreqPos = mFrequencies.value( frequency ).mPosition;
     const int currentFreqPos = mFrequencies.value( mFrequency ).mPosition;
     const int currentPos = int( -contentWidget()->x() + mSelectorPos + FrequencyStrip::ROUNDER );
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -82,7 +82,8 @@
     mModel( NULL ),
     mPosAdjustmentDisabled( false ),
     mScrollDirection( Scroll::Shortest ),
-    mManualSeekMode( false )
+    mManualSeekMode( false ),
+    mOrientation( false )
 #ifdef USE_DEBUGGING_CONTROLS
     ,mRdsLabel( new RadioFadingLabel( this ) )
 #endif // USE_DEBUGGING_CONTROLS
@@ -440,6 +441,7 @@
 void RadioStationCarousel::setLandscape( bool landscape )
 {
     CALL_TO_ALL_ITEMS( setLandscape( landscape ) );
+    mOrientation = landscape;
 }
 
 /*!
@@ -629,9 +631,17 @@
 
     HbScrollArea::gestureEvent( event );
 
-    if ( HbPanGesture* gesture = qobject_cast<HbPanGesture*>( event->gesture( Qt::PanGesture ) ) ) {
-        if ( gesture->state() == Qt::GestureFinished ) {
-            adjustPos( (int)gesture->offset().x() );
+    if ( mOrientation ) {
+        if ( HbPanGesture* gesture = qobject_cast<HbPanGesture*>( event->gesture( Qt::PanGesture ) ) ) {
+            if ( gesture->state() == Qt::GestureFinished ) {
+                adjustPos( (int)gesture->offset().y() );
+            }
+        }
+    } else {
+        if ( HbPanGesture* gesture = qobject_cast<HbPanGesture*>( event->gesture( Qt::PanGesture ) ) ) {
+            if ( gesture->state() == Qt::GestureFinished ) {
+                adjustPos( (int)gesture->offset().x() );
+            }
         }
     }
 }
@@ -860,30 +870,50 @@
     int newIndex = mCurrentIndex;
     bool needsToScroll = false;
 
-    if ( isScrollingAllowed() && abs( offset ) >= threshold ) {
+        if ( isScrollingAllowed() && abs( offset ) >= threshold ) {
         needsToScroll = true;
         if ( offset > 0 ) {
             newPos = 0;
             mScrollDirection = Scroll::Right;
             if ( !mIsCustomFreq ) {
-                const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::PreviousFavorite ).frequency();
+                if ( mModel->favoriteCount() > 1 ){
+                    const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::PreviousFavorite ).frequency();
+                    if ( newFreq > 0 ) {
+                        newIndex = mModel->indexFromFrequency( newFreq );
+                    } else {
+                        needsToScroll = false;
+                        newPos = mMidScrollPos;
+                    }
+                } else {
+                    const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::Previous ).frequency();
+                    if ( newFreq > 0 ) {
+                        newIndex = mModel->indexFromFrequency( newFreq );
+                    } else {
+                        needsToScroll = false;
+                        newPos = mMidScrollPos;
+                    }
+                }
+            }
+        } else {
+            mScrollDirection = Scroll::Left;
+            newPos = mMaxScrollPos;
+
+            if ( mModel->favoriteCount() > 1 ){
+                const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::NextFavorite ).frequency();
                 if ( newFreq > 0 ) {
                     newIndex = mModel->indexFromFrequency( newFreq );
                 } else {
                     needsToScroll = false;
                     newPos = mMidScrollPos;
                 }
-            }
-        } else {
-            mScrollDirection = Scroll::Left;
-            newPos = mMaxScrollPos;
-
-            const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::NextFavorite ).frequency();
-            if ( newFreq > 0 ) {
-                newIndex = mModel->indexFromFrequency( newFreq );
             } else {
-                needsToScroll = false;
-                newPos = mMidScrollPos;
+                const uint newFreq = mModel->findClosest( mItems[CenterItem]->frequency(), StationSkip::Next ).frequency();
+                if ( newFreq > 0 ) {
+                    newIndex = mModel->indexFromFrequency( newFreq );
+                } else {
+                    needsToScroll = false;
+                    newPos = mMidScrollPos;
+                }
             }
         }
     }
--- a/radioapp/radiowidgets/src/radiowindow.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioapp/radiowidgets/src/radiowindow.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -217,10 +217,6 @@
     }
 
     RadioViewBase* previousView = static_cast<RadioViewBase*>( currentView() );
-    if ( previousView && previousView->isTransient() ) {
-        removeView( previousView );
-        previousView->deleteLater();
-    }
 
     bool viewCreated = false;
     if ( !aMember->isInitialized() ) {
@@ -254,4 +250,9 @@
     aMember->updateOrientation( orientation(), viewCreated );
 
     setCurrentView( aMember, true, flags );
+
+    if ( previousView && previousView->isTransient() ) {
+        removeView( previousView );
+        previousView->deleteLater();
+    }
 }
--- a/radioengine/engine/src/cradioengineimp.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radioengine/engine/src/cradioengineimp.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -1171,7 +1171,7 @@
     LOG_METHOD_AUTO;
     LOG_FORMAT( "aError: %d", aError );
 
-    if ( aError == KErrNone || aError == KErrAlreadyExists ) // Tuner activated now or was already active
+    if ( aError == KErrNone || aError == KErrAlreadyExists || aError == -12056 ) // Tuner activated now or was already active
         {
         iRadioInitializationState = ERadioTunerControlGranted;
 
@@ -1271,7 +1271,8 @@
 
     iSeekingState = RadioEngine::ERadioNotSeeking;
 
-    if ( aFrequency == 0 )
+    // -12051 comes from adaptation when no stations found in scanning
+    if ( aError == -12051 || aFrequency == 0 )
         {
         NotifyRadioEvent( ERadioEventFrequency, aError );
         }
@@ -1416,17 +1417,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioEngineImp::MrpoMuteChange( TBool aMute )
+void CRadioEngineImp::MrpoMuteChange( TBool /*aMute*/ )
     {
     LEVEL3( LOG_METHOD_AUTO );
-    LOG_FORMAT( "CRadioEngineImp::MrpoMuteChange muted: %d", aMute );
-
-//    TBool muted = iSettings->EngineSettings().IsVolMuted();
-//    if ( !aMute != !muted )
-//        {
-//        iSettings->RadioSetter().SetVolMuted( aMute );
-//        NotifyRadioEvent( ERadioEventMute );
-//        }
     }
 
 // ---------------------------------------------------------------------------
--- a/radiohswidget/inc/radiohswidget.h	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/inc/radiohswidget.h	Fri Sep 03 12:25:04 2010 +0300
@@ -234,6 +234,8 @@
 
     /*! Stores the count of favorite stations. */
     int mFavoriteStationCount;
+    /*! Stores the count of local stations. */
+    int mLocalStationCount;
     /*! Stores the value whether the current station is favorite or not. */
     bool mCurrentStationIsFavorite;
 
--- a/radiohswidget/locales/compile_ts.bat	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/locales/compile_ts.bat	Fri Sep 03 12:25:04 2010 +0300
@@ -16,11 +16,11 @@
 
 @echo off
 
-set QM_FILE=fmradiohswidget.qm
-set QM_FILE_EN_US=fmradiohswidget_en_us.qm
+set QM_FILE=radiohswidget.qm
+set QM_FILE_EN_US=radiohswidget_en_us.qm
 set QM_LOCATION=./
 
 
 ECHO Creating QM file
-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%
+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%
Binary file radiohswidget/locales/fmradiohswidget.qm has changed
--- a/radiohswidget/locales/fmradiohswidget.ts	Mon Aug 23 14:17:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,534 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="txt_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_list_quick_access_for_fm_radio_in_your">
-    <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></extra-loc-layout_id>    
-    <extra-loc-viewid>radiohswidgetplugin</extra-loc-viewid>
-    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
-    <extra-loc-feature>lo</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_fmradiohswidget_list_fm_radio_homescreen_widget">
-    <source>FM Radio homescreen widget</source>
-    <translation variants="no">FM Radio homescreen widget</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>radiohswidgetplugin</extra-loc-viewid>
-    <extra-loc-positionid>dblist_1</extra-loc-positionid>
-    <extra-loc-feature>lo</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file radiohswidget/locales/radiohswidget.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/locales/radiohswidget.ts	Fri Sep 03 12:25:04 2010 +0300
@@ -0,0 +1,534 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_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_fmradiohswidget_list_quick_access_for_fm_radio_in_your">
+    <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></extra-loc-layout_id>    
+    <extra-loc-viewid>radiohswidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_fmradiohswidget_list_fm_radio_homescreen_widget">
+    <source>FM Radio homescreen widget</source>
+    <translation variants="no">FM Radio homescreen widget</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>radiohswidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
--- a/radiohswidget/radiohswidget_exports_to_rom.pri	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/radiohswidget_exports_to_rom.pri	Fri Sep 03 12:25:04 2010 +0300
@@ -22,8 +22,8 @@
 "rom/fmradiohswidget.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidget.iby)"
 
 #iby exports to language
-#BLD_INF_RULES.prj_exports += \
-#"rom/fmradiohswidget_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidget_resources.iby)"
+BLD_INF_RULES.prj_exports += \
+"rom/fmradiohswidget_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidget_resources.iby)"
 
 BLD_INF_RULES.prj_extensions += \
 $$LITERAL_HASH"ifdef MARM" \
--- a/radiohswidget/resource/fmradiohswidget.manifest	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/resource/fmradiohswidget.manifest	Fri Sep 03 12:25:04 2010 +0300
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <hswidgetmanifest>
     <uri>fmradiohswidget</uri>
+    <translationfile>radiohswidget</translationfile>
     <title>txt_fmradiohswidget_list_fm_radio_homescreen_widget</title>
     <description>txt_fmradiohswidget_list_quick_access_for_fm_radio_in_your</description>
     <icon>qtg_large_radio</icon>
--- a/radiohswidget/rom/fmradiohswidget.iby	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/rom/fmradiohswidget.iby	Fri Sep 03 12:25:04 2010 +0300
@@ -21,11 +21,13 @@
 // Use standard macros
 #include <data_caging_paths_for_iby.hrh>
 
-file=ABI_DIR\BUILD_DIR\fmradiohswidget.dll                                          SHARED_LIB_DIR\fmradiohswidget.dll
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin      private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml           private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest      private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest
+file=ABI_DIR\BUILD_DIR\fmradiohswidget.dll                                                      SHARED_LIB_DIR\fmradiohswidget.dll
+file=ABI_DIR\BUILD_DIR\fmradiowidgetsplugin.dll                     				SHARED_LIB_DIR\fmradiowidgetsplugin.dll       PAGED
+data=\epoc32\data\z\private\20022F35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin    resource\plugins\fmradiowidgetsplugin.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin                  private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml                       private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest                  private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest
 
-data=\epoc32\data\z\system\install\fmradiohswidget_stub.sis                         system\install\fmradiohswidget_stub.sis
+data=\epoc32\data\z\system\install\fmradiohswidget_stub.sis                                     system\install\fmradiohswidget_stub.sis
 
 #endif //__RADIOHSWIDGET_IBY__
--- a/radiohswidget/rom/fmradiohswidget_resources.iby	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/rom/fmradiohswidget_resources.iby	Fri Sep 03 12:25:04 2010 +0300
@@ -23,8 +23,6 @@
 // Use standard macros
 #include <data_caging_paths_for_iby.hrh>
 
-#S60_APP_RESOURCE(fmradiohswidget)
-
-#data=DATAZ_\QT_TRANSLATIONS_DIR\fmradiohswidget.qm  QT_TRANSLATIONS_DIR\fmradiohswidget.qm
+data=DATAZ_\QT_TRANSLATIONS_DIR\radiohswidget.qm  QT_TRANSLATIONS_DIR\radiohswidget.qm
 
 #endif // RADIOHSWIDGET_RESOURCES_IBY
--- a/radiohswidget/src/radiohswidget.cpp	Mon Aug 23 14:17:50 2010 +0300
+++ b/radiohswidget/src/radiohswidget.cpp	Fri Sep 03 12:25:04 2010 +0300
@@ -74,9 +74,9 @@
 const QString DOCML_OBJECT_NAME_ANIMATION_ICON("animationIcon");
 
 /** Unknown favorite station count. */
-const int FAVORITE_STATION_COUNT_UNDEFINED(-1);
-/** One favorite station set. */
-const int FAVORITE_STATION_COUNT_ONE(1);
+const int FAVORITE_STATION_COUNT_UNDEFINED(0);
+/** Unknown local station count. */
+const int LOCAL_STATION_COUNT_UNDEFINED(0);
 /** Favorite station count lower boundary including this number. */
 const int FAVORITE_STATION_COUNT_LOWER_BOUNDARY(0);
 /** Favorite station count upper boundary including this number. */
@@ -143,6 +143,7 @@
       mAnimationIcon(NULL),
       mFmRadioState(FmRadio::StateUndefined),
       mFavoriteStationCount(FAVORITE_STATION_COUNT_UNDEFINED),
+      mLocalStationCount(LOCAL_STATION_COUNT_UNDEFINED),
       mCurrentStationIsFavorite(false),
       mProfileMonitor(NULL),
       mRadioServiceClient(NULL)
@@ -176,17 +177,23 @@
             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
+            LOG_FORMAT("mFavoriteStationCount: %d", mFavoriteStationCount);
+            enableStationButtons();
+        }
+        break;
+
+    case RadioServiceNotification::LocalCount:
+        LOG("LocalCount");
+        if (information.canConvert(QVariant::Int) &&
+            information.toInt() >= FAVORITE_STATION_COUNT_LOWER_BOUNDARY &&
+            information.toInt() <= FAVORITE_STATION_COUNT_UPPER_BOUNDARY) {
+            mLocalStationCount = information.toInt();
+            // If there are local stations, enable the next/previous
             // buttons.
-            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;
+            LOG_FORMAT("mLocalStationCount: %d", mLocalStationCount);
+            // Enable or disable buttons only if localCount differs
+            // from 1.
+            enableStationButtons();
         }
         break;
 
@@ -195,10 +202,6 @@
         if (information.canConvert(QVariant::Bool)) {
             mCurrentStationIsFavorite = information.toBool();
             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.
-            enableStationButtons();
         }
         break;
 
@@ -316,6 +319,7 @@
         mRadioServiceClient->stopMonitoring();
         changePowerButtonOn(false);
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mLocalStationCount = LOCAL_STATION_COUNT_UNDEFINED;
         mCurrentStationIsFavorite = false;
         enableStationButtons();
         clearRadioInformation();
@@ -329,6 +333,7 @@
         mFmRadioState = FmRadio::StateStarting;
         changePowerButtonOn(true);
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mLocalStationCount = LOCAL_STATION_COUNT_UNDEFINED;
         mCurrentStationIsFavorite = false;
         enableStationButtons();
         changeInformationAreaLayout(Animation);
@@ -367,6 +372,7 @@
         mFmRadioState = FmRadio::StateClosing;
         changePowerButtonOn(false);
         mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mLocalStationCount = LOCAL_STATION_COUNT_UNDEFINED;
         mCurrentStationIsFavorite = false;
         enableStationButtons();
         clearRadioInformation();
@@ -478,7 +484,12 @@
 {
     LOG_SLOT_CALLER;
     clearRadioInformation();
-    mRadioServiceClient->commandFmRadio(RadioServiceCommand::Previous);
+    if (mFavoriteStationCount > 1) {
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::PreviousFavorite);
+    }
+    else {
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::Previous);
+    }
 }
 
 /*!
@@ -488,7 +499,12 @@
 {
     LOG_SLOT_CALLER;
     clearRadioInformation();
-    mRadioServiceClient->commandFmRadio(RadioServiceCommand::Next);
+    if (mFavoriteStationCount > 1) {
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::NextFavorite);
+    }
+    else {
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::Next);
+    }
 
 }
 
@@ -908,18 +924,16 @@
 void RadioHsWidget::enableStationButtons()
 {
     LEVEL2(LOG_METHOD_ENTER);
-    LOG_FORMAT("RadioHsWidget::enableStationButtons count: %d", mFavoriteStationCount);
+    LOG_FORMAT("RadioHsWidget::enableStationButtons count: %d", mLocalStationCount);
     if (mFmRadioState == FmRadio::StateAntennaNotConnected){
         changeButtonToDisabled(Next);
         changeButtonToDisabled(Previous);
     }
-    else if ((mFavoriteStationCount > 1) || (mFavoriteStationCount == 1
-        && !mCurrentStationIsFavorite)) {
+    else if (mLocalStationCount + mFavoriteStationCount > 1) {
         changeButtonToEnabled(Next);
         changeButtonToEnabled(Previous);
     }
-    else if ((mFavoriteStationCount == 1 && mCurrentStationIsFavorite)
-        || (mFavoriteStationCount < 1)) {
+    else {
         changeButtonToDisabled(Next);
         changeButtonToDisabled(Previous);
     }
--- a/rom/fmradio.iby	Mon Aug 23 14:17:50 2010 +0300
+++ b/rom/fmradio.iby	Fri Sep 03 12:25:04 2010 +0300
@@ -31,8 +31,6 @@
 file=ABI_DIR\BUILD_DIR\fmradiopresetstorage.dll                     SHARED_LIB_DIR\fmradiopresetstorage.dll       PAGED
 file=ABI_DIR\BUILD_DIR\fmradiouiengine.dll                          SHARED_LIB_DIR\fmradiouiengine.dll            PAGED
 file=ABI_DIR\BUILD_DIR\fmradiowidgets.dll                           SHARED_LIB_DIR\fmradiowidgets.dll             PAGED
-file=ABI_DIR\BUILD_DIR\fmradiowidgetsplugin.dll                     SHARED_LIB_DIR\fmradiowidgetsplugin.dll       PAGED
-data=\epoc32\data\z\resource\plugins\fmradiowidgetsplugin.qtplugin  resource\plugins\fmradiowidgetsplugin.qtplugin
 
 file=ABI_DIR\BUILD_DIR\fmradioengine.dll                            SHARED_LIB_DIR\fmradioengine.dll              PAGED
 file=ABI_DIR\BUILD_DIR\fmradioengineutils.dll                       SHARED_LIB_DIR\fmradioengineutils.dll         PAGED